2 ListTest
:= UnitTest
clone do(
5 self exampleList
:= List clone append("a", "beta", 3)
8 assertNotSame(List, List clone)
9 clonedList
:= exampleList
clone
10 assertNotSame(clonedList
, exampleList
)
11 assertEquals(3, clonedList size
)
12 assertEquals(exampleList
at(0), clonedList
at(0))
13 assertEquals(exampleList
at(2), clonedList
at(2))
16 assertRaisesException(a append
)
17 a
:= List clone append("a", "beta", 3)
20 a
append("blah", "fasel")
21 assertEquals("fasel", a
at(6))
22 assertEquals(88, a
at(4))
25 testAppendIfAbsent
:= method(
26 a
:= List clone append("a", "beta", 3)
31 assertEquals(4, a size
)
33 a
appendIfAbsent("blah", "blah", 3, "new1", "blah", "new2")
34 assertEquals(7, a size
)
35 assertEquals("blah", a
at(4))
36 assertEquals("new1", a
at(5))
37 assertEquals("new2", a
at(6))
39 testAppendSeq
:= method(
40 a
:= List clone append("a", "beta", 3)
41 assertRaisesException(a
appendSeq(nil
))
42 assertRaisesException(a
appendSeq(a
))
43 a
appendSeq(List clone)
44 a
appendSeq(List clone append("blah", "fasel"))
45 assertEquals(5, a size
)
46 assertEquals("blah", a
at(3))
47 assertEquals("fasel", a
at(4))
50 a
:= List clone append("a", "beta", 3)
51 assertRaisesException(a remove
)
54 assertEquals(4, a size
)
56 assertEquals(3, a size
)
57 assertEquals("a", a
at(0))
58 assertEquals("beta", a
at(1))
59 assertEquals(7, a
at(2))
61 testIndexOf
:= method(
62 a
:= List clone append("a", "beta", 3)
63 assertRaisesException(a indexOf
)
64 assertNil(a
indexOf(nil
))
66 assertEquals(0, a
indexOf("a"))
68 assertEquals(2, a
indexOf("a"))
70 testContains
:= method(
71 a
:= List clone append("a", "beta", 3)
72 assertFalse(a contains
)
73 assertFalse(a
contains(nil
))
74 assertFalse(a
contains(333))
75 assertTrue(a
contains("beta"))
78 a
:= List clone append("a", "beta", 3)
79 assertRaisesException(a push
)
82 a
push("blah", "fasel")
83 assertEquals("fasel", a
at(6))
84 assertEquals(88, a
at(4))
88 a
:= List clone append("a", "beta", 3)
89 assertEquals(3, a pop
)
90 assertEquals(2, a size
)
91 assertEquals("beta", a pop
)
92 assertEquals(1, a size
)
93 assertEquals("a", a pop
)
94 assertEquals(0, a size
)
98 a
:= List clone append("a", "beta", 3)
100 assertEquals(0, a size
)
103 a
:= List clone append("a", "beta", 3)
104 assertEquals(0, List size
)
105 assertEquals(3, a size
)
107 assertEquals(4, a size
)
109 testAtInsert
:= method(
110 a
:= List clone append("a", "beta", 3)
111 assertRaisesException(a
atInsert())
112 assertRaisesException(a
atInsert(nil
))
113 assertRaisesException(a
atInsert(nil
, "two"))
114 assertRaisesException(a
atInsert(-1, "two"))
115 assertRaisesException(a
atInsert(4, "two"))
117 a
atInsert(0, "zero")
118 assertEquals(4, a size
)
119 assertEquals(0, a
indexOf("zero"))
122 assertEquals(5, a size
)
123 assertEquals(1, a
indexOf("one"))
125 a
atInsert(5, "append")
126 assertEquals(6, a size
)
127 assertEquals(5, a
indexOf("append"))
129 testRemoveAt
:= method(
130 a
:= List clone append("a", "beta", 3)
131 assertRaisesException(a
removeAt())
132 assertRaisesException(a
removeAt(nil
))
133 assertRaisesException(a
removeAt(-1))
134 assertRaisesException(a
removeAt(3))
137 assertEquals(2, a size
)
138 assertEquals("beta", a
at(0))
139 assertEquals(3, a
at(1))
142 assertEquals(1, a size
)
143 assertEquals("beta", a
at(0))
146 a
:= List clone append("a", "beta", 3)
147 assertRaisesException(a
at())
148 assertRaisesException(a
at(nil
))
151 assertEquals("a", a
at(0))
152 assertEquals("beta", a
at(1))
153 assertEquals(3, a
at(2))
156 a
:= List clone append("a", "beta", 3)
157 assertRaisesException(a
atPut())
158 assertRaisesException(a
atPut(nil
))
159 assertRaisesException(a
atPut(nil
, "two"))
160 assertRaisesException(a
atPut(-1, "two"))
161 assertRaisesException(a
atPut(3, "two"))
164 assertEquals(3, a size
)
165 assertEquals(0, a
indexOf("zero"))
168 assertEquals(3, a size
)
169 assertEquals(2, a
indexOf("two"))
171 testSwapIndices
:= method(
172 a
:= List clone append("a", "beta", 3)
173 assertRaisesException(a
swapIndices())
174 assertRaisesException(a
swapIndices(nil
))
175 assertRaisesException(a
swapIndices(nil
, nil
))
176 assertRaisesException(a
swapIndices(1, nil
))
177 assertRaisesException(a
swapIndices(nil
, 1))
178 assertRaisesException(a
swapIndices(0, 3))
179 assertRaisesException(a
swapIndices(-1, 2))
183 assertEquals("a", a
at(2))
184 assertEquals("beta", a
at(1))
185 assertEquals(3, a
at(0))
187 testpreallocateToSize
:= method(
188 a
:= List clone append("a", "beta", 3)
189 assertRaisesException(a preallocateToSize
)
190 assertRaisesException(a
preallocateToSize(nil
))
191 a
preallocateToSize(1)
192 assertEquals(3, a size
)
193 a
preallocateToSize(10)
194 assertEquals(3, a size
)
197 a
:= List clone append("a", "beta", 3)
198 assertNil(List first
)
199 assertEquals("a", a first
)
202 a
:= List clone append("a", "beta", 3)
204 assertEquals(3, a last
)
206 _testPrint
:= method(
207 // would need to be able to read stdout
or install a printCallback from Io to test
print()
210 testSelect
:= method(
211 a
:= List clone append("a", "beta", 3)
212 assertRaisesException(a select
)
213 selection
:= a
select(index
, value
, index
== 0 or value
== 3)
214 assertEquals(2, selection size
)
215 assertEquals("a", selection
at(0))
216 assertEquals(3, selection
at(1))
218 selection
:= a
select(index
, value
, index
== -1)
219 assertEquals(0, selection size
)
222 testSelect2
:= method(
223 a
:= List clone append("a", "beta", 3)
224 assertRaisesException(a select
)
225 selection
:= a
select(value
, value
== "a" or value
== 3)
226 assertEquals(2, selection size
)
227 assertEquals("a", selection
at(0))
228 assertEquals(3, selection
at(1))
230 selection
:= a
select(index
, value
, index
== -1)
231 assertEquals(0, selection size
)
234 testSelectInPlace
:= method(
235 a
:= List clone append("a", "beta", 3)
236 assertRaisesException(a selectInPlace
)
237 a
selectInPlace(index
, value
, index
== 0 or value
== 3)
238 assertEquals(2, a size
)
239 assertEquals("a", a
at(0))
240 assertEquals(3, a
at(1))
242 a
selectInPlace(index
, value
, index
== -1)
243 assertEquals(0, a size
)
246 testSelectInPlace2
:= method(
247 a
:= List clone append("a", "beta", 3)
248 a
selectInPlace(index
, value
, value
== "a" or value
== 3)
249 assertEquals(2, a size
)
250 assertEquals("a", a
at(0))
251 assertEquals(3, a
at(1))
253 a
selectInPlace(index
, value
, index
== -1)
254 assertEquals(0, a size
)
256 testDetect
:= method(
257 a
:= List clone append("a", "beta", 3)
258 assertRaisesException(a detect
)
259 assertRaisesException(a
detect(nil
))
260 a
detect(index
, value
, index
== 0 or value
== 3)
261 assertEquals("a", a
detect(index
, value
, index
== 0 or value
== 3))
262 assertEquals(3, a
detect(index
, value
, value
type == "Number" and value
> 1))
263 assertNil(a
detect(index
, value
, value
> 3))
265 testDetect
:= method(
266 a
:= List clone append("a", "beta", 3)
267 assertRaisesException(a detect
)
268 a
detect(index
, value
, value
= "a" or value
== 3)
269 assertEquals("a", a
detect(index
, value
, index
== 0 or value
== 3))
270 assertEquals(3, a
detect(index
, value
, value
type == "Number" and value
> 1))
271 assertNil(a
detect(index
, value
, value
type == "Number" and value
> 3))
274 a
:= List clone append("a", "beta", "3")
275 List clone sortInPlace
277 assertEquals("3", a
at(0))
278 assertEquals("a", a
at(1))
279 assertEquals("beta", a
at(2))
281 a
append("0") sortInPlace
282 assertEquals("0", a
at(0))
283 assertEquals("3", a
at(1))
284 assertEquals("a", a
at(2))
285 assertEquals("beta", a
at(3))
288 testSortBy
:= method(
289 a
:= List clone append("beta", "3", "alpha")
290 assertRaisesException(a sortInPlaceBy
)
291 assertRaisesException(a
sortInPlaceBy(nil
))
292 a
sortInPlaceBy(block(v1
, v2
, v1
< v2
))
293 assertEquals("3", a
at(0))
294 assertEquals("alpha", a
at(1))
295 assertEquals("beta", a
at(2))
298 testEmptyListSortBy
:= method(
299 assertEquals(list sortInPlaceBy(block(x
, y
, x
< y
)), list)
302 testSortBySingleItem
:= method(
303 assertEquals(list(3) sortInPlaceBy(block(x
, y
, x
< y
)), list(3))
306 testSortByTwoItems
:= method(
307 assertEquals(list(3,1) sortInPlaceBy(block(x
, y
, x
< y
)), list(1,3))
310 testForeach
:= method(
311 a
:= List clone append("a", "beta", 3)
312 assertRaisesException(a
foreach)
314 assertEquals("abeta3", a
foreach(index
, value
, string
:= string
.. value asString
))
317 assertEquals("abeta3", a
foreach(value
, string
:= string
.. value asString
))
320 assertEquals(0+1+2, a
foreach(index
, value
, number
:= number
+ index
))
323 testReverse
:= method(
324 a
:= List clone append("a", "beta", 3)
326 assertEquals(3, a
at(0))
327 assertEquals("beta", a
at(1))
328 assertEquals("a", a
at(2))
330 testReverseForeach
:= method(
331 a
:= List clone append("a", "beta", 3)
332 assertRaisesException(a reverseForeach
)
333 assertRaisesException(a
reverseForeach(nil
))
335 assertEquals("3betaa", a
reverseForeach(index
, value
, string
:= string
.. value asString
))
338 assertEquals("3betaa", a
reverseForeach(value
, string
:= string
.. value asString
))
341 assertEquals(0+1+2, a
reverseForeach(index
, value
, number
:= number
+ index
))
345 a
:= List clone append("a", "beta", 3)
346 assertRaisesException(a map
)
347 a
mapInPlace(index
, value
, value asString
.. index asString
)
348 assertEquals(3, a size
)
349 assertEquals("a0", a
at(0))
350 assertEquals("beta1", a
at(1))
351 assertEquals("32", a
at(2))
355 a
:= List clone append("a", "beta", 3)
356 a
mapInPlace(value
, value asString
)
357 assertEquals(3, a size
)
358 assertEquals("a", a
at(0))
359 assertEquals("beta", a
at(1))
360 assertEquals("3", a
at(2))
364 a
:= List clone append("a", "beta", 3)
365 assertRaisesException(a map
)
366 assertRaisesException(a mapInPlace
)
367 a
mapInPlace(index
, value
, value asString
.. index asString
)
368 assertEquals(3, a size
)
369 assertEquals("a0", a
at(0))
370 assertEquals("beta1", a
at(1))
371 assertEquals("32", a
at(2))
375 a
:= List clone append("a", "beta", 3)
376 a
mapInPlace(value
, value asString
)
377 assertEquals(3, a size
)
378 assertEquals("a", a
at(0))
379 assertEquals("beta", a
at(1))
380 assertEquals("3", a
at(2))