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