| | #include "../../unity/unity.h" |
| | #include <stdint.h> |
| | #include <stdbool.h> |
| | #include <string.h> |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | static mcel_t make_mcel(uint32_t ch, int len) |
| | { |
| | mcel_t g; |
| | |
| | memset(&g, 0, sizeof(g)); |
| | g.ch = ch; |
| | g.len = len; |
| | return g; |
| | } |
| |
|
| | void setUp(void) { |
| | |
| | counting_mode = COUNT_COLUMNS; |
| | last_character_width = 0; |
| | } |
| |
|
| | void tearDown(void) { |
| | |
| | } |
| |
|
| | |
| | void test_adjust_column_columns_regular_char_increments_and_sets_last_width(void) |
| | { |
| | size_t start = 0; |
| | mcel_t g = make_mcel('a', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(1, col); |
| | TEST_ASSERT_EQUAL_INT(1, last_character_width); |
| | } |
| |
|
| | |
| | void test_adjust_column_backspace_decrements_by_last_width_when_column_gt0(void) |
| | { |
| | size_t start = 5; |
| | last_character_width = 3; |
| | mcel_t g = make_mcel('\b', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(2, col); |
| | |
| | TEST_ASSERT_EQUAL_INT(3, last_character_width); |
| | } |
| |
|
| | |
| | void test_adjust_column_backspace_no_effect_when_column_zero(void) |
| | { |
| | size_t start = 0; |
| | last_character_width = 4; |
| | mcel_t g = make_mcel('\b', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(0, col); |
| | TEST_ASSERT_EQUAL_INT(4, last_character_width); |
| | } |
| |
|
| | |
| | void test_adjust_column_carriage_return_resets_column(void) |
| | { |
| | size_t start = 10; |
| | mcel_t g = make_mcel('\r', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(0, col); |
| | } |
| |
|
| | |
| | void test_adjust_column_tab_from_zero_advances_to_8(void) |
| | { |
| | size_t start = 0; |
| | mcel_t g = make_mcel('\t', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(TAB_WIDTH, col); |
| | } |
| |
|
| | |
| | void test_adjust_column_tab_from_7_advances_to_8(void) |
| | { |
| | size_t start = 7; |
| | mcel_t g = make_mcel('\t', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(8, col); |
| | } |
| |
|
| | |
| | void test_adjust_column_tab_from_8_advances_to_16(void) |
| | { |
| | size_t start = 8; |
| | mcel_t g = make_mcel('\t', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(16, col); |
| | } |
| |
|
| | |
| | void test_adjust_column_characters_mode_counts_one_and_sets_last_width(void) |
| | { |
| | counting_mode = COUNT_CHARACTERS; |
| | size_t start = 3; |
| | |
| | mcel_t g = make_mcel('X', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(4, col); |
| | TEST_ASSERT_EQUAL_INT(1, last_character_width); |
| | } |
| |
|
| | |
| | void test_adjust_column_bytes_mode_counts_len_and_preserves_last_width(void) |
| | { |
| | counting_mode = COUNT_BYTES; |
| | last_character_width = 4; |
| | size_t start = 5; |
| | |
| | mcel_t g = make_mcel('\t', 1); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(6, col); |
| | TEST_ASSERT_EQUAL_INT(4, last_character_width); |
| | } |
| |
|
| | |
| | void test_adjust_column_bytes_mode_multibyte_len(void) |
| | { |
| | counting_mode = COUNT_BYTES; |
| | size_t start = 2; |
| | mcel_t g = make_mcel('x', 4); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(6, col); |
| | } |
| |
|
| | |
| | void test_adjust_column_invalid_codepoint_defaults_to_one(void) |
| | { |
| | counting_mode = COUNT_COLUMNS; |
| | size_t start = 10; |
| | |
| | mcel_t g = make_mcel(0xD800u, 3); |
| | size_t col = adjust_column(start, g); |
| | TEST_ASSERT_EQUAL_UINT64(11, col); |
| | TEST_ASSERT_EQUAL_INT(1, last_character_width); |
| | } |
| |
|
| | int main(void) |
| | { |
| | UNITY_BEGIN(); |
| | RUN_TEST(test_adjust_column_columns_regular_char_increments_and_sets_last_width); |
| | RUN_TEST(test_adjust_column_backspace_decrements_by_last_width_when_column_gt0); |
| | RUN_TEST(test_adjust_column_backspace_no_effect_when_column_zero); |
| | RUN_TEST(test_adjust_column_carriage_return_resets_column); |
| | RUN_TEST(test_adjust_column_tab_from_zero_advances_to_8); |
| | RUN_TEST(test_adjust_column_tab_from_7_advances_to_8); |
| | RUN_TEST(test_adjust_column_tab_from_8_advances_to_16); |
| | RUN_TEST(test_adjust_column_characters_mode_counts_one_and_sets_last_width); |
| | RUN_TEST(test_adjust_column_bytes_mode_counts_len_and_preserves_last_width); |
| | RUN_TEST(test_adjust_column_bytes_mode_multibyte_len); |
| | RUN_TEST(test_adjust_column_invalid_codepoint_defaults_to_one); |
| | return UNITY_END(); |
| | } |