scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

0096-div.c (1436B)


      1 #include <assert.h>
      2 #include <inttypes.h>
      3 #include <stdio.h>
      4 #include <stdlib.h>
      5 
      6 /*
      7 output:
      8 testing
      9 test1
     10 test2
     11 test3
     12 test4
     13 done
     14 end:
     15 */
     16 
     17 static void
     18 test1(void)
     19 {
     20 	div_t d;
     21 
     22 	puts("test1");
     23 
     24 	d = div(8, 4);
     25 	assert(d.quot == 2 && d.rem == 0);
     26 
     27 	d = div(-10, 3);
     28 	assert(d.quot == -3 && d.rem == -1);
     29 
     30 	d = div(10, -3);
     31 	assert(d.quot == -3 && d.rem == 1);
     32 
     33 	d = div(-11, -3);
     34 	assert(d.quot == 3 && d.rem == -2);
     35 }
     36 
     37 static void
     38 test2(void)
     39 {
     40 	ldiv_t ld;
     41 
     42 	puts("test2");
     43 
     44 	ld = ldiv(8, 4);
     45 	assert(ld.quot == 2 && ld.rem == 0);
     46 
     47 
     48 	ld = ldiv(-10, 3);
     49 	assert(ld.quot == -3 && ld.rem == -1);
     50 
     51 	ld = ldiv(10, -3);
     52 	assert(ld.quot == -3 && ld.rem == 1);
     53 
     54 	ld = ldiv(-11, -3);
     55 	assert(ld.quot == 3 && ld.rem == -2);
     56 }
     57 
     58 static void
     59 test3(void)
     60 {
     61 	lldiv_t lld;
     62 
     63 	puts("test3");
     64 
     65 	lld = lldiv(8, 4);
     66 	assert(lld.quot == 2 && lld.rem == 0);
     67 
     68 
     69 	lld = lldiv(-10, 3);
     70 	assert(lld.quot == -3 && lld.rem == -1);
     71 
     72 	lld = lldiv(10, -3);
     73 	assert(lld.quot == -3 && lld.rem == 1);
     74 
     75 	lld = lldiv(-11, -3);
     76 	assert(lld.quot == 3 && lld.rem == -2);
     77 }
     78 
     79 static void
     80 test4(void)
     81 {
     82 	imaxdiv_t md;
     83 
     84 	puts("test4");
     85 
     86 	md = imaxdiv(8, 4);
     87 	assert(md.quot == 2 && md.rem == 0);
     88 
     89 	md = imaxdiv(-10, 3);
     90 	assert(md.quot == -3 && md.rem == -1);
     91 
     92 	md = imaxdiv(10, -3);
     93 	assert(md.quot == -3 && md.rem == 1);
     94 
     95 	md = imaxdiv(-11, -3);
     96 	assert(md.quot == 3 && md.rem == -2);
     97 }
     98 
     99 int
    100 main(void)
    101 {
    102 	puts("testing");
    103 	test1();
    104 	test2();
    105 	test3();
    106 	test4();
    107 	puts("done");
    108 }