fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / op / arithmetics_pmc.t
blobb5e8a54f28221fe8841dc8fbaf93d3500402e69b
1 #!./parrot
2 # Copyright (C) 2001-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/arithmetics_pmc.t - Arithmetic Ops involving PMCs
9 =head1 SYNOPSIS
11         % prove t/op/arithmetics_pmc.t
13 =head1 DESCRIPTION
15 Test handling C<dest> arg in 3-args arithmetic.
17 =cut
19 .sub main :main
20     .include 'test_more.pir'
21     .include "iglobals.pasm"
23     plan(40)
25     # Don't check BigInt or BigNum without gmp
26     .local pmc interp     # a handle to our interpreter object.
27     interp = getinterp
28     .local pmc config
29     config = interp[.IGLOBALS_CONFIG_HASH]
30     .local string gmp
31     gmp = config['gmp']
33     run_tests_for('Integer')
34     run_tests_for('Float')
36     if gmp goto do_big_ones
37         skip( 20, "will not test BigInt or BigNum without gmp" )
38         goto end
40   do_big_ones:
41     run_tests_for('BigInt')
42     run_tests_for('BigNum')
44   end:
45 .end
47 .sub run_tests_for
48     .param pmc type
49     test_add(type)
50     test_divide(type)
51     test_multiply(type)
52     test_floor_divide(type)
53     test_logical_and(type)
54     test_concatenate(type)
55     test_logical_xor(type)
56     test_logical_or(type)
57     test_modulus(type)
58     test_subtract(type)
59 .end
61 .sub test_add
62     .param pmc type
64     $P0 = new type
65     $P0 = 40
66     $P1 = new type
67     $P1 = 2
68     $P2 = new type
69     $P2 = 115200
71     $P99 = $P2
73     $S0 = "original dest is untouched in add for "
74     $S1 = type
75     concat $S0, $S1
77     # ignore exceptions
78     push_eh done
79     add $P2, $P0, $P1
81     $I0 = cmp $P99, 115200
83     is( $I0, 0, $S0 )
84     goto end
86   done:
87     ok(1, 'ignoring exceptions')
88   end:
89 .end
91 .sub test_divide
92     .param pmc type
94     $P0 = new type
95     $P0 = 40
96     $P1 = new type
97     $P1 = 2
98     $P2 = new type
99     $P2 = 115200
101     $P99 = $P2
103     $S0 = "original dest is untouched in divide for "
104     $S1 = type
105     concat $S0, $S1
107     # ignore exceptions
108     push_eh done
109     div $P2, $P0, $P1
111     $I0 = cmp $P99, 115200
113     is( $I0, 0, $S0 )
114     goto end
116   done:
117     ok(1, 'ignoring exceptions')
118   end:
119 .end
121 .sub test_multiply
122     .param pmc type
124     $P0 = new type
125     $P0 = 40
126     $P1 = new type
127     $P1 = 2
128     $P2 = new type
129     $P2 = 115200
131     $P99 = $P2
133     $S0 = "original dest is untouched in multiply for "
134     $S1 = type
135     concat $S0, $S1
137     # ignore exceptions
138     push_eh done
139     mul $P2, $P0, $P1
141     $I0 = cmp $P99, 115200
143     is( $I0, 0, $S0 )
144     goto end
146   done:
147     ok(1, 'ignoring exceptions')
148   end:
149 .end
151 .sub test_floor_divide
152     .param pmc type
154     $P0 = new type
155     $P0 = 40
156     $P1 = new type
157     $P1 = 2
158     $P2 = new type
159     $P2 = 115200
161     $P99 = $P2
163     $S0 = "original dest is untouched in floor_divide for "
164     $S1 = type
165     concat $S0, $S1
167     # ignore exceptions
168     push_eh done
169     fdiv $P2, $P0, $P1
171     $I0 = cmp $P99, 115200
173     is( $I0, 0, $S0 )
174     goto end
176   done:
177     ok(1, 'ignoring exceptions')
178   end:
179 .end
181 .sub test_logical_and
182     .param pmc type
184     $P0 = new type
185     $P0 = 40
186     $P1 = new type
187     $P1 = 2
188     $P2 = new type
189     $P2 = 115200
191     $P99 = $P2
193     $S0 = "original dest is untouched in logical_and for "
194     $S1 = type
195     concat $S0, $S1
197     # ignore exceptions
198     push_eh done
199     and $P2, $P0, $P1
201     $I0 = cmp $P99, 115200
203     is( $I0, 0, $S0 )
204     goto end
206   done:
207     ok(1, 'ignoring exceptions')
208   end:
209 .end
211 .sub test_concatenate
212     .param pmc type
214     $P0 = new type
215     $P0 = 40
216     $P1 = new type
217     $P1 = 2
218     $P2 = new type
219     $P2 = 115200
221     $P99 = $P2
223     $S0 = "original dest is untouched in concatenate for "
224     $S1 = type
225     concat $S0, $S1
227     # ignore exceptions
228     push_eh done
229     concat $P2, $P0, $P1
231     $I0 = cmp $P99, 115200
233     is( $I0, 0, $S0 )
234     goto end
236   done:
237     ok(1, 'ignoring exceptions')
238   end:
239 .end
241 .sub test_logical_xor
242     .param pmc type
244     $P0 = new type
245     $P0 = 40
246     $P1 = new type
247     $P1 = 2
248     $P2 = new type
249     $P2 = 115200
251     $P99 = $P2
253     $S0 = "original dest is untouched in logical_xor for "
254     $S1 = type
255     concat $S0, $S1
257     # ignore exceptions
258     push_eh done
259     xor $P2, $P0, $P1
261     $I0 = cmp $P99, 115200
263     is( $I0, 0, $S0 )
264     goto end
266   done:
267     ok(1, 'ignoring exceptions')
268   end:
269 .end
271 .sub test_logical_or
272     .param pmc type
274     $P0 = new type
275     $P0 = 40
276     $P1 = new type
277     $P1 = 2
278     $P2 = new type
279     $P2 = 115200
281     $P99 = $P2
283     $S0 = "original dest is untouched in logical_or for "
284     $S1 = type
285     concat $S0, $S1
287     # ignore exceptions
288     push_eh done
289     or $P2, $P0, $P1
291     $I0 = cmp $P99, 115200
293     is( $I0, 0, $S0 )
294     goto end
296   done:
297     ok(1, 'ignoring exceptions')
298   end:
299 .end
301 .sub test_modulus
302     .param pmc type
304     $P0 = new type
305     $P0 = 40
306     $P1 = new type
307     $P1 = 2
308     $P2 = new type
309     $P2 = 115200
311     $P99 = $P2
313     $S0 = "original dest is untouched in modulus for "
314     $S1 = type
315     concat $S0, $S1
317     # ignore exceptions
318     push_eh done
319     mod $P2, $P0, $P1
321     $I0 = cmp $P99, 115200
323     is( $I0, 0, $S0 )
324     goto end
326   done:
327     ok(1, 'ignoring exceptions')
328   end:
329 .end
331 .sub test_subtract
332     .param pmc type
334     $P0 = new type
335     $P0 = 40
336     $P1 = new type
337     $P1 = 2
338     $P2 = new type
339     $P2 = 115200
341     $P99 = $P2
343     $S0 = "original dest is untouched in subtract for "
344     $S1 = type
345     concat $S0, $S1
347     # ignore exceptions
348     push_eh done
349     sub $P2, $P0, $P1
351     $I0 = cmp $P99, 115200
353     is( $I0, 0, $S0 )
354     goto end
356   done:
357     ok(1, 'ignoring exceptions')
358   end:
359 .end
361 # Local Variables:
362 #   mode: pir
363 #   fill-column: 100
364 # End:
365 # vim: expandtab shiftwidth=4 ft=pir: