1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3 #include "../../lvgl_private.h"
4
5 #include "unity/unity.h"
6 #include "lv_test_helpers.h"
7
setUp(void)8 void setUp(void)
9 {
10 /* Function run before every test */
11 }
12
tearDown(void)13 void tearDown(void)
14 {
15 /* Function run after every test */
16 }
17
exec_cb(void * var,int32_t v)18 static void exec_cb(void * var, int32_t v)
19 {
20 int32_t * var_i32 = var;
21 *var_i32 = v;
22 }
23
custom_exec_cb(lv_anim_t * a,int32_t v)24 static void custom_exec_cb(lv_anim_t * a, int32_t v)
25 {
26 int32_t * var_i32 = a->var;
27 *var_i32 = v;
28 }
29
test_anim_delete(void)30 void test_anim_delete(void)
31 {
32 int32_t var;
33
34 /*Start an animation*/
35 lv_anim_t a;
36 lv_anim_init(&a);
37 lv_anim_set_var(&a, &var);
38 lv_anim_set_values(&a, 0, 100);
39 lv_anim_set_exec_cb(&a, exec_cb);
40 lv_anim_set_duration(&a, 100);
41 lv_anim_start(&a);
42
43 lv_test_wait(20);
44 TEST_ASSERT_EQUAL(19, var);
45
46 bool deleted;
47 /*Wrong variable, nothing should happen*/
48 deleted = lv_anim_delete(&a, exec_cb);
49 TEST_ASSERT_FALSE(deleted);
50
51 lv_test_wait(20);
52 TEST_ASSERT_EQUAL(39, var);
53
54 /*The value shouldn't change after delete*/
55 deleted = lv_anim_delete(&var, exec_cb);
56 TEST_ASSERT_TRUE(deleted);
57
58 lv_test_wait(20);
59 TEST_ASSERT_EQUAL(39, var);
60 }
61
test_anim_delete_custom(void)62 void test_anim_delete_custom(void)
63 {
64 int32_t var;
65
66 /*Start an animation*/
67 lv_anim_t a;
68 lv_anim_init(&a);
69 lv_anim_set_var(&a, &var);
70 lv_anim_set_values(&a, 0, 100);
71 lv_anim_set_custom_exec_cb(&a, custom_exec_cb);
72 lv_anim_set_duration(&a, 100);
73 lv_anim_start(&a);
74
75 lv_test_wait(20);
76 TEST_ASSERT_EQUAL(19, var);
77
78 bool deleted;
79 /*Wrong callback, nothing should happen*/
80 deleted = lv_anim_delete(&var, exec_cb);
81 TEST_ASSERT_FALSE(deleted);
82
83 lv_test_wait(20);
84 TEST_ASSERT_EQUAL(39, var);
85
86 /*The value shouldn't change after delete*/
87 deleted = lv_anim_delete(&var, NULL);
88 TEST_ASSERT_TRUE(deleted);
89
90 lv_test_wait(20);
91 TEST_ASSERT_EQUAL(39, var);
92 }
test_anim_pause(void)93 void test_anim_pause(void)
94 {
95 int32_t var;
96
97 /*Start an animation*/
98 lv_anim_t a;
99 lv_anim_init(&a);
100 lv_anim_set_var(&a, &var);
101 lv_anim_set_values(&a, 0, 100);
102 lv_anim_set_exec_cb(&a, exec_cb);
103 lv_anim_set_duration(&a, 100);
104 lv_anim_t * animation = lv_anim_start(&a);
105
106 lv_test_wait(40);
107 TEST_ASSERT_EQUAL(39, var);
108
109 lv_anim_pause(animation);
110
111 lv_test_wait(40);
112 TEST_ASSERT_EQUAL(39, var);
113
114 lv_anim_resume(animation);
115
116 lv_test_wait(20);
117 TEST_ASSERT_EQUAL(59, var);
118
119 lv_test_wait(41);
120 TEST_ASSERT_EQUAL(100, var);
121 }
122
test_anim_pause_for(void)123 void test_anim_pause_for(void)
124 {
125 int32_t var;
126
127 /*Start an animation*/
128 lv_anim_t a;
129 lv_anim_init(&a);
130 lv_anim_set_var(&a, &var);
131 lv_anim_set_values(&a, 0, 100);
132 lv_anim_set_exec_cb(&a, exec_cb);
133 lv_anim_set_duration(&a, 100);
134 lv_anim_t * animation = lv_anim_start(&a);
135
136 lv_anim_pause_for(animation, 20);
137
138 lv_test_wait(40);
139
140 TEST_ASSERT_EQUAL(19, var);
141
142 lv_anim_pause_for(animation, 20);
143
144 lv_test_wait(40);
145 lv_test_wait(40);
146
147 TEST_ASSERT_EQUAL(79, var);
148 }
149
test_anim_pause_for_resume(void)150 void test_anim_pause_for_resume(void)
151 {
152 int32_t var;
153
154 /*Start an animation*/
155 lv_anim_t a;
156 lv_anim_init(&a);
157 lv_anim_set_var(&a, &var);
158 lv_anim_set_values(&a, 0, 100);
159 lv_anim_set_exec_cb(&a, exec_cb);
160 lv_anim_set_duration(&a, 100);
161 lv_anim_t * animation = lv_anim_start(&a);
162
163 lv_anim_pause_for(animation, 40);
164
165 lv_test_wait(20);
166 lv_anim_resume(animation);
167
168 lv_test_wait(20);
169 TEST_ASSERT_EQUAL(19, var);
170 }
171 #endif
172