* src/SDCCast.c (isConformingBody): fixed bug 1505811, thanks Robert Larice
[fw/sdcc] / src / regression / pointer1.c
1 #include "gpsim_assert.h"
2
3 // Pointer tests
4
5 unsigned char failures = 0;
6 unsigned char dummy;
7
8 unsigned int aint0 = 0;
9 unsigned int aint1 = 0;
10 unsigned char achar0 = 0;
11 unsigned char achar1 = 0;
12 unsigned char *acharP = 0;
13
14 char buff[10];
15
16 void
17 done()
18 {
19   ASSERT(MANGLE(failures) == 0);
20   PASSED();
21 }
22
23 void
24 f1 (unsigned char *ucP)
25 {
26
27   if (ucP == 0)
28     {
29       failures++;
30       return;
31     }
32
33   if (*ucP)
34     failures++;
35 }
36
37 void
38 f2 (unsigned int *uiP)
39 {
40
41   if (uiP == 0)
42     {
43       failures++;
44       return;
45     }
46
47   if (*uiP)
48     failures++;
49
50 }
51
52
53 unsigned char *
54 f3 (void)
55 {
56
57   return &achar0;
58 }
59
60
61 void f4(unsigned char *ucP, unsigned char uc)
62 {
63
64   if(!ucP) {
65     failures++;
66     return;
67   }
68
69   if(*ucP != uc)
70     failures++;
71
72 }
73
74 void init_array(char start_value)
75 {
76   unsigned char c;
77
78   for(c=0; c<sizeof(buff); c++)
79     buff[c] = start_value++;
80
81 }
82
83 void check_array(char base_value)
84 {
85   unsigned char c;
86
87   for(c=0; c<sizeof(buff); c++)
88     if(buff[c] != (base_value+c))
89       failures++;
90
91 }
92
93 void index_by_pointer(unsigned char *index, unsigned char expected_value)
94 {
95 /*
96   if(buff[*index] != expected_value)
97     failures++;
98 */
99 }
100
101
102 void
103 main (void)
104 {
105
106   init_array(4);
107   check_array(4);
108
109   if(buff[achar0 + 7] != 4+7)
110     failures++;
111
112   dummy = buff[achar0];
113
114   if(dummy != 4)
115     failures++;
116
117   if(dummy != (buff[achar0+1] -1)) 
118     failures++;
119
120   index_by_pointer(&dummy, 8);
121
122   f1 (&achar0);
123   f2 (&aint0);
124
125   acharP = f3 ();
126   if ((acharP == 0) || (*acharP))
127     failures++;
128   achar0 = 42;
129   if(*acharP != 42)
130     failures++;
131
132   achar0 = 5;
133   f4(&achar0, achar0);
134
135   done ();
136 }