acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
test_txt.c (4875B)
1 #if LV_BUILD_TEST 2 #include "../lvgl.h" 3 4 #include "unity/unity.h" 5 6 static const char color_cmd = LV_TXT_COLOR_CMD[0]; 7 8 void test_txt_should_identify_valid_start_of_command(void) 9 { 10 uint32_t character = color_cmd; 11 lv_text_cmd_state_t state = LV_TEXT_CMD_STATE_WAIT; 12 13 bool is_cmd = _lv_txt_is_cmd(&state, character); 14 15 TEST_ASSERT_TRUE(is_cmd); 16 TEST_ASSERT_EQUAL_UINT8(state, LV_TEXT_CMD_STATE_PAR); 17 } 18 19 void test_txt_should_identify_invalid_start_of_command(void) 20 { 21 uint32_t character = '$'; 22 lv_text_cmd_state_t state = LV_TEXT_CMD_STATE_WAIT; 23 24 bool is_cmd = _lv_txt_is_cmd(&state, character); 25 26 TEST_ASSERT_FALSE(is_cmd); 27 TEST_ASSERT_EQUAL_UINT8(state, LV_TEXT_CMD_STATE_WAIT); 28 } 29 30 void test_txt_should_identify_scaped_command_in_parameter(void) 31 { 32 uint32_t character = color_cmd; 33 lv_text_cmd_state_t state = LV_TEXT_CMD_STATE_PAR; 34 35 bool is_cmd = _lv_txt_is_cmd(&state, character); 36 37 TEST_ASSERT_FALSE(is_cmd); 38 TEST_ASSERT_EQUAL_UINT8(state, LV_TEXT_CMD_STATE_WAIT); 39 } 40 41 void test_txt_should_skip_color_parameter_in_parameter(void) 42 { 43 uint32_t character = '$'; 44 lv_text_cmd_state_t state = LV_TEXT_CMD_STATE_PAR; 45 46 bool is_cmd = _lv_txt_is_cmd(&state, character); 47 48 TEST_ASSERT_TRUE(is_cmd); 49 TEST_ASSERT_EQUAL_UINT8(state, LV_TEXT_CMD_STATE_PAR); 50 } 51 52 void test_txt_should_reset_state_when_receiving_color_cmd_while_processing_commands(void) 53 { 54 uint32_t character = color_cmd; 55 lv_text_cmd_state_t state = LV_TEXT_CMD_STATE_IN; 56 57 bool is_cmd = _lv_txt_is_cmd(&state, character); 58 59 TEST_ASSERT_TRUE(is_cmd); 60 TEST_ASSERT_EQUAL_UINT8(state, LV_TEXT_CMD_STATE_WAIT); 61 } 62 63 void test_txt_should_identify_space_after_parameter(void) 64 { 65 uint32_t character = ' '; 66 lv_text_cmd_state_t state = LV_TEXT_CMD_STATE_PAR; 67 68 bool is_cmd = _lv_txt_is_cmd(&state, character); 69 70 TEST_ASSERT_TRUE(is_cmd); 71 TEST_ASSERT_EQUAL_UINT8(state, LV_TEXT_CMD_STATE_IN); 72 } 73 74 void test_txt_should_insert_string_into_another(void) 75 { 76 const char * msg = "Hello "; 77 const char * suffix = "World"; 78 char target[20] = {0}; 79 size_t msg_len = strlen(msg); 80 81 strcpy(target, msg); 82 83 _lv_txt_ins(target, msg_len, suffix); 84 85 TEST_ASSERT_EQUAL_STRING("Hello World", target); 86 } 87 88 void test_txt_should_handle_null_pointers_when_inserting(void) 89 { 90 const char * msg = "Hello "; 91 char target[20] = {0}; 92 size_t msg_len = strlen(msg); 93 94 strcpy(target, msg); 95 96 _lv_txt_ins(target, msg_len, NULL); 97 98 TEST_ASSERT_EQUAL_STRING("Hello ", target); 99 } 100 101 void test_txt_cut_should_handle_null_pointer_to_txt(void) 102 { 103 _lv_txt_cut(NULL, 0, 6); 104 } 105 106 void test_txt_cut_happy_path(void) 107 { 108 char msg[] = "Hello World"; 109 110 _lv_txt_cut(msg, 0, 6); 111 112 TEST_ASSERT_EQUAL_STRING("World", msg); 113 } 114 115 void test_txt_cut_should_handle_len_longer_than_string_length(void) 116 { 117 char msg[] = "Hello World"; 118 119 _lv_txt_cut(msg, 0, 30); 120 121 TEST_ASSERT_EQUAL_UINT8(msg[0], 0x00); 122 } 123 124 void test_txt_get_encoded_next_should_decode_valid_ascii(void) 125 { 126 char msg[] = "Hello World!"; 127 uint32_t result = 0; 128 129 result = _lv_txt_encoded_next(msg, NULL); 130 131 TEST_ASSERT_EQUAL_UINT32((uint32_t) 'H', result); 132 } 133 134 void test_txt_get_encoded_next_detect_valid_2_byte_input(void) 135 { 136 char msg[] = "\xc3\xb1"; 137 uint32_t result = 0; 138 139 result = _lv_txt_encoded_next(msg, NULL); 140 141 TEST_ASSERT_EQUAL_UINT32(241, result); 142 } 143 144 void test_txt_get_encoded_next_detect_invalid_2_byte_input(void) 145 { 146 char msg[] = "\xc3\x28"; 147 uint32_t result = 0; 148 149 result = _lv_txt_encoded_next(msg, NULL); 150 151 TEST_ASSERT_EQUAL_UINT32(0, result); 152 } 153 154 void test_txt_get_encoded_next_detect_valid_3_byte_input(void) 155 { 156 char msg[] = "\xe2\x82\xa1"; 157 uint32_t result = 0; 158 159 result = _lv_txt_encoded_next(msg, NULL); 160 161 TEST_ASSERT_EQUAL_UINT32(8353, result); 162 } 163 164 void test_txt_get_encoded_next_detect_invalid_3_byte_input(void) 165 { 166 char msg[] = "\xe2\x28\xa1"; 167 uint32_t result = 0; 168 169 result = _lv_txt_encoded_next(msg, NULL); 170 171 TEST_ASSERT_EQUAL_UINT32(0, result); 172 } 173 174 void test_txt_get_encoded_next_detect_valid_4_byte_input(void) 175 { 176 char msg[] = "\xf0\x90\x8c\xbc"; 177 uint32_t result = 0; 178 179 result = _lv_txt_encoded_next(msg, NULL); 180 181 TEST_ASSERT_EQUAL_UINT32(66364, result); 182 } 183 184 void test_txt_get_encoded_next_detect_invalid_4_byte_input(void) 185 { 186 char msg[] = "\xf0\x28\x8c\x28"; 187 uint32_t result = 0; 188 189 result = _lv_txt_encoded_next(msg, NULL); 190 191 TEST_ASSERT_EQUAL_UINT32(0, result); 192 } 193 194 /* See #2615 for more information */ 195 void test_txt_next_line_should_handle_empty_string(void) 196 { 197 const lv_font_t * font_ptr = NULL; 198 lv_coord_t letter_space = 0; 199 lv_coord_t max_width = 0; 200 lv_text_flag_t flag = LV_TEXT_FLAG_NONE; 201 202 uint32_t next_line = _lv_txt_get_next_line("", font_ptr, letter_space, max_width, NULL, flag); 203 204 TEST_ASSERT_EQUAL_UINT32(0, next_line); 205 } 206 207 #endif