1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3 
4 #include "unity/unity.h"
5 
6 #include "lv_test_helpers.h"
7 #include "lv_test_indev.h"
8 
9 void test_checkbox_creation_successfull(void);
10 void test_checkbox_should_call_event_handler_on_click_when_enabled(void);
11 void test_checkbox_should_have_default_text_when_created(void);
12 void test_checkbox_should_return_dinamically_allocated_text(void);
13 void test_checkbox_should_allocate_memory_for_static_text(void);
14 
15 static lv_obj_t *active_screen = NULL;
16 static lv_obj_t *checkbox = NULL;
17 
18 static volatile bool event_called = false;
19 
event_handler(lv_event_t * e)20 static void event_handler(lv_event_t *e)
21 {
22     lv_event_code_t code = lv_event_get_code(e);
23 
24     if (LV_EVENT_VALUE_CHANGED == code) {
25         event_called = true;
26     }
27 }
28 
test_checkbox_creation_successfull(void)29 void test_checkbox_creation_successfull(void)
30 {
31     active_screen = lv_scr_act();
32     checkbox = lv_checkbox_create(active_screen);
33 
34     TEST_ASSERT_NOT_NULL(checkbox);
35 }
36 
test_checkbox_should_call_event_handler_on_click_when_enabled(void)37 void test_checkbox_should_call_event_handler_on_click_when_enabled(void)
38 {
39     active_screen = lv_scr_act();
40     checkbox = lv_checkbox_create(active_screen);
41 
42     lv_obj_add_state(checkbox, LV_STATE_CHECKED);
43     lv_obj_add_event_cb(checkbox, event_handler, LV_EVENT_ALL, NULL);
44 
45     lv_test_mouse_click_at(checkbox->coords.x1, checkbox->coords.y1);
46 
47     TEST_ASSERT_TRUE(event_called);
48 
49     event_called = false;
50 }
51 
test_checkbox_should_have_default_text_when_created(void)52 void test_checkbox_should_have_default_text_when_created(void)
53 {
54     const char *default_text = "Check box";
55 
56     active_screen = lv_scr_act();
57     checkbox = lv_checkbox_create(active_screen);
58 
59     TEST_ASSERT_EQUAL_STRING(default_text, lv_checkbox_get_text(checkbox));
60     TEST_ASSERT_NOT_NULL(lv_checkbox_get_text(checkbox));
61 }
62 
test_checkbox_should_return_dinamically_allocated_text(void)63 void test_checkbox_should_return_dinamically_allocated_text(void)
64 {
65     const char *message = "Hello World!";
66 
67     active_screen = lv_scr_act();
68     checkbox = lv_checkbox_create(active_screen);
69 
70     lv_checkbox_set_text(checkbox, message);
71 
72     TEST_ASSERT_EQUAL_STRING(message, lv_checkbox_get_text(checkbox));
73     TEST_ASSERT_NOT_NULL(lv_checkbox_get_text(checkbox));
74 }
75 
test_checkbox_should_allocate_memory_for_static_text(void)76 void test_checkbox_should_allocate_memory_for_static_text(void)
77 {
78     uint32_t initial_available_memory = 0;
79     const char *static_text = "Keep me while you exist";
80 
81     lv_mem_monitor_t m1;
82     lv_mem_monitor(&m1);
83 
84     active_screen = lv_scr_act();
85     checkbox = lv_checkbox_create(active_screen);
86 
87     initial_available_memory = m1.free_size;
88 
89     lv_checkbox_set_text_static(checkbox, static_text);
90 
91     lv_mem_monitor(&m1);
92 
93     LV_HEAP_CHECK(TEST_ASSERT_LESS_THAN(initial_available_memory, m1.free_size));
94 }
95 
96 #endif
97