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 
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     img = lv_image_create(lv_screen_active());
26     lv_image_set_src(img, "A:src/test_assets/test_img_lvgl_logo.jpg");
27     lv_obj_align(img, LV_ALIGN_CENTER, -150, -150);
28 
29     label = lv_label_create(lv_screen_active());
30     lv_label_set_text(label, "jpeg with exif orientation 0");
31     lv_obj_align(label, LV_ALIGN_CENTER, -150, -100);
32 
33     img = lv_image_create(lv_screen_active());
34     lv_image_set_src(img, "A:src/test_assets/test_img_lvgl_logo_with_exif_orientation_180.jpg");
35     lv_obj_align(img, LV_ALIGN_CENTER, 150, -150);
36 
37     label = lv_label_create(lv_screen_active());
38     lv_label_set_text(label, "jpeg with exif orientation 180");
39     lv_obj_align(label, LV_ALIGN_CENTER, 150, -100);
40 
41     img = lv_image_create(lv_screen_active());
42     lv_image_set_src(img, "A:src/test_assets/test_img_lvgl_logo_with_exif_orientation_90.jpg");
43     lv_obj_align(img, LV_ALIGN_CENTER, -150, 40);
44 
45     label = lv_label_create(lv_screen_active());
46     lv_label_set_text(label, "jpeg with exif orientation 90");
47     lv_obj_align(label, LV_ALIGN_CENTER, -150, 150);
48 
49     img = lv_image_create(lv_screen_active());
50     lv_image_set_src(img, "A:src/test_assets/test_img_lvgl_logo_with_exif_orientation_270.jpg");
51     lv_obj_align(img, LV_ALIGN_CENTER, 150, 40);
52 
53     label = lv_label_create(lv_screen_active());
54     lv_label_set_text(label, "jpeg with exif orientation 270");
55     lv_obj_align(label, LV_ALIGN_CENTER, 150, 150);
56 }
57 
test_jpg_2(void)58 void test_jpg_2(void)
59 {
60     /* Temporarily remove tjpgd decoder */
61     lv_tjpgd_deinit();
62 
63     create_images();
64 
65     TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_2.png");
66 
67     size_t mem_before = lv_test_get_free_mem();
68     for(uint32_t i = 0; i < 20; i++) {
69         create_images();
70 
71         lv_obj_invalidate(lv_screen_active());
72         lv_refr_now(NULL);
73     }
74 
75     TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_2.png");
76 
77     TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 64);
78 
79     /* Re-add tjpgd decoder */
80     lv_tjpgd_init();
81 }
82 
83 #endif
84