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()17done() 18 { 19 ASSERT(MANGLE(failures) == 0); 20 PASSED(); 21 } 22 23 void f1(unsigned char * ucP)24f1 (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)38f2 (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)54f3 (void) 55 { 56 57 return &achar0; 58 } 59 60 f4(unsigned char * ucP,unsigned char uc)61void 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)74void 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)83void 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)93void 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)101main (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