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     lv_obj_clean(lv_screen_active());
16 }
17 
create_images(void)18 static void create_images(void)
19 {
20     lv_obj_clean(lv_screen_active());
21 
22     lv_obj_t * img;
23     lv_obj_t * label;
24 
25     LV_IMAGE_DECLARE(test_img_lvgl_logo_jpg);
26     img = lv_image_create(lv_screen_active());
27     lv_image_set_src(img, &test_img_lvgl_logo_jpg);
28     lv_obj_align(img, LV_ALIGN_CENTER, -100, -20);
29 
30     label = lv_label_create(lv_screen_active());
31     lv_label_set_text(label, "Array");
32     lv_obj_align(label, LV_ALIGN_CENTER, -100, 20);
33 
34     img = lv_image_create(lv_screen_active());
35     lv_image_set_src(img, "A:src/test_assets/test_img_lvgl_logo.jpg");
36     lv_obj_align(img, LV_ALIGN_CENTER, 100, -20);
37 
38     label = lv_label_create(lv_screen_active());
39     lv_label_set_text(label, "File");
40     lv_obj_align(label, LV_ALIGN_CENTER, 100, 20);
41 }
42 
test_tjpgd_1(void)43 void test_tjpgd_1(void)
44 {
45     /* Temporarily remove libjpeg_turbo decoder */
46     lv_libjpeg_turbo_deinit();
47 
48     create_images();
49 
50     TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_1.png");
51 
52     size_t mem_before = lv_test_get_free_mem();
53     for(uint32_t i = 0; i < 20; i++) {
54         create_images();
55 
56         lv_obj_invalidate(lv_screen_active());
57         lv_refr_now(NULL);
58     }
59 
60     TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_1.png");
61 
62     TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 32);
63 
64     /* Re-add libjpeg_turbo decoder */
65     lv_libjpeg_turbo_init();
66 }
67 
create_image_2(void)68 static void create_image_2(void)
69 {
70     LV_IMG_DECLARE(test_img_lvgl_logo_jpg);
71     lv_obj_t * img = lv_image_create(lv_screen_active());
72     lv_image_set_src(img, &test_img_lvgl_logo_jpg);
73     lv_obj_center(img);
74     lv_obj_set_size(img, 300, 200);
75     lv_image_set_inner_align(img, LV_IMAGE_ALIGN_TILE);
76 }
77 
test_jdpgd_align_tile(void)78 void test_jdpgd_align_tile(void)
79 {
80     /* Temporarily remove libjpeg_turbo decoder */
81     lv_libjpeg_turbo_deinit();
82 
83     create_image_2();
84     TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_3.png");
85     lv_obj_clean(lv_screen_active());
86 
87     size_t mem_before = lv_test_get_free_mem();
88     for(uint32_t i = 0; i < 20; i++) {
89         lv_obj_clean(lv_screen_active());
90         create_image_2();
91 
92         lv_obj_invalidate(lv_screen_active());
93         lv_refr_now(NULL);
94     }
95     TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_3.png");
96     lv_obj_clean(lv_screen_active());
97     TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 0);
98 
99     /* Re-add libjpeg_turbo decoder */
100     lv_libjpeg_turbo_init();
101 }
102 
103 #endif
104