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 
setUp(void)8 void setUp(void)
9 {
10     active_screen = lv_screen_active();
11 }
12 
tearDown(void)13 void tearDown(void)
14 {
15     lv_obj_clean(active_screen);
16 }
17 
18 /**
19  * Tests that green/blue checker pattern of various row and column sizes
20  * completely covers underyling screen, no red background visible.
21  */
test_grid_fr(void)22 void test_grid_fr(void)
23 {
24     static int32_t col_dsc[] = {3 * 9, LV_GRID_FR(1), LV_GRID_FR(2), LV_GRID_FR(3), LV_GRID_FR(4), LV_GRID_TEMPLATE_LAST};
25     static int32_t row_dsc[] = {3 * 3, LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST};
26 
27     lv_obj_set_style_bg_color(active_screen, lv_palette_main(LV_PALETTE_RED), LV_PART_MAIN);
28     lv_obj_set_layout(active_screen, LV_LAYOUT_GRID);
29     lv_obj_set_grid_dsc_array(active_screen, col_dsc, row_dsc);
30     lv_obj_set_style_pad_row(active_screen, 0, LV_PART_MAIN);
31     lv_obj_set_style_pad_column(active_screen, 0, LV_PART_MAIN);
32 
33     for(int col = 0; col < 5; col++) {
34         for(int row = 0; row < 5; row++) {
35             lv_obj_t * child = lv_obj_create(active_screen);
36             lv_obj_set_size(child, 1, 1);
37             lv_obj_set_grid_cell(child, LV_GRID_ALIGN_STRETCH, col, 1, LV_GRID_ALIGN_STRETCH, row, 1);
38             lv_obj_set_style_bg_color(child, lv_palette_main((row + col) % 2 ? LV_PALETTE_GREEN : LV_PALETTE_BLUE), LV_PART_MAIN);
39             lv_obj_set_style_radius(child, 0, LV_PART_MAIN);
40             lv_obj_set_style_border_width(child, 0, LV_PART_MAIN);
41         }
42     }
43 
44     TEST_ASSERT_EQUAL_SCREENSHOT("grid_fr.png");
45 }
46 
47 #endif
48