1290001Sglebius#include "config.h"
2290001Sglebius
3290001Sglebius#include "ntp_stdlib.h"
4290001Sglebius#include "ntp_calendar.h"
5290001Sglebius#include "ntp_fp.h"
6290001Sglebius
7290001Sglebius#include "unity.h"
8290001Sglebius
9290001Sglebiusvoid test_SingleDigit(void);
10290001Sglebiusvoid test_MultipleDigits(void);
11290001Sglebiusvoid test_MaxUnsigned(void);
12290001Sglebiusvoid test_Overflow(void);
13290001Sglebiusvoid test_IllegalChar(void);
14290001Sglebius
15290001Sglebius
16290001Sglebiusvoid test_SingleDigit(void) {
17290001Sglebius        const char *str = "a"; // 10 decimal
18290001Sglebius        u_long actual;
19290001Sglebius
20290001Sglebius        TEST_ASSERT_TRUE(hextoint(str, &actual));
21290001Sglebius        TEST_ASSERT_EQUAL(10, actual);
22290001Sglebius}
23290001Sglebius
24290001Sglebiusvoid test_MultipleDigits(void) {
25290001Sglebius        const char *str = "8F3"; // 2291 decimal
26290001Sglebius        u_long actual;
27290001Sglebius
28290001Sglebius        TEST_ASSERT_TRUE(hextoint(str, &actual));
29290001Sglebius        TEST_ASSERT_EQUAL(2291, actual);
30290001Sglebius}
31290001Sglebius
32290001Sglebiusvoid test_MaxUnsigned(void) {
33290001Sglebius        const char *str = "ffffffff"; // 4294967295 decimal
34290001Sglebius        u_long actual;
35290001Sglebius
36290001Sglebius        TEST_ASSERT_TRUE(hextoint(str, &actual));
37290001Sglebius        TEST_ASSERT_EQUAL(4294967295UL, actual);
38290001Sglebius}
39290001Sglebius
40290001Sglebiusvoid test_Overflow(void) {
41290001Sglebius        const char *str = "100000000"; // Overflow by 1
42290001Sglebius        u_long actual;
43290001Sglebius
44290001Sglebius        TEST_ASSERT_FALSE(hextoint(str, &actual));
45290001Sglebius}
46290001Sglebius
47290001Sglebiusvoid test_IllegalChar(void) {
48290001Sglebius        const char *str = "5gb"; // Illegal character g
49290001Sglebius        u_long actual;
50290001Sglebius
51290001Sglebius        TEST_ASSERT_FALSE(hextoint(str, &actual));
52290001Sglebius}
53290001Sglebius
54