/work/auto_tests/version_test.c
Line | Count | Source |
1 | | #include "../toxcore/tox.h" |
2 | | #include "check_compat.h" |
3 | | |
4 | | #define CHECK(major, minor, patch, expected) \ |
5 | 156 | do_check(TOX_VERSION_MAJOR, TOX_VERSION_MINOR, TOX_VERSION_PATCH, \ |
6 | 156 | major, minor, patch, \ |
7 | 156 | TOX_VERSION_IS_API_COMPATIBLE(major, minor, patch), expected) |
8 | | |
9 | | static void do_check(int lib_major, int lib_minor, int lib_patch, |
10 | | int cli_major, int cli_minor, int cli_patch, |
11 | | bool actual, bool expected) |
12 | 156 | { |
13 | 156 | ck_assert_msg(actual == expected, |
14 | 156 | "Client version %d.%d.%d is%s compatible with library version %d.%d.%d, but it should%s be\n", |
15 | 156 | cli_major, cli_minor, cli_patch, actual ? "" : " not", |
16 | 156 | lib_major, lib_minor, lib_patch, expected ? "" : " not"); |
17 | 156 | } |
18 | | |
19 | | #undef TOX_VERSION_MAJOR |
20 | | #undef TOX_VERSION_MINOR |
21 | | #undef TOX_VERSION_PATCH |
22 | | |
23 | | int main(void) |
24 | 4 | { |
25 | 60 | #define TOX_VERSION_MAJOR 0 |
26 | 52 | #define TOX_VERSION_MINOR 0 |
27 | 36 | #define TOX_VERSION_PATCH 4 |
28 | | // Tox versions from 0.0.* are only compatible with themselves. |
29 | 4 | CHECK(0, 0, 0, false); |
30 | 4 | CHECK(0, 0, 3, false); |
31 | 4 | CHECK(0, 0, 4, true); |
32 | 4 | CHECK(0, 0, 5, false); |
33 | 4 | CHECK(1, 0, 4, false); |
34 | 4 | #undef TOX_VERSION_MAJOR |
35 | 4 | #undef TOX_VERSION_MINOR |
36 | 4 | #undef TOX_VERSION_PATCH |
37 | | |
38 | 156 | #define TOX_VERSION_MAJOR 0 |
39 | 116 | #define TOX_VERSION_MINOR 1 |
40 | 52 | #define TOX_VERSION_PATCH 4 |
41 | | // Tox versions from 0.1.* are only compatible with themselves or 0.1.<* |
42 | 4 | CHECK(0, 0, 0, false); |
43 | 4 | CHECK(0, 0, 4, false); |
44 | 4 | CHECK(0, 0, 5, false); |
45 | 4 | CHECK(0, 1, 0, true); |
46 | 4 | CHECK(0, 1, 4, true); |
47 | 4 | CHECK(0, 1, 5, false); |
48 | 4 | CHECK(0, 2, 0, false); |
49 | 4 | CHECK(0, 2, 4, false); |
50 | 4 | CHECK(0, 2, 5, false); |
51 | 4 | CHECK(1, 0, 0, false); |
52 | 4 | CHECK(1, 0, 4, false); |
53 | 4 | CHECK(1, 0, 5, false); |
54 | 4 | CHECK(1, 1, 4, false); |
55 | 4 | #undef TOX_VERSION_MAJOR |
56 | 4 | #undef TOX_VERSION_MINOR |
57 | 4 | #undef TOX_VERSION_PATCH |
58 | | |
59 | 84 | #define TOX_VERSION_MAJOR 1 |
60 | 32 | #define TOX_VERSION_MINOR 0 |
61 | 32 | #define TOX_VERSION_PATCH 4 |
62 | | // Beyond 0.*.* Tox is comfortable with any lower version within their major |
63 | 4 | CHECK(0, 0, 4, false); |
64 | 4 | CHECK(1, 0, 0, true); |
65 | 4 | CHECK(1, 0, 1, true); |
66 | 4 | CHECK(1, 0, 4, true); |
67 | 4 | CHECK(1, 0, 5, false); |
68 | 4 | CHECK(1, 1, 0, false); |
69 | 4 | CHECK(2, 0, 0, false); |
70 | 4 | CHECK(2, 0, 4, false); |
71 | 4 | #undef TOX_VERSION_MAJOR |
72 | 4 | #undef TOX_VERSION_MINOR |
73 | 4 | #undef TOX_VERSION_PATCH |
74 | | |
75 | 132 | #define TOX_VERSION_MAJOR 1 |
76 | 52 | #define TOX_VERSION_MINOR 1 |
77 | 52 | #define TOX_VERSION_PATCH 4 |
78 | 4 | CHECK(0, 0, 4, false); |
79 | 4 | CHECK(1, 0, 0, true); |
80 | 4 | CHECK(1, 0, 4, true); |
81 | 4 | CHECK(1, 0, 5, true); |
82 | 4 | CHECK(1, 1, 0, true); |
83 | 4 | CHECK(1, 1, 1, true); |
84 | 4 | CHECK(1, 1, 4, true); |
85 | 4 | CHECK(1, 1, 5, false); |
86 | 4 | CHECK(1, 2, 0, false); |
87 | 4 | CHECK(1, 2, 4, false); |
88 | 4 | CHECK(1, 2, 5, false); |
89 | 4 | CHECK(2, 0, 0, false); |
90 | 4 | CHECK(2, 1, 4, false); |
91 | 4 | #undef TOX_VERSION_MAJOR |
92 | 4 | #undef TOX_VERSION_MINOR |
93 | 4 | #undef TOX_VERSION_PATCH |
94 | | |
95 | 4 | return 0; |
96 | 4 | } |