1 
2 #include <assert.h>
3 #include <stdlib.h>
4 #include <stdint.h>
5 #include <stdio.h>
6 
7 #ifndef SYSCONFDIR
8 // Bypass compilation error due to -DSYSCONFDIR not provided
9 #define SYSCONFDIR
10 #endif
11 
12 #include "config.c"
13 
14 static void execute_test(const char *input, const char *key,
15 			 const char *expected)
16 {
17 	struct config *ctx;
18 	const char *found;
19 	char *buf;
20 
21 	ctx = calloc(1, sizeof(*ctx));
22 	buf = strdup(input);
23 	config_parse(ctx, buf);
24 	free(buf);
25 	found = config_get_value(ctx, key);
26 	if (!expected) {
27 		assert(!found);
28 	}
29 	if (expected) {
30 		assert(found);
31 		assert(!strcmp(expected, found));
32 	}
33 	config_fini(ctx);
34 }
35 
36 static void test_config_parse_basic(void)
37 {
38 	execute_test("tty = ttyS0", "tty", "ttyS0");
39 }
40 
41 static void test_config_parse_no_key(void)
42 {
43 	execute_test("= ttyS0", "tty", NULL);
44 }
45 
46 static void test_config_parse_no_value(void)
47 {
48 	execute_test("tty =", "tty", NULL);
49 }
50 
51 static void test_config_parse_no_operator(void)
52 {
53 	execute_test("tty ttyS0", "tty", NULL);
54 }
55 
56 static void test_config_parse_no_spaces(void)
57 {
58 	execute_test("tty=ttyS0", "tty", "ttyS0");
59 }
60 
61 static void test_config_parse_empty(void)
62 {
63 	execute_test("", "tty", NULL);
64 }
65 
66 int main(void)
67 {
68 	test_config_parse_basic();
69 	test_config_parse_no_key();
70 	test_config_parse_no_value();
71 	test_config_parse_no_operator();
72 	test_config_parse_no_spaces();
73 	test_config_parse_empty();
74 
75 	return EXIT_SUCCESS;
76 }
77