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 unsigned char buff[10];
15 
16 void
done()17 done()
18 {
19   ASSERT(MANGLE(failures) == 0);
20   PASSED();
21 }
22 
23 void
f1(unsigned char * ucP)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
f2(unsigned int * uiP)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 *
f3(void)54 f3 (void)
55 {
56 
57   return &achar0;
58 }
59 
60 
f4(unsigned char * ucP,unsigned char uc)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 
init_array(char start_value)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 
check_array(char base_value)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 
index_by_pointer(unsigned char * index,unsigned char expected_value)93 void index_by_pointer(unsigned char *index, unsigned char expected_value)
94 {
95   if(buff[*index] != expected_value)
96     failures++;
97 }
98 
99 
100 void
main(void)101 main (void)
102 {
103 
104   init_array(4);
105   check_array(4);
106 
107   if(buff[achar0 + 7] != 4+7)
108     failures++;
109 
110   dummy = buff[achar0];
111 
112   if(dummy != 4)
113     failures++;
114 
115   if(dummy != (buff[achar0+1] -1))
116     failures++;
117 
118   index_by_pointer(&dummy, 8);
119 
120   f1 (&achar0);
121   f2 (&aint0);
122 
123   acharP = f3 ();
124   if ((acharP == 0) || (*acharP))
125     failures++;
126   achar0 = 42;
127   if(*acharP != 42)
128     failures++;
129 
130   achar0 = 5;
131   f4(&achar0, achar0);
132 
133   done ();
134 }
135