1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3 #include "../../lvgl_private.h"
4
5 #include "unity/unity.h"
6
7 #define PCT_MAX_VALUE 268435455
8
setUp(void)9 void setUp(void)
10 {
11 /* Function run before every test */
12 }
13
tearDown(void)14 void tearDown(void)
15 {
16 /* Function run after every test */
17 lv_obj_clean(lv_screen_active());
18 }
19
test_pct(void)20 void test_pct(void)
21 {
22 int32_t pct_val;
23 int32_t pct_coord;
24
25 pct_val = 0;
26 pct_coord = lv_pct(pct_val);
27 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
28 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
29 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
30 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
31
32 pct_val = 1;
33 pct_coord = lv_pct(pct_val);
34 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
35 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
36 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
37 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
38
39 pct_val = 100;
40 pct_coord = lv_pct(pct_val);
41 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
42 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
43 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
44 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
45
46 pct_val = 111111111;
47 pct_coord = lv_pct(pct_val);
48 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
49 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
50 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
51 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
52
53 pct_val = PCT_MAX_VALUE;
54 pct_coord = lv_pct(pct_val);
55 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
56 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
57 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
58 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
59
60 pct_val = -1;
61 pct_coord = lv_pct(pct_val);
62 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
63 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
64 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
65 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
66
67 pct_val = -100;
68 pct_coord = lv_pct(pct_val);
69 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
70 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
71 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
72 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
73
74 pct_val = -111111111;
75 pct_coord = lv_pct(pct_val);
76 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
77 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
78 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
79 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
80
81 pct_val = -PCT_MAX_VALUE;
82 pct_coord = lv_pct(pct_val);
83 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
84 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
85 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
86 TEST_ASSERT_EQUAL_INT32(pct_val, LV_COORD_GET_PCT(pct_coord));
87
88 /**
89 * Out of bounds behavior.
90 * The pct value will be clamped to the max/min value if it's out of bounds.
91 */
92
93 pct_val = PCT_MAX_VALUE + 1;
94 pct_coord = lv_pct(pct_val);
95 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
96 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
97 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
98 TEST_ASSERT_EQUAL_INT32(PCT_MAX_VALUE, LV_COORD_GET_PCT(pct_coord));
99
100 pct_val = PCT_MAX_VALUE + 100;
101 pct_coord = lv_pct(pct_val);
102 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
103 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
104 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
105 TEST_ASSERT_EQUAL_INT32(PCT_MAX_VALUE, LV_COORD_GET_PCT(pct_coord));
106
107 pct_val = -PCT_MAX_VALUE - 1;
108 pct_coord = lv_pct(pct_val);
109 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
110 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
111 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
112 TEST_ASSERT_EQUAL_INT32(-PCT_MAX_VALUE, LV_COORD_GET_PCT(pct_coord));
113
114 pct_val = -PCT_MAX_VALUE - 100;
115 pct_coord = lv_pct(pct_val);
116 TEST_ASSERT_TRUE(LV_COORD_IS_PCT(pct_coord));
117 TEST_ASSERT_FALSE(LV_COORD_IS_PX(pct_coord));
118 TEST_ASSERT_TRUE(LV_COORD_IS_SPEC(pct_coord));
119 TEST_ASSERT_EQUAL_INT32(-PCT_MAX_VALUE, LV_COORD_GET_PCT(pct_coord));
120 }
121
122 #endif
123