1 #define MAIN(x) version##x
5 int main(int argc
, char *argv
[]) /* NOLINT(misc-definitions-in-headers) */
8 #if defined(__cplusplus)
9 a::version v000
= A_VERSION_0();
10 a::version v100
= A_VERSION_1(1);
11 a::version v010
= A_VERSION_2(0, 1);
12 a::version v001
= A_VERSION_3(0, 0, 1);
15 TEST_BUG(v000
== v000
);
16 TEST_BUG(v000
!= v001
);
18 TEST_BUG(v000
< v001
);
19 TEST_BUG(v001
< v010
);
20 TEST_BUG(v010
< v100
);
22 TEST_BUG(v001
> v000
);
23 TEST_BUG(v010
> v001
);
24 TEST_BUG(v100
> v010
);
26 TEST_BUG(v000
<= v001
);
27 TEST_BUG(v001
<= v001
);
28 TEST_BUG(v001
<= v010
);
29 TEST_BUG(v010
<= v010
);
30 TEST_BUG(v010
<= v100
);
31 TEST_BUG(v100
<= v100
);
33 TEST_BUG(v001
>= v000
);
34 TEST_BUG(v001
>= v001
);
35 TEST_BUG(v010
>= v001
);
36 TEST_BUG(v010
>= v010
);
37 TEST_BUG(v100
>= v010
);
38 TEST_BUG(v100
>= v100
);
40 #else /* !__cplusplus */
41 a_version v000
= A_VERSION_0();
42 a_version v100
= A_VERSION_1(1);
43 a_version v010
= A_VERSION_2(0, 1);
44 a_version v001
= A_VERSION_3(0, 0, 1);
46 TEST_BUG(a_version_eq(&v000
, &v000
));
47 TEST_BUG(a_version_ne(&v000
, &v001
));
49 TEST_BUG(a_version_lt(&v000
, &v001
));
50 TEST_BUG(a_version_lt(&v001
, &v010
));
51 TEST_BUG(a_version_lt(&v010
, &v100
));
53 TEST_BUG(a_version_gt(&v001
, &v000
));
54 TEST_BUG(a_version_gt(&v010
, &v001
));
55 TEST_BUG(a_version_gt(&v100
, &v010
));
57 TEST_BUG(a_version_le(&v000
, &v001
));
58 TEST_BUG(a_version_le(&v001
, &v001
));
59 TEST_BUG(a_version_le(&v001
, &v010
));
60 TEST_BUG(a_version_le(&v010
, &v010
));
61 TEST_BUG(a_version_le(&v010
, &v100
));
62 TEST_BUG(a_version_le(&v100
, &v100
));
64 TEST_BUG(a_version_ge(&v001
, &v000
));
65 TEST_BUG(a_version_ge(&v001
, &v001
));
66 TEST_BUG(a_version_ge(&v010
, &v001
));
67 TEST_BUG(a_version_ge(&v010
, &v010
));
68 TEST_BUG(a_version_ge(&v100
, &v010
));
69 TEST_BUG(a_version_ge(&v100
, &v100
));
71 TEST_BUG(a_version_cmp(&v010
, &v100
) < 0);
72 TEST_BUG(a_version_cmp(&v001
, &v010
) < 0);
73 TEST_BUG(a_version_cmp(&v000
, &v001
) < 0);
74 TEST_BUG(a_version_cmp(&v100
, &v010
) > 0);
75 TEST_BUG(a_version_cmp(&v010
, &v001
) > 0);
76 TEST_BUG(a_version_cmp(&v001
, &v000
) > 0);
77 TEST_BUG(a_version_cmp(&v000
, &v000
) == 0);
78 #endif /* __cplusplus */
79 #if defined(__cplusplus) && (__cplusplus > 201100L)
80 A_BUILD_ASSERT(std::is_pod
<a_version
>::value
);
81 #endif /* __cplusplus */
82 for (i
= 0; i
< argc
; ++i
)
85 a_version ctx
= A_VERSION_0();
86 a_version_parse(&ctx
, argv
[i
]);
87 a_version_tostr(&ctx
, str
, sizeof(str
));
88 debug("parse \"%s\" -> %s\n", argv
[i
], str
);
91 debug("version %u.%u.%u+%" PRIu32
"\n", a_version_major
, a_version_minor
, a_version_patch
, a_version_tweak
);
92 TEST_BUG(A_VERSION_CHECK() == 0);