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