]> git.sur5r.net Git - cc65/blob - test/val/switch1.c
All regression-tests subdirectories are cleaned before the first test starts, so...
[cc65] / test / val / switch1.c
1 /*
2   !!DESCRIPTION!!
3   !!ORIGIN!!      SDCC regression tests
4   !!LICENCE!!     GPL, read COPYING.GPL
5 */
6
7 #include <stdio.h>
8 #include <limits.h>
9
10 unsigned char success=0;
11 unsigned char failures=0;
12 unsigned char dummy=0;
13
14 #ifdef SUPPORT_BIT_TYPES
15 bit bit0 = 0;
16 #endif
17 unsigned int aint0 = 0;
18 unsigned int aint1 = 0;
19 unsigned char achar0 = 0;
20 unsigned char achar1 = 0;
21
22 void done()
23 {
24   dummy++;
25 }
26
27 void switch1(void)
28 {
29   switch(achar0) {
30   case 0:
31     achar0 = 9;
32     break;
33   case 1:
34     achar0 = 18;
35     break;
36
37   default:
38     achar0 = 0;
39   }
40 }
41
42 void switch2(void)
43 {
44   switch(achar1) {
45   case 0:    achar0 = 9;    break;
46   case 1:    achar0 = 8;    break;
47   case 2:    achar0 = 7;    break;
48   case 3:    achar0 = 6;    break;
49   case 4:    achar0 = 5;    break;
50   case 5:    achar0 = 4;    break;
51   case 6:    achar0 = 3;    break;
52   case 7:    achar0 = 2;    break;
53   case 8:    achar0 = 1;    break;
54   case 9:    achar0 = 0;    break;
55   case 10:    achar0 = 9;    break;
56   case 11:    achar0 = 8;    break;
57   case 12:    achar0 = 7;    break;
58   default:    achar0 = 0xff;    break;
59   }
60 }
61
62 int main(void)
63 {
64   achar0 = 0;
65   switch1();
66   if(achar0 != 9)
67     failures++;
68
69   switch1();
70   if(achar0 != 0)
71     failures++;
72
73   achar0++;
74
75   switch1();
76   if(achar0 != 18)
77     failures++;
78
79   for(achar1=0; achar1<10;achar1++){
80     switch2();
81     if(achar0 != (9-achar1))
82       failures++;
83
84   }
85
86   success=failures;
87   done();
88   printf("failures: %d\n",failures);
89
90   return failures;
91 }