Initial commit.
[agg.git] / tests_dev.c
blob9813967f48e9090f27bef9b7f58abee77d69f2f4
1 #include <stdlib.h>
2 #include <string.h>
3 #include <stdio.h>
5 #include "text.h"
6 #include "layer.h"
7 #include "stack.h"
9 #define TEST(expr) test(#expr, expr)
10 void test(const char* expr, int res);
12 int test_text_is_empty();
13 int test_text_enable();
14 int test_text_disable();
15 int test_text_write();
16 int test_text_clear();
17 int test_text_append();
18 int test_text_fill();
20 int test_stack_set_top();
21 int test_stack_next_prev();
22 int test_stack_set_next();
24 int main()
26 TEST(test_text_is_empty());
27 TEST(test_text_enable());
28 TEST(test_text_disable());
29 TEST(test_text_write());
30 TEST(test_text_clear());
31 TEST(test_text_append());
32 TEST(test_text_fill());
34 TEST(test_stack_set_top());
35 TEST(test_stack_next_prev());
36 TEST(test_stack_set_next());
38 return 0;
41 void test(const char* expr, int res)
43 printf(" %-32s: %s\n", expr, res ? "OK" : "FAIL");
44 if (!res) exit(1);
49 int test_text_is_empty()
51 return strcmp("", text_get()) == 0;
54 int test_text_enable()
56 text_enable();
57 return 1;
60 int test_text_disable()
62 text_disable();
63 return 1;
66 int test_text_write()
68 text_buffer("foobar", 3);
69 return strcmp("foo", text_get()) == 0;
72 int test_text_clear()
74 text_enable();
75 if (!test_text_is_empty()) return 0;
77 test_text_write();
78 text_disable();
79 return test_text_is_empty();
82 int test_text_append()
84 text_buffer("foobar", 3);
85 text_buffer("foobar", 3);
86 return strcmp("foofoo", text_get()) == 0;
89 int test_text_fill()
91 /* buffer must be >= text buffer. */
92 #define BUFSIZE (1024 * 1024)
93 char buf[BUFSIZE];
94 memset(buf, ' ', BUFSIZE);
95 text_buffer(buf, BUFSIZE);
97 return strncmp(buf, text_get(), BUFSIZE) != 0;
102 int test_stack_set_top()
104 struct Layer mock;
105 mock.enter = (void (*)(const char*, const char**)) 0x7E57AB1E;
106 mock.leave = (void (*)(const char*)) 0xCA11AB1E;
108 stack_set(0, mock);
109 return stack_top()->enter == mock.enter
110 && stack_top()->leave == mock.leave;
113 int test_stack_next_prev()
115 struct Layer mock;
116 mock.enter = (void (*)(const char*, const char**)) 0x7E57AB1E;
117 mock.leave = (void (*)(const char*)) 0xCA11AB1E;
119 /* Mock still set from method before. */
121 stack_next();
122 stack_prev();
124 return stack_top()->enter == mock.enter
125 && stack_top()->leave == mock.leave;
128 int test_stack_set_next()
130 struct Layer mock;
131 mock.enter = (void (*)(const char*, const char**)) 0x7E57AB1E;
132 mock.leave = (void (*)(const char*)) 0xCA11AB1E;
134 stack_set(1, mock);
135 stack_next();
136 return stack_top()->enter == mock.enter
137 && stack_top()->leave == mock.leave;