xref: /netbsd-src/external/bsd/ntp/dist/tests/libntp/hextoint.c (revision cdfa2a7ef92791ba9db70a584a1d904730e6fb46)
1*cdfa2a7eSchristos /*	$NetBSD: hextoint.c,v 1.2 2020/05/25 20:47:36 christos Exp $	*/
2067f5680Schristos 
3f17b710fSchristos #include "config.h"
4f17b710fSchristos 
5f17b710fSchristos #include "ntp_stdlib.h"
6f17b710fSchristos #include "ntp_calendar.h"
7f17b710fSchristos #include "ntp_fp.h"
8f17b710fSchristos 
9f17b710fSchristos #include "unity.h"
10f17b710fSchristos 
11a6f3f22fSchristos void test_SingleDigit(void);
12a6f3f22fSchristos void test_MultipleDigits(void);
13a6f3f22fSchristos void test_MaxUnsigned(void);
14a6f3f22fSchristos void test_Overflow(void);
15a6f3f22fSchristos void test_IllegalChar(void);
16a6f3f22fSchristos 
17f17b710fSchristos 
test_SingleDigit(void)18f17b710fSchristos void test_SingleDigit(void) {
19f17b710fSchristos         const char *str = "a"; // 10 decimal
20f17b710fSchristos         u_long actual;
21f17b710fSchristos 
22f17b710fSchristos         TEST_ASSERT_TRUE(hextoint(str, &actual));
23f17b710fSchristos         TEST_ASSERT_EQUAL(10, actual);
24f17b710fSchristos }
25f17b710fSchristos 
test_MultipleDigits(void)26f17b710fSchristos void test_MultipleDigits(void) {
27f17b710fSchristos         const char *str = "8F3"; // 2291 decimal
28f17b710fSchristos         u_long actual;
29f17b710fSchristos 
30f17b710fSchristos         TEST_ASSERT_TRUE(hextoint(str, &actual));
31f17b710fSchristos         TEST_ASSERT_EQUAL(2291, actual);
32f17b710fSchristos }
33f17b710fSchristos 
test_MaxUnsigned(void)34f17b710fSchristos void test_MaxUnsigned(void) {
35f17b710fSchristos         const char *str = "ffffffff"; // 4294967295 decimal
36f17b710fSchristos         u_long actual;
37f17b710fSchristos 
38f17b710fSchristos         TEST_ASSERT_TRUE(hextoint(str, &actual));
39f17b710fSchristos         TEST_ASSERT_EQUAL(4294967295UL, actual);
40f17b710fSchristos }
41f17b710fSchristos 
test_Overflow(void)42f17b710fSchristos void test_Overflow(void) {
43f17b710fSchristos         const char *str = "100000000"; // Overflow by 1
44f17b710fSchristos         u_long actual;
45f17b710fSchristos 
46f17b710fSchristos         TEST_ASSERT_FALSE(hextoint(str, &actual));
47f17b710fSchristos }
48f17b710fSchristos 
test_IllegalChar(void)49f17b710fSchristos void test_IllegalChar(void) {
50f17b710fSchristos         const char *str = "5gb"; // Illegal character g
51f17b710fSchristos         u_long actual;
52f17b710fSchristos 
53f17b710fSchristos         TEST_ASSERT_FALSE(hextoint(str, &actual));
54f17b710fSchristos }
55f17b710fSchristos 
56