####################
# Test the -V flag

####################
# Testing -V
$foo: set in local scope, unexported, with 1 elements
$foo[1]: length=9 value=|local foo|
$foo: set in global scope, unexported, with 1 elements
$foo[1]: length=10 value=|global foo|
$foo: not set in universal scope

$bar: set in local scope, unexported, with 5 elements
$bar[1]: length=3 value=|one|
$bar[2]: length=8 value=|two    2|
$bar[3]: length=1 value=|\t|
$bar[4]: length=0 value=||
$bar[5]: length=1 value=|3|
$bar: set in global scope, unexported, with 5 elements
$bar[1]: length=3 value=|one|
$bar[2]: length=8 value=|two    2|
$bar[3]: length=1 value=|\t|
$bar[4]: length=0 value=||
$bar[5]: length=1 value=|3|
$bar: not set in universal scope

$baz: set in local scope, unexported, with 0 elements
$baz: set in global scope, unexported, with 0 elements
$baz: not set in universal scope


####################
# Testing -V with changed variables
$foo: set in local scope, unexported, with 1 elements
$foo[1]: length=9 value=|local foo|
$foo: set in global scope, unexported, with 1 elements
$foo[1]: length=10 value=|global foo|
$foo: not set in universal scope

$bar: set in local scope, unexported, with 5 elements
$bar[1]: length=3 value=|one|
$bar[2]: length=8 value=|two    2|
$bar[3]: length=1 value=|\t|
$bar[4]: length=0 value=||
$bar[5]: length=1 value=|3|
$bar: set in global scope, unexported, with 1 elements
$bar[1]: length=7 value=|bad bar|
$bar: not set in universal scope

$baz: set in local scope, unexported, with 0 elements
$baz: set in global scope, unexported, with 1 elements
$baz[1]: length=7 value=|bad baz|
$baz: not set in universal scope

Function name1 found
Function name2 not found as expected
Function name3 found
Function name4 not found as expected

####################
# Verify that functions can be copied. Tests against regression of issue #3601

####################
# Checking that the copied functions are identical other than the name
function name1 --argument arg1 arg2
function name1a --argument arg1 arg2
1 = 1a
function name3 --argument arg1 arg2
function name3a --argument arg1 arg2
3 = 3a

####################
# Checking reserved names

####################
# Checking `functions -q` without arguments
False