|
|
#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(); |
|
|
} |