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