587a0e1f8a361df8bcc549c1dc6b9c5216c4374d
[tinc] / test / unit / test_utils.c
1 #include "unittest.h"
2 #include "../../src/utils.h"
3
4 static void test_int_to_str(const char *ref, int num) {
5         char *result = int_to_str(num);
6         assert_string_equal(ref, result);
7         free(result);
8 }
9
10 static void test_int_to_str_return_expected(void **state) {
11         (void)state;
12
13         test_int_to_str("0", 0);
14         test_int_to_str("-1337", -1337);
15         test_int_to_str("65535", 65535);
16 }
17
18 static void test_is_decimal_fail_empty(void **state) {
19         (void)state;
20
21         assert_false(is_decimal(NULL));
22         assert_false(is_decimal(""));
23 }
24
25 static void test_is_decimal_fail_hex(void **state) {
26         (void)state;
27
28         assert_false(is_decimal("DEADBEEF"));
29         assert_false(is_decimal("0xCAFE"));
30 }
31
32 static void test_is_decimal_fail_junk_suffix(void **state) {
33         (void)state;
34
35         assert_false(is_decimal("123foobar"));
36         assert_false(is_decimal("777 "));
37 }
38
39 static void test_is_decimal_pass_simple(void **state) {
40         (void)state;
41
42         assert_true(is_decimal("0"));
43         assert_true(is_decimal("123"));
44 }
45
46 static void test_is_decimal_pass_signs(void **state) {
47         (void)state;
48
49         assert_true(is_decimal("-123"));
50         assert_true(is_decimal("+123"));
51 }
52
53 static void test_is_decimal_pass_whitespace_prefix(void **state) {
54         (void)state;
55
56         assert_true(is_decimal(" \r\n\t 777"));
57 }
58
59 int main(void) {
60         const struct CMUnitTest tests[] = {
61                 cmocka_unit_test(test_int_to_str_return_expected),
62                 cmocka_unit_test(test_is_decimal_fail_empty),
63                 cmocka_unit_test(test_is_decimal_fail_hex),
64                 cmocka_unit_test(test_is_decimal_fail_junk_suffix),
65                 cmocka_unit_test(test_is_decimal_pass_simple),
66                 cmocka_unit_test(test_is_decimal_pass_signs),
67                 cmocka_unit_test(test_is_decimal_pass_whitespace_prefix),
68         };
69         return cmocka_run_group_tests(tests, NULL, NULL);
70 }