| #include "../../unity/unity.h" |
| #include <stdlib.h> |
| #include <string.h> |
| #include <stdio.h> |
| #include <limits.h> |
|
|
| |
| void setUp(void) { |
| |
| } |
| void tearDown(void) { |
| |
| } |
|
|
| |
|
|
| void test_hextobin_digits_0_through_9(void) { |
| for (int ic = '0'; ic <= '9'; ic++) { |
| unsigned char c = (unsigned char) ic; |
| int got = hextobin(c); |
| int expected = ic - '0'; |
| TEST_ASSERT_EQUAL_INT(expected, got); |
| } |
| } |
|
|
| void test_hextobin_lowercase_a_through_f(void) { |
| for (int ic = 'a'; ic <= 'f'; ic++) { |
| unsigned char c = (unsigned char) ic; |
| int got = hextobin(c); |
| int expected = 10 + (ic - 'a'); |
| TEST_ASSERT_EQUAL_INT(expected, got); |
| } |
| } |
|
|
| void test_hextobin_uppercase_A_through_F(void) { |
| for (int ic = 'A'; ic <= 'F'; ic++) { |
| unsigned char c = (unsigned char) ic; |
| int got = hextobin(c); |
| int expected = 10 + (ic - 'A'); |
| TEST_ASSERT_EQUAL_INT(expected, got); |
| } |
| } |
|
|
| void test_hextobin_non_hex_characters_return_c_minus_zero(void) { |
| |
| const unsigned char samples[] = { |
| (unsigned char) '/', |
| (unsigned char) 'g', |
| (unsigned char) 'G', |
| (unsigned char) ' ', |
| (unsigned char) ':', |
| (unsigned char) '\n' |
| }; |
| size_t n = sizeof(samples)/sizeof(samples[0]); |
| for (size_t i = 0; i < n; i++) { |
| unsigned char c = samples[i]; |
| int got = hextobin(c); |
| int expected = (int)c - '0'; |
| TEST_ASSERT_EQUAL_INT(expected, got); |
| } |
| } |
|
|
| void test_hextobin_boundary_like_values(void) { |
| |
| { |
| unsigned char c = (unsigned char) '\0'; |
| int got = hextobin(c); |
| int expected = (int)c - '0'; |
| TEST_ASSERT_EQUAL_INT(expected, got); |
| } |
| |
| { |
| unsigned char c = (unsigned char) 0xFF; |
| int got = hextobin(c); |
| int expected = (int)c - '0'; |
| TEST_ASSERT_EQUAL_INT(expected, got); |
| } |
| |
| { |
| unsigned char c1 = (unsigned char) 'a'; |
| unsigned char c2 = (unsigned char) 'f'; |
| unsigned char c3 = (unsigned char) 'A'; |
| unsigned char c4 = (unsigned char) 'F'; |
| TEST_ASSERT_EQUAL_INT(10, hextobin(c1)); |
| TEST_ASSERT_EQUAL_INT(15, hextobin(c2)); |
| TEST_ASSERT_EQUAL_INT(10, hextobin(c3)); |
| TEST_ASSERT_EQUAL_INT(15, hextobin(c4)); |
| } |
| } |
|
|
| |
| int main(void) { |
| UNITY_BEGIN(); |
| RUN_TEST(test_hextobin_digits_0_through_9); |
| RUN_TEST(test_hextobin_lowercase_a_through_f); |
| RUN_TEST(test_hextobin_uppercase_A_through_F); |
| RUN_TEST(test_hextobin_non_hex_characters_return_c_minus_zero); |
| RUN_TEST(test_hextobin_boundary_like_values); |
| return UNITY_END(); |
| } |