3 # Copyright (C) 2004-2008, The Perl Foundation.
6 # the following lines re-execute this as a tcl script
7 # the \ at the end of these lines makes them a comment in tcl \
8 use lib qw(languages/tcl/lib tcl/lib lib ../lib ../../lib); # \
12 source lib/test_more.tcl
16 {wrong # args: should be "array option arrayName ?arg ...?"}\
19 eval_is {array exists}\
20 {wrong # args: should be "array option arrayName ?arg ...?"}\
21 {array, good subcommand, no array}
23 eval_is {array bork foo}\
24 {bad option "bork": must be anymore, donesearch, exists, get, names, nextelement, set, size, startsearch, statistics, or unset}\
25 {array, bad subcommand, bad arary}
30 } 1 {array exists yes}
37 eval_is {array exists q} 0 {array exists missing}
39 eval_is {array exists a b}\
40 {wrong # args: should be "array exists arrayName"}\
41 {array exists too many args}
45 array set foo [list 1 2 3 4]
46 return [array exists foo]
49 } 1 {array exists lexical}
51 eval_is {array size a b}\
52 {wrong # args: should be "array size arrayName"}\
53 {array size too many args}
63 set a(1) 1; set a(2) 2
75 array set a [list a b]
81 array set a [list a b c d e f]
82 list $a(a) $a(c) $a(e)
83 } {b d f} {array set multi list}
88 array set a [list c d e f]
89 list $a(a) $a(c) $a(e)
90 } {b d f} {array set preserve old values}
100 array set a {a b c d e f}
101 list $a(a) $a(c) $a(e)
102 } {b d f} {array set multi}
104 eval_is {array set a a}\
105 {list must have an even number of elements}\
108 eval_is {array set a [list a b]} \
110 {array set return value}
115 array set a {1 2 3 4}
116 } {can't set "a(1)": variable isn't array}\
117 {array set not array}
123 } {} {array set with empty list}
127 array set a [list a b]
133 array set a [list a {b c}]
135 } {a {b c}} {array get, insure list results}
139 array set a [list a b c d]
141 } {a b} {array get with pattern}
145 array set a [list apple 1 orange 2 aardvark 3]
146 lsort [array get a a*]
147 } {1 3 aardvark apple}\
148 {array get, with pattern}
152 array set a [list apple 1 orange 2 aardvark 3]
154 } {} {array get, with bad pattern}
159 } {} {array get, no array}
165 } {} {array get, non array}
170 } {} {array get, bad array with pattern}
172 eval_is {array get a b c}\
173 {wrong # args: should be "array get arrayName ?pattern?"}\
174 {array get, too many args}
178 array set a [list a b]
179 list [array unset a] [array get a]
180 } {{} {}} {array unset, effect & return value}
184 array set a [list a b c d]
185 list [array unset a a] [array get a]
186 } {{} {c d}} {array unset, with pattern & return value}
190 array set a [list apple 1 orange 2 aardvark 3]
191 list [array unset a a*] [array get a]
192 } {{} {orange 2}} {array unset with pattern}
196 array set a [list apple 1 orange 2 aardvark 3]
197 list [array unset a zippy*] [lsort [array get a]]
198 } {{} {1 2 3 aardvark apple orange}}\
199 {array unset, with bad pattern}
204 } {} {array unset, bad array}
208 array unset a monkey*
209 } {} {array unset, bad array, pattern}
212 array unset monkey my monkey monkey
213 } {wrong # args: should be "array unset arrayName ?pattern?"}\
214 {array unset, too many args}
219 } {} {array names, no array}
223 array set a [list {b c} a]
225 } {{b c}} {array names, insure list results}
227 eval_is {array names a b c} \
228 {bad option "b": must be -exact, -glob, or -regexp} \
229 {array names, bad option}
231 eval_is {array names a b c d}\
232 {wrong # args: should be "array names arrayName ?mode? ?pattern?"}\
233 {array names, too many args}
239 } {monkey} {array names, no pattern}
245 array names a monkey*
247 {array names, default glob pattern}
254 } {} {array names, default glob pattern failure}
260 array names a -glob monkey*
261 } {monkey1 monkey2} {array names, explicit glob pattern}
267 array names a -glob cat*
268 } {} {array names, explicit glob pattern failure}
274 array names a -exact monkey1
275 } {monkey1} {array names, explicit exact match}
281 array names a -exact cat5
282 } {} {array names, explicit exact match failure}
289 array names a -regexp ^mon.*
290 } {monkey1 monkey2} {array names, explicit regexp match}
296 array names a -regexp cat
297 } {} {array names, explicit regexp match failure}