1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3
4 #include "unity/unity.h"
5
6 static lv_obj_t * active_screen = NULL;
7 static lv_obj_t * textarea = NULL;
8
9 static const char * textarea_default_text = "";
10
setUp(void)11 void setUp(void)
12 {
13 active_screen = lv_scr_act();
14 textarea = lv_textarea_create(active_screen);
15 }
16
tearDown(void)17 void tearDown(void)
18 {
19 /* Function run after every test */
20 }
21
test_textarea_should_have_valid_documented_defualt_values(void)22 void test_textarea_should_have_valid_documented_defualt_values(void)
23 {
24 TEST_ASSERT(lv_textarea_get_cursor_click_pos(textarea));
25 TEST_ASSERT_EQUAL(0U, lv_textarea_get_one_line(textarea));
26 /* No placeholder text should be set on widget creation */
27 TEST_ASSERT_EQUAL_STRING(textarea_default_text, lv_textarea_get_placeholder_text(textarea));
28 TEST_ASSERT_EQUAL_STRING(textarea_default_text, lv_textarea_get_text(textarea));
29 }
30
31 /* When in password mode the lv_textarea_get_text function returns
32 * the actual text, not the bullet characters. */
test_textarea_should_return_actual_text_when_password_mode_is_enabled(void)33 void test_textarea_should_return_actual_text_when_password_mode_is_enabled(void)
34 {
35 const char * text = "Hello LVGL!";
36
37 lv_textarea_add_text(textarea, text);
38 lv_textarea_set_password_mode(textarea, true);
39
40 TEST_ASSERT_TRUE(lv_textarea_get_password_mode(textarea));
41 TEST_ASSERT_EQUAL_STRING(text, lv_textarea_get_text(textarea));
42 }
43
test_textarea_should_update_label_style_with_one_line_enabled(void)44 void test_textarea_should_update_label_style_with_one_line_enabled(void)
45 {
46 lv_textarea_t * txt_ptr = (lv_textarea_t *) textarea;
47
48 lv_textarea_add_text(textarea, "Hi");
49 lv_textarea_set_one_line(textarea, true);
50
51 lv_coord_t left_padding = lv_obj_get_style_pad_left(txt_ptr->label, LV_PART_MAIN);
52 lv_coord_t right_padding = lv_obj_get_style_pad_right(txt_ptr->label, LV_PART_MAIN);
53 lv_coord_t line_width = lv_obj_get_width(txt_ptr->label);
54 lv_coord_t expected_size = left_padding + right_padding + line_width;
55
56 TEST_ASSERT(lv_textarea_get_one_line(textarea));
57 TEST_ASSERT_EQUAL_UINT16(expected_size, lv_obj_get_width(txt_ptr->label));
58 TEST_ASSERT_EQUAL_UINT16(lv_pct(100), lv_obj_get_style_min_width(txt_ptr->label, LV_PART_MAIN));
59 }
60
test_textarea_cursor_click_pos_field_update(void)61 void test_textarea_cursor_click_pos_field_update(void)
62 {
63 lv_textarea_set_cursor_click_pos(textarea, false);
64
65 TEST_ASSERT_FALSE(lv_textarea_get_cursor_click_pos(textarea));
66 }
67
test_textarea_should_update_placeholder_text(void)68 void test_textarea_should_update_placeholder_text(void)
69 {
70 const char * new_placeholder = "LVGL Rocks!!!!!";
71 const char * text = "Hello LVGL!";
72
73 /* Allocating memory for placeholder text */
74 lv_textarea_set_placeholder_text(textarea, text);
75 TEST_ASSERT_EQUAL_STRING(text, lv_textarea_get_placeholder_text(textarea));
76
77 /* Reallocating memory for the new placeholder text */
78 lv_textarea_set_placeholder_text(textarea, new_placeholder);
79 TEST_ASSERT_EQUAL_STRING(new_placeholder, lv_textarea_get_placeholder_text(textarea));
80
81 /* Freeing allocated memory for placeholder text */
82 lv_textarea_set_placeholder_text(textarea, "");
83 TEST_ASSERT_EQUAL_STRING("", lv_textarea_get_placeholder_text(textarea));
84 }
85
test_textarea_should_keep_only_accepted_chars(void)86 void test_textarea_should_keep_only_accepted_chars(void)
87 {
88 const char * accepted_list = "abcd";
89
90 lv_textarea_set_accepted_chars(textarea, accepted_list);
91 lv_textarea_set_text(textarea, "abcde");
92
93 TEST_ASSERT_EQUAL_STRING(accepted_list, lv_textarea_get_text(textarea));
94 }
95
test_textarea_in_one_line_mode_should_ignore_line_break_characters(void)96 void test_textarea_in_one_line_mode_should_ignore_line_break_characters(void)
97 {
98 lv_textarea_set_one_line(textarea, true);
99
100 lv_textarea_add_char(textarea, '\n');
101 TEST_ASSERT_EQUAL_STRING(textarea_default_text, lv_textarea_get_text(textarea));
102
103 lv_textarea_add_char(textarea, '\r');
104 TEST_ASSERT_EQUAL_STRING(textarea_default_text, lv_textarea_get_text(textarea));
105 }
106
107 #endif
108