Imported Upstream version 2.9.0
[debian/cc1111] / 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 unsigned 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   if(buff[*index] != expected_value)
96     failures++;
97 }
98
99
100 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 }