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