]> git.lizzy.rs Git - nothing.git/blob - test/test.h
Merge pull request #304 from tsoding/148
[nothing.git] / test / test.h
1 #ifndef TEST_H_
2 #define TEST_H_
3
4 #define TEST_RUN(name)                          \
5     if (name() < 0) {                           \
6         return -1;                              \
7     }
8
9 #define TEST(name)                              \
10     static int name##_body(void);               \
11     static int name(void) {                     \
12         printf("%s() ...", #name);              \
13         if (name##_body() == 0) {               \
14             printf(" OK\n");                    \
15             return 0;                           \
16         } else {                                \
17             printf(" FAILED\n");                \
18             return -1;                          \
19         }                                       \
20     }                                           \
21     static int name##_body(void)
22
23 #define ASSERT_STREQN(expected, actual, n)                              \
24     if (strncmp(expected, actual, n) != 0) {                            \
25         fprintf(stderr, "\n%s:%d: ASSERT_STREQN: \n",                   \
26                 __FILE__, __LINE__);                                    \
27         fprintf(stderr, "  Expected: ");                                \
28         fwrite(expected, sizeof(char), n, stderr);                      \
29         fprintf(stderr, "\n");                                          \
30         fprintf(stderr, "  Actual: ");                                  \
31         fwrite(actual, sizeof(char), n, stderr);                        \
32         fprintf(stderr, "\n");                                          \
33         return -1;                                                      \
34     }
35
36 #define TEST_SUITE(name)                        \
37     static int name##_body(void);               \
38     static int name(void) {                     \
39         if (name##_body() < 0) {                \
40             return -1;                          \
41         }                                       \
42         return 0;                               \
43     }                                           \
44     static int name##_body(void)
45
46 #define TEST_MAIN()                             \
47     static int main_body(void);                 \
48     int main(void) {                            \
49         if (main_body() < 0) {                  \
50             return -1;                          \
51         }                                       \
52         return 0;                               \
53     }                                           \
54     static int main_body(void)
55
56 #endif  // TEST_H_