set version to 1.1.4
[voodoo-lang.git] / test / div.voo
blob584b82120f741a523157d9aa471c9d60702bdeb9
1 section data
2 align
3 gx:
4 word 0
6 align
7 gy:
8 word 0
10 align
11 gz:
12 word 0
14 format:
15 string "%d\n"
17 section functions
18 export main
19 import printf
21 align
22 main:
23 function argc argv
24     let x div 0 1
25     # EXPECTED: 0
26     call printf format x
27     set x div 0 -1
28     # EXPECTED: 0
29     call printf format x
30     set x div 0 22
31     # EXPECTED: 0
32     call printf format x
33     set x div 0 -30
34     # EXPECTED: 0
35     call printf format x
36     set x div 1 1
37     # EXPECTED: 1
38     call printf format x
39     set x div 1 -1
40     # EXPECTED: -1
41     call printf format x
42     set x div -1 1
43     # EXPECTED: -1
44     call printf format x
45     set x div 1 22
46     # EXPECTED: 0
47     call printf format x
48     set x div 22 1
49     # EXPECTED: 22
50     call printf format x
51     set x div -30 1
52     # EXPECTED: -30
53     call printf format x
54     set x div -1 -1
55     # EXPECTED: 1
56     call printf format x
57     set x div 22 -1
58     # EXPECTED: -22
59     call printf format x
60     set x div -30 -1
61     # EXPECTED: 30
62     call printf format x
63     set x div 120 22
64     # EXPECTED: 5
65     call printf format x
66     set x div 22 120
67     # EXPECTED: 0
68     call printf format x
69     set x div 120 -30
70     # EXPECTED: -4
71     call printf format x
73     let y 0
74     set x div y 1
75     # EXPECTED: 0
76     call printf format x
77     set x div y -1
78     # EXPECTED: 0
79     call printf format x
80     set x div y 6
81     # EXPECTED: 0
82     call printf format x
83     set x div y -21
84     # EXPECTED: 0
85     call printf format x
86     set y 1
87     set x div y 1
88     # EXPECTED: 1
89     call printf format x
90     set x div 1 y
91     # EXPECTED: 1
92     call printf format x
93     set x div y -1
94     # EXPECTED: -1
95     call printf format x
96     set x div -1 y
97     # EXPECTED: -1
98     call printf format x
99     set x div y 6
100     # EXPECTED: 0
101     call printf format x
102     set x div 6 y
103     # EXPECTED: 6
104     call printf format x
105     set x div -21 y
106     # EXPECTED: -21
107     call printf format x
108     set y -1
109     set x div y -1
110     # EXPECTED: 1
111     call printf format x
112     set x div -1 y
113     # EXPECTED: 1
114     call printf format x
115     set x div 6 y
116     # EXPECTED: -6
117     call printf format x
118     set x div -21 y
119     # EXPECTED: 21
120     call printf format x
121     set y 63
122     set x div y 6
123     # EXPECTED: 10
124     call printf format x
125     set x div 6 y
126     # EXPECTED: 0
127     call printf format x
128     set x div y -21
129     # EXPECTED: -3
130     call printf format x
132     set y 0
133     let z 1
134     set x div y z
135     # EXPECTED: 0
136     call printf format x
137     set z -1
138     set x div y z
139     # EXPECTED: 0
140     call printf format x
141     set z 27
142     set x div y z
143     # EXPECTED: 0
144     call printf format x
145     set z -6
146     set x div y z
147     # EXPECTED: 0
148     call printf format x
149     set y 1
150     set z 1
151     set x div y z
152     # EXPECTED: 1
153     call printf format x
154     set x div z y
155     # EXPECTED: 1
156     call printf format x
157     set z -1
158     set x div y z
159     # EXPECTED: -1
160     call printf format x
161     set x div z y
162     # EXPECTED: -1
163     call printf format x
164     set z 27
165     set x div y z
166     # EXPECTED: 0
167     call printf format x
168     set x div z y
169     # EXPECTED: 27
170     call printf format x
171     set z -6
172     set x div z y
173     # EXPECTED: -6
174     call printf format x
175     set y -1
176     set z -1
177     set x div y z
178     # EXPECTED: 1
179     call printf format x
180     set x div z y
181     # EXPECTED: 1
182     call printf format x
183     set z 27
184     set x div z y
185     # EXPECTED: -27
186     call printf format x
187     set z -6
188     set x div z y
189     # EXPECTED: 6
190     call printf format x
191     set y 18
192     set z 27
193     set x div y z
194     # EXPECTED: 0
195     call printf format x
196     set x div z y
197     # EXPECTED: 1
198     call printf format x
199     set z -6
200     set x div y z
201     # EXPECTED: -3
202     call printf format x
204     set x 0
205     set x div x 1
206     # EXPECTED: 0
207     call printf format x
208     set x 0
209     set x div x -1
210     # EXPECTED: 0
211     call printf format x
212     set x 0
213     set x div x 7
214     # EXPECTED: 0
215     call printf format x
216     set x 0
217     set x div x -11
218     # EXPECTED: 0
219     call printf format x
220     set x 1
221     set x div x 1
222     # EXPECTED: 1
223     call printf format x
224     set x 1
225     set x div 1 x
226     # EXPECTED: 1
227     call printf format x
228     set x 1
229     set x div x -1
230     # EXPECTED: -1
231     call printf format x
232     set x 1
233     set x div -1 x
234     # EXPECTED: -1
235     call printf format x
236     set x 1
237     set x div x 7
238     # EXPECTED: 0
239     call printf format x
240     set x 1
241     set x div 7 x
242     # EXPECTED: 7
243     call printf format x
244     set x 1
245     set x 1
246     set x div -11 x
247     # EXPECTED: -11
248     call printf format x
249     set x -1
250     set x div x -1
251     # EXPECTED: 1
252     call printf format x
253     set x -1
254     set x div -1 x
255     # EXPECTED: 1
256     call printf format x
257     set x -1
258     set x -1
259     set x div 7 x
260     # EXPECTED: -7
261     call printf format x
262     set x -1
263     set x -1
264     set x div -11 x
265     # EXPECTED: 11
266     call printf format x
267     set x 44
268     set x div x 7
269     # EXPECTED: 6
270     call printf format x
271     set x 44
272     set x div 7 x
273     # EXPECTED: 0
274     call printf format x
275     set x 44
276     set x div x -11
277     # EXPECTED: -4
278     call printf format x
280     set x 0
281     set y 1
282     set x div x y
283     # EXPECTED: 0
284     call printf format x
285     set x 0
286     set y -1
287     set x div x y
288     # EXPECTED: 0
289     call printf format x
290     set x 0
291     set y 18
292     set x div x y
293     # EXPECTED: 0
294     call printf format x
295     set x 0
296     set y -31
297     set x div x y
298     # EXPECTED: 0
299     call printf format x
300     set x 1
301     set y 1
302     set x div x y
303     # EXPECTED: 1
304     call printf format x
305     set x 1
306     set x div y x
307     # EXPECTED: 1
308     call printf format x
309     set x 1
310     set y -1
311     set x div x y
312     # EXPECTED: -1
313     call printf format x
314     set x 1
315     set x div y x
316     # EXPECTED: -1
317     call printf format x
318     set x 1
319     set y 18
320     set x div x y
321     # EXPECTED: 0
322     call printf format x
323     set x 1
324     set x div y x
325     # EXPECTED: 18
326     call printf format x
327     set x 1
328     set y -31
329     set x 1
330     set x div y x
331     # EXPECTED: -31
332     call printf format x
333     set x -1
334     set y -1
335     set x div x y
336     # EXPECTED: 1
337     call printf format x
338     set x -1
339     set x div y x
340     # EXPECTED: 1
341     call printf format x
342     set x -1
343     set y 18
344     set x -1
345     set x div y x
346     # EXPECTED: -18
347     call printf format x
348     set x -1
349     set y -31
350     set x -1
351     set x div y x
352     # EXPECTED: 31
353     call printf format x
354     set x 124
355     set y 18
356     set x div x y
357     # EXPECTED: 6
358     call printf format x
359     set x 124
360     set x div y x
361     # EXPECTED: 0
362     call printf format x
363     set x 124
364     set y -31
365     set x div x y
366     # EXPECTED: -4
367     call printf format x
369     set @gx 0
370     set x div @gx 1
371     # EXPECTED: 0
372     call printf format x
373     set x div @gx -1
374     # EXPECTED: 0
375     call printf format x
376     set x div @gx 14
377     # EXPECTED: 0
378     call printf format x
379     set x div @gx -29
380     # EXPECTED: 0
381     call printf format x
382     set @gx 1
383     set x div @gx 1
384     # EXPECTED: 1
385     call printf format x
386     set x div 1 @gx
387     # EXPECTED: 1
388     call printf format x
389     set x div @gx -1
390     # EXPECTED: -1
391     call printf format x
392     set x div -1 @gx
393     # EXPECTED: -1
394     call printf format x
395     set x div @gx 14
396     # EXPECTED: 0
397     call printf format x
398     set x div 14 @gx
399     # EXPECTED: 14
400     call printf format x
401     set x div -29 @gx
402     # EXPECTED: -29
403     call printf format x
404     set @gx -1
405     set x div @gx -1
406     # EXPECTED: 1
407     call printf format x
408     set x div -1 @gx
409     # EXPECTED: 1
410     call printf format x
411     set x div 14 @gx
412     # EXPECTED: -14
413     call printf format x
414     set x div -29 @gx
415     # EXPECTED: 29
416     call printf format x
417     set @gx 145
418     set x div @gx 14
419     # EXPECTED: 10
420     call printf format x
421     set x div 14 @gx
422     # EXPECTED: 0
423     call printf format x
424     set x div @gx -29
425     # EXPECTED: -5
426     call printf format x
428     set @gx 0
429     set y 1
430     set x div @gx y
431     # EXPECTED: 0
432     call printf format x
433     set y -1
434     set x div @gx y
435     # EXPECTED: 0
436     call printf format x
437     set y 7
438     set x div @gx y
439     # EXPECTED: 0
440     call printf format x
441     set y -3
442     set x div @gx y
443     # EXPECTED: 0
444     call printf format x
445     set @gx 1
446     set y 1
447     set x div @gx y
448     # EXPECTED: 1
449     call printf format x
450     set x div y @gx
451     # EXPECTED: 1
452     call printf format x
453     set y -1
454     set x div @gx y
455     # EXPECTED: -1
456     call printf format x
457     set x div y @gx
458     # EXPECTED: -1
459     call printf format x
460     set y 7
461     set x div @gx y
462     # EXPECTED: 0
463     call printf format x
464     set x div y @gx
465     # EXPECTED: 7
466     call printf format x
467     set y -3
468     set x div y @gx
469     # EXPECTED: -3
470     call printf format x
471     set @gx -1
472     set y -1
473     set x div @gx y
474     # EXPECTED: 1
475     call printf format x
476     set x div y @gx
477     # EXPECTED: 1
478     call printf format x
479     set y 7
480     set x div y @gx
481     # EXPECTED: -7
482     call printf format x
483     set y -3
484     set x div y @gx
485     # EXPECTED: 3
486     call printf format x
487     set @gx 12
488     set y 7
489     set x div @gx y
490     # EXPECTED: 1
491     call printf format x
492     set x div y @gx
493     # EXPECTED: 0
494     call printf format x
495     set y -3
496     set x div @gx y
497     # EXPECTED: -4
498     call printf format x
500     set @gx 0
501     set @gy 1
502     set x div @gx @gy
503     # EXPECTED: 0
504     call printf format x
505     set @gy -1
506     set x div @gx @gy
507     # EXPECTED: 0
508     call printf format x
509     set @gy 6
510     set x div @gx @gy
511     # EXPECTED: 0
512     call printf format x
513     set @gy -16
514     set x div @gx @gy
515     # EXPECTED: 0
516     call printf format x
517     set @gx 1
518     set @gy 1
519     set x div @gx @gy
520     # EXPECTED: 1
521     call printf format x
522     set x div @gy @gx
523     # EXPECTED: 1
524     call printf format x
525     set @gy -1
526     set x div @gx @gy
527     # EXPECTED: -1
528     call printf format x
529     set x div @gy @gx
530     # EXPECTED: -1
531     call printf format x
532     set @gy 6
533     set x div @gx @gy
534     # EXPECTED: 0
535     call printf format x
536     set x div @gy @gx
537     # EXPECTED: 6
538     call printf format x
539     set @gy -16
540     set x div @gy @gx
541     # EXPECTED: -16
542     call printf format x
543     set @gx -1
544     set @gy -1
545     set x div @gx @gy
546     # EXPECTED: 1
547     call printf format x
548     set x div @gy @gx
549     # EXPECTED: 1
550     call printf format x
551     set @gy 6
552     set x div @gy @gx
553     # EXPECTED: -6
554     call printf format x
555     set @gy -16
556     set x div @gy @gx
557     # EXPECTED: 16
558     call printf format x
559     set @gx 48
560     set @gy 6
561     set x div @gx @gy
562     # EXPECTED: 8
563     call printf format x
564     set x div @gy @gx
565     # EXPECTED: 0
566     call printf format x
567     set @gy -16
568     set x div @gx @gy
569     # EXPECTED: -3
570     call printf format x
572     set @gx 0
573     set y 1
574     set @gx div @gx y
575     # EXPECTED: 0
576     call printf format @gx
577     set @gx 0
578     set y -1
579     set @gx div @gx y
580     # EXPECTED: 0
581     call printf format @gx
582     set @gx 0
583     set y 23
584     set @gx div @gx y
585     # EXPECTED: 0
586     call printf format @gx
587     set @gx 0
588     set y -30
589     set @gx div @gx y
590     # EXPECTED: 0
591     call printf format @gx
592     set @gx 1
593     set y 1
594     set @gx div @gx y
595     # EXPECTED: 1
596     call printf format @gx
597     set @gx 1
598     set @gx div y @gx
599     # EXPECTED: 1
600     call printf format @gx
601     set @gx 1
602     set y -1
603     set @gx div @gx y
604     # EXPECTED: -1
605     call printf format @gx
606     set @gx 1
607     set @gx div y @gx
608     # EXPECTED: -1
609     call printf format @gx
610     set @gx 1
611     set y 23
612     set @gx div @gx y
613     # EXPECTED: 0
614     call printf format @gx
615     set @gx 1
616     set @gx div y @gx
617     # EXPECTED: 23
618     call printf format @gx
619     set @gx 1
620     set y -30
621     set @gx 1
622     set @gx div y @gx
623     # EXPECTED: -30
624     call printf format @gx
625     set @gx -1
626     set y -1
627     set @gx div @gx y
628     # EXPECTED: 1
629     call printf format @gx
630     set @gx -1
631     set @gx div y @gx
632     # EXPECTED: 1
633     call printf format @gx
634     set @gx -1
635     set y 23
636     set @gx -1
637     set @gx div y @gx
638     # EXPECTED: -23
639     call printf format @gx
640     set @gx -1
641     set y -30
642     set @gx -1
643     set @gx div y @gx
644     # EXPECTED: 30
645     call printf format @gx
646     set @gx 150
647     set y 23
648     set @gx div @gx y
649     # EXPECTED: 6
650     call printf format @gx
651     set @gx 150
652     set @gx div y @gx
653     # EXPECTED: 0
654     call printf format @gx
655     set @gx 150
656     set y -30
657     set @gx div @gx y
658     # EXPECTED: -5
659     call printf format @gx
661     set @gy 0
662     set @gz 1
663     set @gx div @gy @gz
664     # EXPECTED: 0
665     call printf format @gx
666     set @gz -1
667     set @gx div @gy @gz
668     # EXPECTED: 0
669     call printf format @gx
670     set @gz 26
671     set @gx div @gy @gz
672     # EXPECTED: 0
673     call printf format @gx
674     set @gz -2
675     set @gx div @gy @gz
676     # EXPECTED: 0
677     call printf format @gx
678     set @gy 1
679     set @gz 1
680     set @gx div @gy @gz
681     # EXPECTED: 1
682     call printf format @gx
683     set @gx div @gz @gy
684     # EXPECTED: 1
685     call printf format @gx
686     set @gz -1
687     set @gx div @gy @gz
688     # EXPECTED: -1
689     call printf format @gx
690     set @gx div @gz @gy
691     # EXPECTED: -1
692     call printf format @gx
693     set @gz 26
694     set @gx div @gy @gz
695     # EXPECTED: 0
696     call printf format @gx
697     set @gx div @gz @gy
698     # EXPECTED: 26
699     call printf format @gx
700     set @gz -2
701     set @gx div @gz @gy
702     # EXPECTED: -2
703     call printf format @gx
704     set @gy -1
705     set @gz -1
706     set @gx div @gy @gz
707     # EXPECTED: 1
708     call printf format @gx
709     set @gx div @gz @gy
710     # EXPECTED: 1
711     call printf format @gx
712     set @gz 26
713     set @gx div @gz @gy
714     # EXPECTED: -26
715     call printf format @gx
716     set @gz -2
717     set @gx div @gz @gy
718     # EXPECTED: 2
719     call printf format @gx
720     set @gy 6
721     set @gz 26
722     set @gx div @gy @gz
723     # EXPECTED: 0
724     call printf format @gx
725     set @gx div @gz @gy
726     # EXPECTED: 4
727     call printf format @gx
728     set @gz -2
729     set @gx div @gy @gz
730     # EXPECTED: -3
731     call printf format @gx
733     set @gx 0
734     set @gy 1
735     set @gx div @gx @gy
736     # EXPECTED: 0
737     call printf format @gx
738     set @gx 0
739     set @gy -1
740     set @gx div @gx @gy
741     # EXPECTED: 0
742     call printf format @gx
743     set @gx 0
744     set @gy 5
745     set @gx div @gx @gy
746     # EXPECTED: 0
747     call printf format @gx
748     set @gx 0
749     set @gy -8
750     set @gx div @gx @gy
751     # EXPECTED: 0
752     call printf format @gx
753     set @gx 1
754     set @gy 1
755     set @gx div @gx @gy
756     # EXPECTED: 1
757     call printf format @gx
758     set @gx 1
759     set @gx div @gy @gx
760     # EXPECTED: 1
761     call printf format @gx
762     set @gx 1
763     set @gy -1
764     set @gx div @gx @gy
765     # EXPECTED: -1
766     call printf format @gx
767     set @gx 1
768     set @gx div @gy @gx
769     # EXPECTED: -1
770     call printf format @gx
771     set @gx 1
772     set @gy 5
773     set @gx div @gx @gy
774     # EXPECTED: 0
775     call printf format @gx
776     set @gx 1
777     set @gx div @gy @gx
778     # EXPECTED: 5
779     call printf format @gx
780     set @gx 1
781     set @gy -8
782     set @gx 1
783     set @gx div @gy @gx
784     # EXPECTED: -8
785     call printf format @gx
786     set @gx -1
787     set @gy -1
788     set @gx div @gx @gy
789     # EXPECTED: 1
790     call printf format @gx
791     set @gx -1
792     set @gx div @gy @gx
793     # EXPECTED: 1
794     call printf format @gx
795     set @gx -1
796     set @gy 5
797     set @gx -1
798     set @gx div @gy @gx
799     # EXPECTED: -5
800     call printf format @gx
801     set @gx -1
802     set @gy -8
803     set @gx -1
804     set @gx div @gy @gx
805     # EXPECTED: 8
806     call printf format @gx
807     set @gx 24
808     set @gy 5
809     set @gx div @gx @gy
810     # EXPECTED: 4
811     call printf format @gx
812     set @gx 24
813     set @gx div @gy @gx
814     # EXPECTED: 0
815     call printf format @gx
816     set @gx 24
817     set @gy -8
818     set @gx div @gx @gy
819     # EXPECTED: -3
820     call printf format @gx
822     return 0
823 end function