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     lv_obj_clean(lv_screen_active());
15 }
16 
create_image(const void * src)17 static void create_image(const void * src)
18 {
19     lv_obj_t * img = lv_image_create(lv_screen_active());
20     lv_image_set_src(img, src);
21     lv_obj_center(img);
22 }
23 
bin_decoder(const void * src,const char * screenshot)24 static void bin_decoder(const void * src, const char * screenshot)
25 {
26     create_image(src);
27     TEST_ASSERT_EQUAL_SCREENSHOT(screenshot);
28     lv_obj_clean(lv_screen_active());
29 
30     size_t mem_before = lv_test_get_free_mem();
31     for(uint32_t i = 0; i < 20; i++) {
32         lv_obj_clean(lv_screen_active());
33         create_image(src);
34 
35         lv_obj_invalidate(lv_screen_active());
36         lv_refr_now(NULL);
37     }
38     TEST_ASSERT_EQUAL_SCREENSHOT(screenshot);
39     lv_obj_clean(lv_screen_active());
40     TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 0);
41 }
42 
create_image_tile(const void * src)43 static void create_image_tile(const void * src)
44 {
45     lv_obj_t * img = lv_image_create(lv_screen_active());
46     lv_image_set_src(img, src);
47     lv_obj_center(img);
48     lv_obj_set_size(img, 275, 175);
49     lv_image_set_inner_align(img, LV_IMAGE_ALIGN_TILE);
50 }
51 
bin_decoder_tile(const void * src,const char * screenshot)52 void bin_decoder_tile(const void * src, const char * screenshot)
53 {
54     create_image_tile(src);
55     TEST_ASSERT_EQUAL_SCREENSHOT(screenshot);
56     lv_obj_clean(lv_screen_active());
57 
58     size_t mem_before = lv_test_get_free_mem();
59     for(uint32_t i = 0; i < 20; i++) {
60         lv_obj_clean(lv_screen_active());
61         create_image_tile(src);
62 
63         lv_obj_invalidate(lv_screen_active());
64         lv_refr_now(NULL);
65     }
66     TEST_ASSERT_EQUAL_SCREENSHOT(screenshot);
67     lv_obj_clean(lv_screen_active());
68     TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 0);
69 }
70 
test_bin_decoder_i4(void)71 void test_bin_decoder_i4(void)
72 {
73     LV_IMAGE_DECLARE(test_image_cogwheel_i4);
74     bin_decoder(&test_image_cogwheel_i4, "libs/bin_decoder_1.png");
75 }
test_bin_decoder_i4_tile(void)76 void test_bin_decoder_i4_tile(void)
77 {
78     LV_IMAGE_DECLARE(test_image_cogwheel_i4);
79     bin_decoder_tile(&test_image_cogwheel_i4, "libs/bin_decoder_2.png");
80 }
test_bin_decoder_argb8888(void)81 void test_bin_decoder_argb8888(void)
82 {
83     LV_IMAGE_DECLARE(test_image_cogwheel_argb8888);
84     bin_decoder(&test_image_cogwheel_argb8888, "libs/bin_decoder_3.png");
85 }
test_bin_decoder_argb8888_tile(void)86 void test_bin_decoder_argb8888_tile(void)
87 {
88     LV_IMAGE_DECLARE(test_image_cogwheel_argb8888);
89     bin_decoder_tile(&test_image_cogwheel_argb8888, "libs/bin_decoder_4.png");
90 }
91 
92 #endif
93