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)18f17b710fSchristosvoid 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)26f17b710fSchristosvoid 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)34f17b710fSchristosvoid 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)42f17b710fSchristosvoid 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)49f17b710fSchristosvoid 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