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