1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3 #include "unity/unity.h"
4 
setUp(void)5 void setUp(void)
6 {
7     /* Function run before every test */
8 }
9 
tearDown(void)10 void tearDown(void)
11 {
12     /* Function run after every test */
13 }
14 
15 struct display_area_test_set {
16     /* Parameters for setting up the display */
17     uint32_t width;
18     uint32_t height;
19     lv_color_format_t color_format;
20     lv_display_render_mode_t render_mode;
21     /* Parameters for testing */
22     uint32_t invalidated_width;
23     uint32_t invalidated_height;
24     uint32_t expected_buf0_size;
25 };
26 
test_get_drawbuf_size_double_buffered(void)27 void test_get_drawbuf_size_double_buffered(void)
28 {
29     static  LV_ATTRIBUTE_MEM_ALIGN uint8_t buf0[200 + LV_DRAW_BUF_ALIGN];
30     static  LV_ATTRIBUTE_MEM_ALIGN uint8_t buf1[200 + LV_DRAW_BUF_ALIGN];
31 
32     lv_display_t * disp = lv_display_create(10, 20);
33     lv_display_set_color_format(disp, LV_COLOR_FORMAT_RGB888);
34 
35     lv_display_set_buffers(disp, lv_draw_buf_align(buf0, LV_COLOR_FORMAT_RGB888), lv_draw_buf_align(buf1,
36                                                                                                     LV_COLOR_FORMAT_RGB888), 200, LV_DISPLAY_RENDER_MODE_PARTIAL);
37 
38     TEST_ASSERT_EQUAL(200, lv_display_get_draw_buf_size(disp));
39 }
40 
test_get_drawbuf_size_single_buffered(void)41 void test_get_drawbuf_size_single_buffered(void)
42 {
43     static  LV_ATTRIBUTE_MEM_ALIGN uint8_t buf0[200 + LV_DRAW_BUF_ALIGN];
44 
45     lv_display_t * disp = lv_display_create(10, 20);
46     lv_display_set_color_format(disp, LV_COLOR_FORMAT_RGB888);
47 
48     lv_display_set_buffers(disp, lv_draw_buf_align(buf0, LV_COLOR_FORMAT_RGB888), NULL, 200,
49                            LV_DISPLAY_RENDER_MODE_PARTIAL);
50 
51     TEST_ASSERT_EQUAL(200,  lv_display_get_draw_buf_size(disp));
52 }
53 
exec_invalidated_drawbuf_size_test(const struct display_area_test_set * test_set)54 static void exec_invalidated_drawbuf_size_test(const struct display_area_test_set * test_set)
55 {
56     uint32_t buffer_size = lv_draw_buf_width_to_stride(test_set->width, test_set->color_format) * test_set->height;
57 
58     uint8_t * buf0 = lv_malloc(buffer_size + LV_DRAW_BUF_ALIGN);
59 
60     lv_display_t * disp = lv_display_create(test_set->width, test_set->height);
61     lv_display_set_color_format(disp, test_set->color_format);
62 
63     lv_display_set_buffers(disp, lv_draw_buf_align(buf0, test_set->color_format), NULL, buffer_size,
64                            test_set->render_mode);
65     uint32_t invalidated_size = lv_display_get_invalidated_draw_buf_size(disp, test_set->invalidated_width,
66                                                                          test_set->invalidated_height);
67 
68     TEST_ASSERT_EQUAL(test_set->expected_buf0_size, invalidated_size);
69     lv_free(buf0);
70     lv_display_delete(disp);
71 }
72 
test_get_invalidated_drawbuf_size_rgb888_partial()73 void test_get_invalidated_drawbuf_size_rgb888_partial()
74 {
75     struct display_area_test_set test_set = {
76         .width = 10,
77         .height = 20,
78         .color_format = LV_COLOR_FORMAT_RGB888,
79         .render_mode = LV_DISPLAY_RENDER_MODE_PARTIAL,
80         .invalidated_width = 5,
81         .invalidated_height = 5,
82         .expected_buf0_size = lv_draw_buf_width_to_stride(5, LV_COLOR_FORMAT_RGB888) * 5,
83     };
84     exec_invalidated_drawbuf_size_test(&test_set);
85 }
86 
test_get_invalidated_drawbuf_size_rgb888_full()87 void test_get_invalidated_drawbuf_size_rgb888_full()
88 {
89     struct display_area_test_set test_set = {
90         .width = 10,
91         .height = 20,
92         .color_format = LV_COLOR_FORMAT_RGB888,
93         .render_mode = LV_DISPLAY_RENDER_MODE_FULL,
94         .invalidated_width = 10,
95         .invalidated_height = 20,
96         .expected_buf0_size = lv_draw_buf_width_to_stride(10, LV_COLOR_FORMAT_RGB888) * 20,
97     };
98     exec_invalidated_drawbuf_size_test(&test_set);
99 }
100 
test_get_invalidated_drawbuf_size_i1_full()101 void test_get_invalidated_drawbuf_size_i1_full()
102 {
103     struct display_area_test_set test_set =  {
104         .width = 180,
105         .height = 90,
106         .color_format = LV_COLOR_FORMAT_I1,
107         .render_mode = LV_DISPLAY_RENDER_MODE_FULL,
108         .invalidated_width = 180,
109         .invalidated_height = 90,
110         .expected_buf0_size = lv_draw_buf_width_to_stride(180, LV_COLOR_FORMAT_I1) * 90,
111     };
112     exec_invalidated_drawbuf_size_test(&test_set);
113 }
114 
test_get_invalidated_drawbuf_size_i1_partial()115 void test_get_invalidated_drawbuf_size_i1_partial()
116 {
117     struct display_area_test_set test_set = {
118         .width = 180,
119         .height = 90,
120         .color_format = LV_COLOR_FORMAT_I1,
121         .render_mode = LV_DISPLAY_RENDER_MODE_PARTIAL,
122         .invalidated_width = 180,
123         .invalidated_height = 10,
124         .expected_buf0_size = lv_draw_buf_width_to_stride(180, LV_COLOR_FORMAT_I1) * 10,
125     };
126     exec_invalidated_drawbuf_size_test(&test_set);
127 }
128 
129 
130 #endif
131