diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 37f46e5cf..97cdc6105 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -17,7 +17,6 @@ jobs: build_option: ['OPTIONS_MINIMAL_MONOCHROME', 'OPTIONS_NORMAL_8BIT', 'OPTIONS_16BIT', - 'OPTIONS_16BIT_SWAP', 'OPTIONS_FULL_32BIT'] name: Build ${{ matrix.build_option }} steps: @@ -77,7 +76,7 @@ jobs: # The shell to run commands with in the container shell: /bin/bash - + # Create cached/volume directories on host setup: | mkdir -p ~/.ccache diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3ffabc2c9..c577cbf61 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -18,250 +18,31 @@ include(CTest) set(LVGL_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) -set(LVGL_TEST_COMMON_EXAMPLE_OPTIONS - -DLV_BUILD_EXAMPLES=1 - -DLV_USE_DEMO_WIDGETS=1 - -DLV_USE_DEMO_STRESS=1 -) - set(LVGL_TEST_OPTIONS_MINIMAL_MONOCHROME - -DLV_COLOR_DEPTH=1 - -DLV_MEM_SIZE=65535 - -DLV_DPI_DEF=40 - -DLV_USE_DRAW_MASKS=0 - -DLV_USE_METER=0 - -DLV_USE_LOG=1 - -DLV_USE_ASSERT_NULL=0 - -DLV_USE_ASSERT_MALLOC=0 - -DLV_USE_ASSERT_MEM_INTEGRITY=0 - -DLV_USE_ASSERT_OBJ=0 - -DLV_USE_ASSERT_STYLE=0 - -DLV_USE_USER_DATA=0 - -DLV_FONT_UNSCII_8=1 - -DLV_USE_BIDI=0 - -DLV_USE_ARABIC_PERSIAN_CHARS=0 - -DLV_BUILD_EXAMPLES=1 - -DLV_FONT_DEFAULT=&lv_font_montserrat_14 - -DLV_USE_PNG=1 - -DLV_USE_BMP=1 - -DLV_USE_GIF=1 - -DLV_USE_QRCODE=1 - -DLV_USE_MSG=1 + -DLV_TEST_OPTION=1 ) set(LVGL_TEST_OPTIONS_NORMAL_8BIT - -DLV_COLOR_DEPTH=8 - -DLV_MEM_SIZE=65535 - -DLV_DPI_DEF=40 - -DLV_USE_DRAW_MASKS=1 - -DLV_USE_LOG=1 - -DLV_USE_ASSERT_NULL=0 - -DLV_USE_ASSERT_MALLOC=0 - -DLV_USE_ASSERT_MEM_INTEGRITY=0 - -DLV_USE_ASSERT_OBJ=0 - -DLV_USE_ASSERT_STYLE=0 - -DLV_USE_USER_DATA=1 - -DLV_FONT_UNSCII_8=1 - -DLV_USE_FONT_SUBPX=1 - -DLV_USE_BIDI=0 - -DLV_USE_ARABIC_PERSIAN_CHARS=0 - ${LVGL_TEST_COMMON_EXAMPLE_OPTIONS} - -DLV_FONT_DEFAULT=&lv_font_montserrat_14 - -DLV_USE_PNG=1 - -DLV_USE_BMP=1 - -DLV_USE_SJPG=1 - -DLV_USE_GIF=1 - -DLV_USE_QRCODE=1 - -DLV_USE_MSG=1 + -DLV_TEST_OPTION=2 ) set(LVGL_TEST_OPTIONS_16BIT - -DLV_COLOR_DEPTH=16 - -DLV_MEM_SIZE=65536 - -DLV_DPI_DEF=40 - -DLV_USE_DRAW_MASKS=1 - -DLV_DITHER_GRADIENT=1 - -DLV_USE_LOG=1 - -DLV_USE_ASSERT_NULL=0 - -DLV_USE_ASSERT_MALLOC=0 - -DLV_USE_ASSERT_MEM_INTEGRITY=0 - -DLV_USE_ASSERT_OBJ=0 - -DLV_USE_ASSERT_STYLE=0 - -DLV_USE_USER_DATA=1 - -DLV_FONT_UNSCII_8=1 - -DLV_USE_FONT_SUBPX=1 - -DLV_USE_BIDI=0 - -DLV_USE_ARABIC_PERSIAN_CHARS=0 - ${LVGL_TEST_COMMON_EXAMPLE_OPTIONS} - -DLV_FONT_DEFAULT=&lv_font_montserrat_14 - -DLV_USE_PNG=1 - -DLV_USE_BMP=1 - -DLV_USE_SJPG=1 - -DLV_USE_GIF=1 - -DLV_USE_QRCODE=1 - -DLV_USE_MSG=1 -) - -set(LVGL_TEST_OPTIONS_16BIT_SWAP - -DLV_COLOR_DEPTH=16 - -DLV_MEM_SIZE=65536 - -DLV_DPI_DEF=40 - -DLV_USE_DRAW_MASKS=1 - -DLV_DITHER_GRADIENT=1 - -DLV_DITHER_ERROR_DIFFUSION=1 - -DLV_GRAD_CACHE_DEF_SIZE=8*1024 - -DLV_USE_LOG=1 - -DLV_USE_ASSERT_NULL=0 - -DLV_USE_ASSERT_MALLOC=0 - -DLV_USE_ASSERT_MEM_INTEGRITY=0 - -DLV_USE_ASSERT_OBJ=0 - -DLV_USE_ASSERT_STYLE=0 - -DLV_USE_USER_DATA=1 - -DLV_FONT_UNSCII_8=1 - -DLV_USE_FONT_SUBPX=1 - -DLV_USE_BIDI=0 - -DLV_USE_ARABIC_PERSIAN_CHARS=0 - ${LVGL_TEST_COMMON_EXAMPLE_OPTIONS} - -DLV_FONT_DEFAULT=&lv_font_montserrat_14 - -DLV_USE_PNG=1 - -DLV_USE_BMP=1 - -DLV_USE_SJPG=1 - -DLV_USE_GIF=1 - -DLV_USE_QRCODE=1 - -DLV_USE_MSG=1 + -DLV_TEST_OPTION=3 ) set(LVGL_TEST_OPTIONS_FULL_32BIT - -DLV_COLOR_DEPTH=32 - -DLV_MEM_SIZE=8388608 - -DLV_DPI_DEF=160 - -DLV_USE_DRAW_MASKS=1 - -DLV_SHADOW_CACHE_SIZE=1 - -DLV_IMG_CACHE_DEF_SIZE=32 - -DLV_USE_LOG=1 - -DLV_LOG_LEVEL=LV_LOG_LEVEL_TRACE - -DLV_LOG_PRINTF=1 - -DLV_USE_FONT_SUBPX=1 - -DLV_FONT_SUBPX_BGR=1 - -DLV_USE_PERF_MONITOR=1 - -DLV_USE_ASSERT_NULL=1 - -DLV_USE_ASSERT_MALLOC=1 - -DLV_USE_ASSERT_MEM_INTEGRITY=1 - -DLV_USE_ASSERT_OBJ=1 - -DLV_USE_ASSERT_STYLE=1 - -DLV_USE_USER_DATA=1 - -DLV_USE_LARGE_COORD=1 - -DLV_FONT_MONTSERRAT_8=1 - -DLV_FONT_MONTSERRAT_10=1 - -DLV_FONT_MONTSERRAT_12=1 - -DLV_FONT_MONTSERRAT_14=1 - -DLV_FONT_MONTSERRAT_16=1 - -DLV_FONT_MONTSERRAT_18=1 - -DLV_FONT_MONTSERRAT_20=1 - -DLV_FONT_MONTSERRAT_22=1 - -DLV_FONT_MONTSERRAT_24=1 - -DLV_FONT_MONTSERRAT_26=1 - -DLV_FONT_MONTSERRAT_28=1 - -DLV_FONT_MONTSERRAT_30=1 - -DLV_FONT_MONTSERRAT_32=1 - -DLV_FONT_MONTSERRAT_34=1 - -DLV_FONT_MONTSERRAT_36=1 - -DLV_FONT_MONTSERRAT_38=1 - -DLV_FONT_MONTSERRAT_40=1 - -DLV_FONT_MONTSERRAT_42=1 - -DLV_FONT_MONTSERRAT_44=1 - -DLV_FONT_MONTSERRAT_46=1 - -DLV_FONT_MONTSERRAT_48=1 - -DLV_FONT_MONTSERRAT_12_SUBPX=1 - -DLV_FONT_MONTSERRAT_28_COMPRESSED=1 - -DLV_FONT_DEJAVU_16_PERSIAN_HEBREW=1 - -DLV_FONT_SIMSUN_16_CJK=1 - -DLV_FONT_UNSCII_8=1 - -DLV_FONT_UNSCII_16=1 - -DLV_FONT_FMT_TXT_LARGE=1 - -DLV_USE_FONT_COMPRESSED=1 - -DLV_USE_BIDI=1 - -DLV_USE_ARABIC_PERSIAN_CHARS=1 - -DLV_USE_PERF_MONITOR=1 - -DLV_USE_MEM_MONITOR=1 - -DLV_LABEL_TEXT_SELECTION=1 - ${LVGL_TEST_COMMON_EXAMPLE_OPTIONS} - -DLV_FONT_DEFAULT=&lv_font_montserrat_24 - -DLV_USE_FS_STDIO=1 - -DLV_FS_STDIO_LETTER='A' - -DLV_USE_FS_POSIX=1 - -DLV_FS_POSIX_LETTER='B' - -DLV_USE_PNG=1 - -DLV_USE_BMP=1 - -DLV_USE_SJPG=1 - -DLV_USE_GIF=1 - -DLV_USE_QRCODE=1 - -DLV_USE_FRAGMENT=1 - -DLV_USE_IMGFONT=1 - -DLV_USE_IME_PINYIN=1 - -DLV_USE_MSG=1 - -DLV_USE_FILE_EXPLORER=1 - -DLV_USE_TINY_TTF=1 -) - -set(LVGL_TEST_OPTIONS_TEST_COMMON - -DLV_COLOR_DEPTH=32 - -DLV_MEM_SIZE=2097152 - -DLV_SHADOW_CACHE_SIZE=10240 - -DLV_IMG_CACHE_DEF_SIZE=32 - -DLV_DITHER_GRADIENT=1 - -DLV_DITHER_ERROR_DIFFUSION=1 - -DLV_GRAD_CACHE_DEF_SIZE=8*1024 - -DLV_USE_LOG=1 - -DLV_LOG_PRINTF=1 - -DLV_USE_FONT_SUBPX=1 - -DLV_FONT_SUBPX_BGR=1 - -DLV_USE_ASSERT_NULL=0 - -DLV_USE_ASSERT_MALLOC=0 - -DLV_USE_ASSERT_MEM_INTEGRITY=0 - -DLV_USE_ASSERT_OBJ=0 - -DLV_USE_ASSERT_STYLE=0 - -DLV_USE_USER_DATA=1 - -DLV_USE_LARGE_COORD=1 - -DLV_FONT_MONTSERRAT_14=1 - -DLV_FONT_MONTSERRAT_16=1 - -DLV_FONT_MONTSERRAT_18=1 - -DLV_FONT_MONTSERRAT_24=1 - -DLV_FONT_MONTSERRAT_48=1 - -DLV_FONT_MONTSERRAT_12_SUBPX=1 - -DLV_FONT_MONTSERRAT_28_COMPRESSED=1 - -DLV_FONT_DEJAVU_16_PERSIAN_HEBREW=1 - -DLV_FONT_SIMSUN_16_CJK=1 - -DLV_FONT_UNSCII_8=1 - -DLV_FONT_UNSCII_16=1 - -DLV_FONT_FMT_TXT_LARGE=1 - -DLV_USE_FONT_COMPRESSED=1 - -DLV_USE_BIDI=1 - -DLV_USE_ARABIC_PERSIAN_CHARS=1 - -DLV_LABEL_TEXT_SELECTION=1 - -DLV_USE_FS_STDIO=1 - -DLV_FS_STDIO_LETTER='A' - -DLV_FS_STDIO_CACHE_SIZE=100 - -DLV_USE_FS_POSIX=1 - -DLV_FS_POSIX_LETTER='B' - -DLV_FS_POSIX_CACHE_SIZE=0 - -DLV_USE_MSG=1 - -DLV_USE_TINY_TTF=1 - ${LVGL_TEST_COMMON_EXAMPLE_OPTIONS} - -DLV_FONT_DEFAULT=&lv_font_montserrat_14 - -Wno-unused-but-set-variable # unused variables are common in the dual-heap arrangement + -DLV_TEST_OPTION=4 ) set(LVGL_TEST_OPTIONS_TEST_SYSHEAP - ${LVGL_TEST_OPTIONS_TEST_COMMON} + -DLV_TEST_OPTION=4 -DLVGL_CI_USING_SYS_HEAP - -DLV_MEM_CUSTOM=1 + -Wno-unused-but-set-variable # unused variables are common in the dual-heap arrangement ) set(LVGL_TEST_OPTIONS_TEST_DEFHEAP - ${LVGL_TEST_OPTIONS_TEST_COMMON} + -DLV_TEST_OPTION=4 -DLVGL_CI_USING_DEF_HEAP - -DLV_MEM_SIZE=2097152 -fsanitize=address --coverage ) @@ -272,8 +53,6 @@ elseif (OPTIONS_NORMAL_8BIT) set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_NORMAL_8BIT}) elseif (OPTIONS_16BIT) set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_16BIT}) -elseif (OPTIONS_16BIT_SWAP) - set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_16BIT_SWAP}) elseif (OPTIONS_FULL_32BIT) set (BUILD_OPTIONS ${LVGL_TEST_OPTIONS_FULL_32BIT}) elseif (OPTIONS_TEST_SYSHEAP) diff --git a/tests/main.py b/tests/main.py index 6d7087bb3..cd1dc7690 100755 --- a/tests/main.py +++ b/tests/main.py @@ -15,7 +15,6 @@ build_only_options = { 'OPTIONS_MINIMAL_MONOCHROME': 'Minimal config monochrome', 'OPTIONS_NORMAL_8BIT': 'Normal config, 8 bit color depth', 'OPTIONS_16BIT': 'Minimal config, 16 bit color depth', - 'OPTIONS_16BIT_SWAP': 'Normal config, 16 bit color depth swapped', 'OPTIONS_FULL_32BIT': 'Full config, 32 bit color depth', } diff --git a/tests/src/lv_test_conf.h b/tests/src/lv_test_conf.h index 2c5ebf6d2..1a9440def 100644 --- a/tests/src/lv_test_conf.h +++ b/tests/src/lv_test_conf.h @@ -12,15 +12,14 @@ extern "C" { #endif -/********************* - * INCLUDES - *********************/ - -/********************* - * DEFINES - *********************/ +/*********************** + * PLATFORM CONFIGS + ***********************/ #ifdef LVGL_CI_USING_SYS_HEAP +#define LV_USE_BUILTIN_MALLOC 0 +#define LV_USE_BUILTIN_MEMCPY 1 +#define LV_USE_BUILTIN_SNPRINTF 1 #define LV_STDLIB_INCLUDE #define LV_MALLOC malloc #define LV_REALLOC realloc @@ -30,6 +29,9 @@ extern "C" { #endif #ifdef LVGL_CI_USING_DEF_HEAP +#define LV_USE_BUILTIN_MALLOC 1 +#define LV_USE_BUILTIN_MEMCPY 1 +#define LV_USE_BUILTIN_SNPRINTF 1 #define LV_MALLOC lv_malloc_builtin #define LV_REALLOC lv_realloc_builtin #define LV_FREE lv_free_builtin @@ -38,6 +40,26 @@ extern "C" { #endif +#ifdef MICROPYTHON +#define LV_USE_BUILTIN_MALLOC 0 +#define LV_USE_BUILTIN_MEMCPY 1 +#define LV_USE_BUILTIN_SNPRINTF 1 +#define LV_STDLIB_INCLUDE "include/lv_mp_mem_custom_include.h" +#define LV_MALLOC m_malloc +#define LV_REALLOC m_realloc +#define LV_FREE m_free +#define LV_MEMSET lv_memset_builtin +#define LV_MEMCPY lv_memcpy_builtin +#define LV_SNPRINTF lv_snprintf_builtin +#define LV_VSNPRINTF lv_vsnprintf_builtin +#define LV_STRLEN lv_strlen_builtin +#define LV_STRNCPY lv_strncpy_builtin + +#define LV_ENABLE_GC 1 +#define LV_GC_INCLUDE "py/mpstate.h" +#define LV_GC_ROOT(x) MP_STATE_PORT(x) +#endif + void lv_test_assert_fail(void); #define LV_ASSERT_HANDLER lv_test_assert_fail(); @@ -47,13 +69,38 @@ uint32_t custom_tick_get(void); typedef void * lv_user_data_t; -/********************** - * GLOBAL PROTOTYPES - **********************/ +/*********************** + * TEST CONFIGS + ***********************/ + +#if !(defined(LV_TEST_OPTION)) || LV_TEST_OPTION == 4 +#define LV_COLOR_DEPTH 32 +#define LV_DPI_DEF 160 +#include "lv_test_conf_full.h" +#elif LV_TEST_OPTION == 3 +#define LV_COLOR_DEPTH 16 +#define LV_DPI_DEF 90 +#include "lv_test_conf_full.h" +#elif LV_TEST_OPTION == 2 +#define LV_COLOR_DEPTH 8 +#define LV_DPI_DEF 60 +#include "lv_test_conf_minimal.h" +#elif LV_TEST_OPTION == 1 +#define LV_COLOR_DEPTH 1 +#define LV_DPI_DEF 30 +#include "lv_test_conf_minimal.h" +#endif + +#if defined(LVGL_CI_USING_SYS_HEAP) || defined(LVGL_CI_USING_DEF_HEAP) +#undef LV_LOG_PRINTF + +/*For screenshots*/ +#undef LV_USE_PERF_MONITOR +#undef LV_USE_MEM_MONITOR +#undef LV_DPI_DEF +#define LV_DPI_DEF 130 +#endif -/********************** - * MACROS - **********************/ #ifdef __cplusplus } /*extern "C"*/ diff --git a/tests/src/lv_test_conf_full.h b/tests/src/lv_test_conf_full.h new file mode 100644 index 000000000..c08ccd802 --- /dev/null +++ b/tests/src/lv_test_conf_full.h @@ -0,0 +1,76 @@ +#define LV_MEM_SIZE 8388608 +#define LV_USE_DRAW_MASKS 1 +#define LV_SHADOW_CACHE_SIZE 10240 +#define LV_IMG_CACHE_DEF_SIZE 32 +#define LV_USE_LOG 1 +#define LV_LOG_LEVEL LV_LOG_LEVEL_TRACE +#define LV_LOG_PRINTF 1 +#define LV_USE_FONT_SUBPX 1 +#define LV_FONT_SUBPX_BGR 1 +#define LV_USE_PERF_MONITOR 1 +#define LV_USE_ASSERT_NULL 1 +#define LV_USE_ASSERT_MALLOC 1 +#define LV_USE_ASSERT_MEM_INTEGRITY 1 +#define LV_USE_ASSERT_OBJ 1 +#define LV_USE_ASSERT_STYLE 1 +#define LV_USE_USER_DATA 1 +#define LV_USE_LARGE_COORD 1 + +#define LV_FONT_MONTSERRAT_8 1 +#define LV_FONT_MONTSERRAT_10 1 +#define LV_FONT_MONTSERRAT_12 1 +#define LV_FONT_MONTSERRAT_14 1 +#define LV_FONT_MONTSERRAT_16 1 +#define LV_FONT_MONTSERRAT_18 1 +#define LV_FONT_MONTSERRAT_20 1 +#define LV_FONT_MONTSERRAT_22 1 +#define LV_FONT_MONTSERRAT_24 1 +#define LV_FONT_MONTSERRAT_26 1 +#define LV_FONT_MONTSERRAT_28 1 +#define LV_FONT_MONTSERRAT_30 1 +#define LV_FONT_MONTSERRAT_32 1 +#define LV_FONT_MONTSERRAT_34 1 +#define LV_FONT_MONTSERRAT_36 1 +#define LV_FONT_MONTSERRAT_38 1 +#define LV_FONT_MONTSERRAT_40 1 +#define LV_FONT_MONTSERRAT_42 1 +#define LV_FONT_MONTSERRAT_44 1 +#define LV_FONT_MONTSERRAT_46 1 +#define LV_FONT_MONTSERRAT_48 1 +#define LV_FONT_MONTSERRAT_12_SUBPX 1 +#define LV_FONT_MONTSERRAT_28_COMPRESSED 1 +#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 1 +#define LV_FONT_SIMSUN_16_CJK 1 +#define LV_FONT_UNSCII_8 1 +#define LV_FONT_UNSCII_16 1 +#define LV_FONT_DEFAULT &lv_font_montserrat_14 +#define LV_FONT_FMT_TXT_LARGE 1 +#define LV_USE_FONT_COMPRESSED 1 +#define LV_USE_BIDI 1 +#define LV_USE_ARABIC_PERSIAN_CHARS 1 +#define LV_USE_PERF_MONITOR 1 +#define LV_USE_MEM_MONITOR 1 +#define LV_LABEL_TEXT_SELECTION 1 + +#define LV_USE_FS_STDIO 1 +#define LV_FS_STDIO_LETTER 'A' +#define LV_USE_FS_POSIX 1 +#define LV_FS_POSIX_LETTER 'B' + +#define LV_USE_PNG 1 +#define LV_USE_BMP 1 +#define LV_USE_SJPG 1 +#define LV_USE_GIF 1 +#define LV_USE_QRCODE 1 +#define LV_USE_FRAGMENT 1 +#define LV_USE_IMGFONT 1 +#define LV_USE_IME_PINYIN 1 +#define LV_USE_MSG 1 +#define LV_USE_FILE_EXPLORER 1 +#define LV_USE_TINY_TTF 1 + + +#define LV_BUILD_EXAMPLES 1 +#define LV_USE_DEMO_WIDGETS 1 +#define LV_USE_DEMO_STRESS 1 + diff --git a/tests/src/lv_test_conf_minimal.h b/tests/src/lv_test_conf_minimal.h new file mode 100644 index 000000000..3288b5553 --- /dev/null +++ b/tests/src/lv_test_conf_minimal.h @@ -0,0 +1,21 @@ +#define LV_MEM_SIZE 65535 +#define LV_USE_DRAW_MASKS 0 +#define LV_USE_METER 0 +#define LV_USE_LOG 1 +#define LV_USE_ASSERT_NULL 0 +#define LV_USE_ASSERT_MALLOC 0 +#define LV_USE_ASSERT_MEM_INTEGRITY 0 +#define LV_USE_ASSERT_OBJ 0 +#define LV_USE_ASSERT_STYLE 0 +#define LV_USE_USER_DATA 0 + +#define LV_USE_BIDI 0 +#define LV_USE_ARABIC_PERSIAN_CHARS 0 + +#define LV_BUILD_EXAMPLES 1 + +#define LV_USE_PNG 1 +#define LV_USE_BMP 1 +#define LV_USE_GIF 1 +#define LV_USE_QRCODE 1 +#define LV_USE_MSG 1 /*For test_msg*/ diff --git a/tests/src/lv_test_init.c b/tests/src/lv_test_init.c index 380a2e835..f876f773f 100644 --- a/tests/src/lv_test_init.c +++ b/tests/src/lv_test_init.c @@ -29,7 +29,9 @@ void lv_test_init(void) void lv_test_deinit(void) { +#if LV_USE_BUILTIN_MALLOC lv_mem_deinit_builtin(); +#endif } static void hal_init(void)