1 #if LV_BUILD_TEST
2 #include "../lvgl.h"
3 #include "../../lvgl_private.h"
4 
5 #include "unity/unity.h"
6 #include "lv_test_indev.h"
7 
8 LV_IMAGE_DECLARE(test_animimg001);
9 LV_IMAGE_DECLARE(test_animimg002);
10 LV_IMAGE_DECLARE(test_animimg003);
11 
12 static const lv_image_dsc_t * anim_imgs[3] = {
13     &test_animimg001,
14     &test_animimg002,
15     &test_animimg003,
16 };
17 
18 static lv_obj_t * active_screen = NULL;
19 static lv_obj_t * animimg = NULL;
20 
21 void setUp(void);
22 void tearDown(void);
23 void test_animimg_successful_create(void);
24 void test_animimg_set_src(void);
25 void test_animimg_get_src_count(void);
26 void test_animimg_set_duration(void);
27 void test_animimg_set_repeat_count_infinite(void);
28 void test_animimg_start(void);
29 
setUp(void)30 void setUp(void)
31 {
32     active_screen = lv_screen_active();
33     animimg = lv_animimg_create(active_screen);
34 }
35 
tearDown(void)36 void tearDown(void)
37 {
38     lv_obj_clean(active_screen);
39 }
40 
test_animimg_successful_create(void)41 void test_animimg_successful_create(void)
42 {
43     TEST_ASSERT_NOT_NULL(animimg);
44 }
45 
test_animimg_set_src(void)46 void test_animimg_set_src(void)
47 {
48     lv_animimg_set_src(animimg, (const void **) anim_imgs, 3);
49 
50     TEST_ASSERT_NOT_NULL(animimg);
51 }
52 
test_animimg_get_src(void)53 void test_animimg_get_src(void)
54 {
55     lv_animimg_set_src(animimg, (const void **) anim_imgs, 3);
56 
57     const void ** actual_dsc = lv_animimg_get_src(animimg);
58 
59     TEST_ASSERT_NOT_NULL(actual_dsc);
60     TEST_ASSERT_EQUAL_PTR(actual_dsc, anim_imgs);
61 }
62 
test_animimg_get_src_count(void)63 void test_animimg_get_src_count(void)
64 {
65     uint8_t expected_count = 3;
66 
67     lv_animimg_set_src(animimg, (const void **) anim_imgs, expected_count);
68 
69     uint8_t actual_count = lv_animimg_get_src_count(animimg);
70 
71     TEST_ASSERT_EQUAL_UINT8(actual_count, expected_count);
72 }
73 
test_animimg_set_duration(void)74 void test_animimg_set_duration(void)
75 {
76     uint16_t expected_duration = 1000;
77 
78     lv_animimg_set_duration(animimg, expected_duration);
79 
80     uint16_t actual_duration = lv_animimg_get_duration(animimg);
81 
82     TEST_ASSERT_EQUAL_UINT16(actual_duration, expected_duration);
83 }
84 
test_animimg_set_repeat_count_infinite(void)85 void test_animimg_set_repeat_count_infinite(void)
86 {
87     lv_animimg_set_repeat_count(animimg, LV_ANIM_REPEAT_INFINITE);
88 
89     uint32_t actual_count = lv_animimg_get_repeat_count(animimg);
90 
91     TEST_ASSERT_EQUAL_UINT32(actual_count, LV_ANIM_REPEAT_INFINITE);
92 }
93 
test_animimg_start(void)94 void test_animimg_start(void)
95 {
96     // for lv_animimg_start() to actually work,
97     // we need to properly setup the widget beforehand
98     lv_animimg_set_src(animimg, (const void **) anim_imgs, 3);
99     lv_animimg_set_duration(animimg, 1000);
100     lv_animimg_set_repeat_count(animimg, LV_ANIM_REPEAT_INFINITE);
101 
102     lv_animimg_start(animimg);
103 
104     TEST_ASSERT_NOT_NULL(animimg);
105 }
106 
test_animimg_property(void)107 void test_animimg_property(void)
108 {
109 #if LV_USE_OBJ_PROPERTY
110     lv_property_t prop;
111     lv_obj_t * obj = lv_animimg_create(lv_screen_active());
112 
113     prop.id = LV_PROPERTY_ANIMIMAGE_SRC;
114     prop.arg1.ptr = anim_imgs;
115     prop.arg2.num = 3;
116     TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
117     TEST_ASSERT_EQUAL_PTR(lv_obj_get_property(obj, LV_PROPERTY_ANIMIMAGE_SRC).ptr, anim_imgs);
118     TEST_ASSERT_EQUAL_PTR(lv_animimg_get_src(obj), anim_imgs);
119     TEST_ASSERT_EQUAL_INT(lv_animimg_get_src_count(obj), 3);
120     TEST_ASSERT_EQUAL_INT(3, lv_obj_get_property(obj, LV_PROPERTY_ANIMIMAGE_SRC_COUNT).num);
121 
122     prop.id = LV_PROPERTY_ANIMIMAGE_DURATION;
123     prop.num = 1000;
124     TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
125     TEST_ASSERT_EQUAL_INT(1000, lv_animimg_get_duration(obj));
126     TEST_ASSERT_EQUAL_INT(1000, lv_obj_get_property(obj, LV_PROPERTY_ANIMIMAGE_DURATION).num);
127 
128     prop.id = LV_PROPERTY_ANIMIMAGE_REPEAT_COUNT;
129     prop.num = LV_ANIM_REPEAT_INFINITE;
130     TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
131     TEST_ASSERT_EQUAL_INT(LV_ANIM_REPEAT_INFINITE, lv_animimg_get_repeat_count(obj));
132     TEST_ASSERT_EQUAL_INT(LV_ANIM_REPEAT_INFINITE, lv_obj_get_property(obj, LV_PROPERTY_ANIMIMAGE_REPEAT_COUNT).num_u);
133 #endif
134 }
135 
136 #endif
137