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