1*cdfa2a7eSchristos /* $NetBSD: octtoint.c,v 1.2 2020/05/25 20:47:36 christos Exp $ */
2067f5680Schristos
3f17b710fSchristos #include "config.h"
4f17b710fSchristos
5f17b710fSchristos #include "ntp_stdlib.h"
6f17b710fSchristos
7f17b710fSchristos #include "unity.h"
8f17b710fSchristos
9a6f3f22fSchristos
10a6f3f22fSchristos void test_SingleDigit(void);
11a6f3f22fSchristos void test_MultipleDigits(void);
12a6f3f22fSchristos void test_Zero(void);
13a6f3f22fSchristos void test_MaximumUnsigned32bit(void);
14a6f3f22fSchristos void test_Overflow(void);
15a6f3f22fSchristos void test_IllegalCharacter(void);
16a6f3f22fSchristos void test_IllegalDigit(void);
17a6f3f22fSchristos
18a6f3f22fSchristos
194c290c01Schristos void
test_SingleDigit(void)204c290c01Schristos test_SingleDigit(void)
214c290c01Schristos {
22f17b710fSchristos const char* str = "5";
23f17b710fSchristos u_long actual;
24f17b710fSchristos
25f17b710fSchristos TEST_ASSERT_TRUE(octtoint(str, &actual));
26f17b710fSchristos TEST_ASSERT_EQUAL(5, actual);
274c290c01Schristos
284c290c01Schristos return;
29f17b710fSchristos }
30f17b710fSchristos
314c290c01Schristos void
test_MultipleDigits(void)324c290c01Schristos test_MultipleDigits(void)
334c290c01Schristos {
34f17b710fSchristos const char* str = "271";
35f17b710fSchristos u_long actual;
36f17b710fSchristos
37f17b710fSchristos TEST_ASSERT_TRUE(octtoint(str, &actual));
38f17b710fSchristos TEST_ASSERT_EQUAL(185, actual);
39f17b710fSchristos
404c290c01Schristos return;
41f17b710fSchristos }
42f17b710fSchristos
434c290c01Schristos void
test_Zero(void)444c290c01Schristos test_Zero(void)
454c290c01Schristos {
46f17b710fSchristos const char* str = "0";
47f17b710fSchristos u_long actual;
48f17b710fSchristos
49f17b710fSchristos TEST_ASSERT_TRUE(octtoint(str, &actual));
50f17b710fSchristos TEST_ASSERT_EQUAL(0, actual);
51f17b710fSchristos
524c290c01Schristos return;
53f17b710fSchristos }
54f17b710fSchristos
554c290c01Schristos void
test_MaximumUnsigned32bit(void)564c290c01Schristos test_MaximumUnsigned32bit(void)
574c290c01Schristos {
58f17b710fSchristos const char* str = "37777777777";
59f17b710fSchristos u_long actual;
60f17b710fSchristos
61f17b710fSchristos TEST_ASSERT_TRUE(octtoint(str, &actual));
62f17b710fSchristos TEST_ASSERT_EQUAL(4294967295UL, actual);
63f17b710fSchristos
644c290c01Schristos return;
65f17b710fSchristos }
66f17b710fSchristos
674c290c01Schristos void
test_Overflow(void)684c290c01Schristos test_Overflow(void)
694c290c01Schristos {
70f17b710fSchristos const char* str = "40000000000";
71f17b710fSchristos u_long actual;
72f17b710fSchristos
73f17b710fSchristos TEST_ASSERT_FALSE(octtoint(str, &actual));
74f17b710fSchristos
754c290c01Schristos return;
76f17b710fSchristos }
77f17b710fSchristos
784c290c01Schristos void
test_IllegalCharacter(void)794c290c01Schristos test_IllegalCharacter(void)
804c290c01Schristos {
81f17b710fSchristos const char* str = "5ac2";
82f17b710fSchristos u_long actual;
83f17b710fSchristos
84f17b710fSchristos TEST_ASSERT_FALSE(octtoint(str, &actual));
85f17b710fSchristos
864c290c01Schristos return;
87f17b710fSchristos }
88f17b710fSchristos
894c290c01Schristos void
test_IllegalDigit(void)904c290c01Schristos test_IllegalDigit(void)
914c290c01Schristos {
92f17b710fSchristos const char* str = "5283";
93f17b710fSchristos u_long actual;
94f17b710fSchristos
95f17b710fSchristos TEST_ASSERT_FALSE(octtoint(str, &actual));
96f17b710fSchristos
974c290c01Schristos return;
98f17b710fSchristos }
99