1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-12-29 16:25:35 +01:00
zsh/Test/K02parameter.ztst

154 lines
3.2 KiB
Text

# Test parameter expansion with namespace syntax
# (heavily borrowed from D04parameter.ztst)
%prep
%test
.k02.foo='the first parameter'
.k02.bar='the second parameter'
print -l $.k02.foo ${.k02.bar}
0:Basic scalars with namespace
F:Braces are required
>$.k02.foo
>the second parameter
typeset .k02.bar='the second parameter'
print -l ${.k02.bar}
0:Scalar but with typeset
>the second parameter
.k02.array1=(the first array)
.k02.array2=(the second array)
print -l $.k02.array1 ${.k02.array2}
0:Basic arrays with namespace
>$.k02.array1
>the
>second
>array
typeset -a .k02.array2=(the second array)
print -l ${.k02.array2}
0:Array but with typeset
>the
>second
>array
setopt ksharrays
print -l ${.k02.array2}
unsetopt ksharrays
0:Basic ksharray with namespace
>the
setopt shwordsplit
print -l ${.k02.foo} ${==.k02.bar}
unsetopt shwordsplit
0:Basic shwordsplit with namespace
>the
>first
>parameter
>the second parameter
print ${+.k02.foo} ${+.k02.notappearinginthistest}
0:$+... and namespace
>1 0
.k02.x=()
print ${+.k02.x} ${+.k02.x[1]} ${+.k02.x[(r)foo]} ${+.k02.x[(r)bar]}
.k02.x=(foo)
print ${+.k02.x} ${+.k02.x[1]} ${+.k02.x[(r)foo]} ${+.k02.x[(r)bar]}
0:$+... with arrays and namespace
>1 0 0 0
>1 1 1 0
# See D04 for complete explanation.
# For K02 we're just testing that flag syntax works.
.k02.foo='<five> {six} (seven) >eight< }nine{ |forty-two| $many$ )ten( more'
.k02.array=(${(z).k02.foo})
print -l ${(Q).k02.array}
0:${(z)...} and ${(Q)...} for some hard to parse cases
><
>five
>>
>{six}
>(
>seven
>)
>>
>eight
><
>}nine{
>|
>forty-two
>|
>$many$
>)
>ten( more
.k02.array=(characters in an array)
print ${(c)#.k02.array}
0:${(c)#...}
>22
() {
typeset -n .k02.ref=.k02.array
emulate -L ksh
print -l ${!.k02.ref} ${(!).k02.ref} ${.k02.ref}
}
0:namerefs with namespaces
>.k02.array
>.k02.array
>characters
k.=empty
k.2=test
print ${k.} ${k.2}
0:Parse without leading dot (future proofing)
>empty test
.k=OK
print ${.k}
0:Bare namespace is usable (ksh compatibility)
>OK
.k.=empty
1:Namespace must precede an identifier, assignment
?(eval):1: not an identifier: .k.
typeset .k.=empty
1:Namespace must precede an identifier, typeset
?(eval):typeset:1: not valid in this context: .k.
print ${.k.}
1:Namespace must precede an identifier, reference
?(eval):1: bad substitution
.2.b=not
1:Namespace identifier must not begin with a digit, assignment
?(eval):1: not an identifier: .2.b
typeset .2.b=not
1:Namespace identifier must not begin with a digit, typeset
?(eval):typeset:1: not valid in this context: .2.b
print ${.2.b}
1:Namespace identifier must not begin with a digit, reference
?(eval):1: bad substitution
.not.2b=question
1:Identifier starting with a digit must be all digits, assignment
?(eval):1: not an identifier: .not.2b
typeset .not.2b=question
1:Identifier starting with a digit must be all digits, typeset
?(eval):typeset:1: not valid in this context: .not.2b
print ${.not.2b}
1:Identifier starting with a digit must be all digits, reference
?(eval):1: bad substitution
integer .var.d=0
float .var.f=.2
print $((.var.x = ++.var.d - -.var.f))
0:Namespaces in math context
>1.2