fix codetest failure - assert args
[parrot.git] / t / library / iter.t
blobf6bfa445da2daeab6afeb837a8b1958f0db5fbbc
1 #!./parrot
2 # Copyright (C) 2006-2008, Parrot Foundation.
3 # $Id$
5 .const int TESTS = 47
7 .sub 'main' :main
8     $P0 = new 'Env'
9     $P0 = $P0['TEST_VERBOSE']
10     unless null $P0 goto set_verbose
11     $P0 = new 'Integer'
12     $P0 = 0
13   set_verbose:
14     set_global 'TEST_VERBOSE', $P0
16   import:
17     .include 'test_more.pir'
19     'plan'( TESTS )
21     'load'()
22     'object_init'()
23     'FixedPMCArray_empty'()
24     'FixedPMCArray_3elem'()
25     'ResizablePMCArray_empty'()
26     'ResizablePMCArray_3elem'()
27 .end
30 # test library loading
31 .sub 'load'
33   T1:
34     push_eh err_load_bytecode
35     $S0 = 'Iter.pbc'
36     load_bytecode $S0
37     pop_eh
38     $S1 = 'loaded '
39     $S1 .= $S0
40     'ok'(1, $S1)
41     goto end
42   err_load_bytecode:
43     $S1 = "cannot load "
44     $S1 .= $S0
45     'ok'(0, $S1)
46     end
47   end:
48 .end
51 # test object initialization
52 .sub 'object_init'
54   T1:
55     $P99 = new 'FixedPMCArray'
56     $P99 = 0
58     .local pmc iter
59                iter = new 'Iter'
61     $I0 = 0
62     if null iter goto test_iter_new
63     $I0 = 1
64   test_iter_new:
65     'ok'($I0, 'created Iter')
67   T2:
68     push_eh err_start_noargs
69     iter.'start'()
70     pop_eh
71     'ok'(0, 'start requires an aggregate')
72     goto T3
73   err_start_noargs:
74     ok(1, 'start requires an aggregate')
76   T3:
77     iter.'start'($P99)
78     'ok'(1, ".'start'() runs without exception")
80   T4:
81     iter.'start'($P99)
82     'ok'(1, ".'start'() runs again without exception")
83 .end
86 # test empty FixedPMCArray
87 .sub 'FixedPMCArray_empty'
89   T1:
90     $P99 = new 'FixedPMCArray'
91     $P99 = 0
93     .local pmc iter
94                iter = new 'Iter'
96     iter.'start'($P99)
98     .local int is_exhausted
99     .local int index
100                index = 0
101     .local pmc value
103     is_exhausted = iter.'exhausted'()
104     'is'(is_exhausted, 0, ".'exhausted'() returns false")
106   T2:
107     value = iter.'value'()
108     $I0 = isnull value
109     'ok'($I0, ".'value'() returns PMCNULL")
111   T3:  # index = 0
112     iter.'next'()
113     'ok'(1, ".'next'() runs without exception")
115   T4:
116     is_exhausted = iter.'exhausted'()
117     'is'(is_exhausted, 1, ".'exhausted'() returns true")
119   T5:
120     value = iter.'value'()
121     $I0 = isnull value
122     'ok'($I0, ".'value'() returns PMCNULL")
124   T6:
125     iter.'next'()
126     'ok'(1, ".'next'() runs without exception after iter exhaustion")
127 .end
130 # test FixedPMCArray with three elements
131 .sub 'FixedPMCArray_3elem'
133   T1:
134     $P99 = new 'FixedPMCArray'
135     $P99 = 3
136     $P99[0] = 'a'
137     $P99[1] = 'b'
138     $P99[2] = 'c'
140     .local pmc iter
141                iter = new 'Iter'
143     iter.'start'($P99)
145     .local int is_exhausted
146     .local int index
147                index = 0
148     .local pmc value
150     is_exhausted = iter.'exhausted'()
151     'is'(is_exhausted, 0, ".'exhausted'() returns false")
153   T2:
154     value = iter.'value'()
155     $I0 = isnull value
156     'ok'($I0, ".'value'() returns PMCNULL")
158   T3:  # index = 0
159     iter.'next'()
160     'ok'(1, ".'next'() runs without exception")
162   T4:
163     is_exhausted = iter.'exhausted'()
164     'is'(is_exhausted, 0, ".'exhausted'() returns false")
166   T5:
167     value = iter.'value'()
168     $P0 = $P99[index]
169     'is'(value, $P0, ".'next'() and .'value'()")
171     inc index
173   T6:  # index = 1
174     iter.'next'()
175     'ok'(1, ".'next'() runs without exception")
177   T7:
178     is_exhausted = iter.'exhausted'()
179     'is'(is_exhausted, 0, ".'exhausted'() returns false")
181   T8:
182     value = iter.'value'()
183     $P0 = $P99[index]
184     'is'(value, $P0, ".'next'() and .'value'()")
186     inc index
188   T9:  # index = 2
189     iter.'next'()
190     'ok'(1, ".'next'() runs without exception")
192   T10:
193     is_exhausted = iter.'exhausted'()
194     'is'(is_exhausted, 0, ".'exhausted'() returns false")
196   T11:
197     value = iter.'value'()
198     $P0 = $P99[index]
199     'is'(value, $P0, ".'next'() and .'value'()")
201     inc index
203   T12:  # exhausted
204     iter.'next'()
205     'ok'(1, ".'next'() runs without exception")
207   T13:
208     is_exhausted = iter.'exhausted'()
209     'is'(is_exhausted, 1, ".'exhausted'() returns true")
211   T14:
212     $P0 = iter.'value'()
213     $I0 = isnull $P0
214     'is'($I0, 1, ".'value'() returns PMCNULL")
216   T15:
217     iter.'next'()
218     'ok'(1, ".'next'() runs without exception after iter exhaustion")
219 .end
222 # test empty ResizablePMCArray
223 .sub 'ResizablePMCArray_empty'
225   T1:
226     $P99 = new 'ResizablePMCArray'
227     $P99 = 0
229     .local pmc iter
230                iter = new 'Iter'
232     iter.'start'($P99)
234     .local int is_exhausted
235     .local int index
236                index = 0
237     .local pmc value
239     is_exhausted = iter.'exhausted'()
240     'is'(is_exhausted, 0, ".'exhausted'() returns false")
242   T2:
243     value = iter.'value'()
244     $I0 = isnull value
245     'ok'($I0, ".'value'() returns PMCNULL")
247   T3:  # index = 0
248     iter.'next'()
249     'ok'(1, ".'next'() runs without exception")
251   T4:
252     is_exhausted = iter.'exhausted'()
253     'is'(is_exhausted, 1, ".'exhausted'() returns true")
255   T5:
256     value = iter.'value'()
257     $I0 = isnull value
258     'ok'($I0, ".'value'() returns PMCNULL")
260   T6:
261     iter.'next'()
262     'ok'(1, ".'next'() runs without exception after iter exhaustion")
263 .end
266 # test ResizablePMCArray with three elements
267 .sub 'ResizablePMCArray_3elem'
269   T1:
270     $P99 = new 'ResizablePMCArray'
271     $P99 = 3
272     $P99[0] = 'a'
273     $P99[1] = 'b'
274     $P99[2] = 'c'
276     .local pmc iter
277                iter = new 'Iter'
279     iter.'start'($P99)
281     .local int is_exhausted
282     .local int index
283                index = 0
284     .local pmc value
286     is_exhausted = iter.'exhausted'()
287     'is'(is_exhausted, 0, ".'exhausted'() returns false")
289   T2:
290     value = iter.'value'()
291     $I0 = isnull value
292     'ok'($I0, ".'value'() returns PMCNULL")
294   T3:  # index = 0
295     iter.'next'()
296     'ok'(1, ".'next'() runs without exception")
298   T4:
299     is_exhausted = iter.'exhausted'()
300     'is'(is_exhausted, 0, ".'exhausted'() returns false")
302   T5:
303     value = iter.'value'()
304     $P0 = $P99[index]
305     'is'(value, $P0, ".'next'() and .'value'()")
307     inc index
309   T6:  # index = 1
310     iter.'next'()
311     'ok'(1, ".'next'() runs without exception")
313   T7:
314     is_exhausted = iter.'exhausted'()
315     'is'(is_exhausted, 0, ".'exhausted'() returns false")
317   T8:
318     value = iter.'value'()
319     $P0 = $P99[index]
320     'is'(value, $P0, ".'next'() and .'value'()")
322     inc index
324   T9:  # index = 2
325     iter.'next'()
326     'ok'(1, ".'next'() runs without exception")
328   T10:
329     is_exhausted = iter.'exhausted'()
330     'is'(is_exhausted, 0, ".'exhausted'() returns false")
332   T11:
333     value = iter.'value'()
334     $P0 = $P99[index]
335     'is'(value, $P0, ".'next'() and .'value'()")
337     inc index
339   T12:  # exhausted
340     iter.'next'()
341     'ok'(1, ".'next'() runs without exception")
343   T13:
344     is_exhausted = iter.'exhausted'()
345     'is'(is_exhausted, 1, ".'exhausted'() returns true")
347   T14:
348     $P0 = iter.'value'()
349     $I0 = isnull $P0
350     'is'($I0, 1, ".'value'() returns PMCNULL")
352   T15:
353     iter.'next'()
354     'ok'(1, ".'next'() runs without exception after iter exhaustion")
355 .end
357 # Local Variables:
358 #   mode: pir
359 #   fill-column: 100
360 # End:
361 # vim: expandtab shiftwidth=4 ft=pir: