1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3 #include "../../lvgl_private.h"
4 
5 #include "unity/unity.h"
6 
setUp(void)7 void setUp(void)
8 {
9     /* Function run before every test */
10 }
11 
tearDown(void)12 void tearDown(void)
13 {
14     /* Function run after every test */
15     lv_obj_clean(lv_screen_active());
16 }
17 
18 /**
19  * See https://github.com/lvgl/lvgl/issues/6837
20  */
test_content_parent_pct_child_pos_1(void)21 void test_content_parent_pct_child_pos_1(void)
22 {
23     lv_obj_t * parent = lv_obj_create(lv_scr_act());
24     lv_obj_set_pos(parent, 20, 20);
25     lv_obj_set_size(parent, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
26     lv_obj_set_style_pad_all(parent, 10, 0);
27 
28     lv_obj_t * child1 = lv_obj_create(parent);
29     lv_obj_set_pos(child1, 100, 50);
30     lv_obj_set_size(child1, 100, 100);
31 
32     lv_obj_t * child2 = lv_obj_create(parent);
33 
34     /*Simple case*/
35     lv_obj_set_size(child2, 50, 50);
36     lv_obj_set_pos(child2, 0, 0);
37     lv_obj_update_layout(child2);
38     TEST_ASSERT_EQUAL_INT32(0, lv_obj_get_x(child2));
39     TEST_ASSERT_EQUAL_INT32(0, lv_obj_get_y(child2));
40 
41     /*Simple case*/
42     lv_obj_set_pos(child2, 30, 200);
43     lv_obj_update_layout(child2);
44     TEST_ASSERT_EQUAL_INT32(30, lv_obj_get_x(child2));
45     TEST_ASSERT_EQUAL_INT32(200, lv_obj_get_y(child2));
46 
47     /*x and y should be 0 to avoid circural dependency*/
48     lv_obj_set_pos(child2, LV_PCT(10), LV_PCT(50));
49     lv_obj_update_layout(child2);
50     TEST_ASSERT_EQUAL_INT32(0, lv_obj_get_x(child2));
51     TEST_ASSERT_EQUAL_INT32(0, lv_obj_get_y(child2));
52 }
53 
54 #endif
55