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