1 #include "test.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 
test_string_array(void)6 void test_string_array(void)
7 {
8      char    string[] = "HelloThere";
9 
10      assertEqual(0, strcmp(string,"HelloThere"));
11      assertEqual(11, sizeof(string));
12 }
13 
test_string_array_overflow(void)14 void test_string_array_overflow(void)
15 {
16      char    string[5] = "HelloThere";
17 
18      assertEqual(0, strcmp(string,"Hell"));
19      assertEqual(5, sizeof(string));
20 }
21 
22 
test_string_array_underflow(void)23 void test_string_array_underflow(void)
24 {
25      char    string[20] = "HelloThere";
26 
27      assertEqual(0, strcmp(string,"HelloThere"));
28      assertEqual(20, sizeof(string));
29 }
30 
test_int_array(void)31 void test_int_array(void)
32 {
33     int numbers[] = { 1, 2, 3, 4};
34 
35     assertEqual(8, sizeof(numbers));
36     assertEqual(1, numbers[0]);
37 }
38 
test_double_array(void)39 void test_double_array(void)
40 {
41     double_t numbers[] = { 1.0, 2.0, 3.0, 4.0};
42 
43     assertEqual(24, sizeof(numbers));
44     assertEqual(1.0, numbers[0]);
45 }
46 
47 
48 struct ts {
49     long  l;
50     int   i;
51     char *s;
52 };
53 
test_struct(void)54 void test_struct(void)
55 {
56     struct ts val = { 0xdeadbeef, 23, "Hello"};
57 
58     assertEqual(8, sizeof(val));
59     assertEqual(0xdeadbeef, val.l);
60     assertEqual(23, val.i);
61     assertEqual(0, strcmp(val.s,"Hello"));
62 }
63 
test_struct_array(void)64 void test_struct_array(void)
65 {
66     struct ts val[] = {
67         { 0xdeadbeef, 23, "Hello"},
68         { 0x5ca1ab1e, 12, "Goodbye" }
69     };
70 
71     assertEqual(16, sizeof(val));
72     assertEqual(0xdeadbeef, val[0].l);
73     assertEqual(23, val[0].i);
74     assertEqual(0, strcmp(val[0].s,"Hello"));
75 
76     assertEqual(0x5ca1ab1e, val[1].l);
77     assertEqual(12, val[1].i);
78     assertEqual(0, strcmp(val[1].s,"Goodbye"));
79 }
80 
81 
suite_autoinit()82 int suite_autoinit()
83 {
84     suite_setup("Auto aggregate variables");
85 
86     suite_add_test(test_string_array);
87     suite_add_test(test_string_array_overflow);
88     suite_add_test(test_string_array_underflow);
89     suite_add_test(test_int_array);
90     suite_add_test(test_double_array);
91     suite_add_test(test_struct);
92     suite_add_test(test_struct_array);
93 
94     return suite_run();
95 }
96 
97 
main(int argc,char * argv[])98 int main(int argc, char *argv[])
99 {
100     int  res = 0;
101 
102     res += suite_autoinit();
103 
104     exit(res);
105 }
106