From 783779c870bd02a8eaf7d5bf5f694906b7454d67 Mon Sep 17 00:00:00 2001 From: morris Date: Fri, 3 Apr 2020 16:53:11 +0800 Subject: [PATCH] esp_rom: move rom api test into esp_rom component --- components/esp32/test/CMakeLists.txt | 12 +- components/esp32/test/component.mk | 8 - components/esp32/test/test_miniz.c | 77 -------- components/esp32s2/test/CMakeLists.txt | 13 +- components/esp32s2/test/logo.jpg | Bin 7561 -> 0 bytes components/esp32s2/test/test_libgcc.c | 185 ------------------ components/esp_rom/test/CMakeLists.txt | 12 ++ components/esp_rom/test/component.mk | 15 ++ components/{esp32 => esp_rom}/test/logo.jpg | Bin .../{esp32 => esp_rom}/test/test_libgcc.c | 9 +- components/esp_rom/test/test_miniz.c | 105 ++++++++++ .../{esp32 => esp_rom}/test/test_tjpgd.c | 16 +- 12 files changed, 147 insertions(+), 305 deletions(-) delete mode 100644 components/esp32/test/test_miniz.c delete mode 100644 components/esp32s2/test/logo.jpg delete mode 100644 components/esp32s2/test/test_libgcc.c create mode 100644 components/esp_rom/test/CMakeLists.txt create mode 100644 components/esp_rom/test/component.mk rename components/{esp32 => esp_rom}/test/logo.jpg (100%) rename components/{esp32 => esp_rom}/test/test_libgcc.c (97%) create mode 100644 components/esp_rom/test/test_miniz.c rename components/{esp32 => esp_rom}/test/test_tjpgd.c (90%) diff --git a/components/esp32/test/CMakeLists.txt b/components/esp32/test/CMakeLists.txt index a0940e0477..297fa6370f 100644 --- a/components/esp32/test/CMakeLists.txt +++ b/components/esp32/test/CMakeLists.txt @@ -1,18 +1,8 @@ if(IDF_TARGET STREQUAL "esp32") idf_component_register(SRC_DIRS . - PRIV_INCLUDE_DIRS . ${CMAKE_CURRENT_BINARY_DIR} + PRIV_INCLUDE_DIRS . PRIV_REQUIRES unity test_utils nvs_flash ulp esp_common ) - - add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h" - COMMAND xxd -i "logo.jpg" "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h" - WORKING_DIRECTORY ${COMPONENT_DIR} - DEPENDS "${CMAKE_CURRENT_LIST_DIR}/logo.jpg") - - add_custom_target(esp32_test_logo DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h") - - add_dependencies(${COMPONENT_LIB} esp32_test_logo) - target_link_libraries(${COMPONENT_LIB} INTERFACE "-u ld_include_test_dport_xt_highint5") endif() diff --git a/components/esp32/test/component.mk b/components/esp32/test/component.mk index d4b5a9012f..b68857397e 100644 --- a/components/esp32/test/component.mk +++ b/components/esp32/test/component.mk @@ -2,15 +2,7 @@ #Component Makefile # -COMPONENT_EXTRA_CLEAN := test_tjpgd_logo.h - COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive \ -u ld_include_test_dport_xt_highint5 \ COMPONENT_SRCDIRS := . - -test_tjpgd.o: test_tjpgd_logo.h - -test_tjpgd_logo.h: $(COMPONENT_PATH)/logo.jpg - $(summary) XXD logo.jpg - cd $(COMPONENT_PATH); xxd -i logo.jpg $(COMPONENT_BUILD_DIR)/test_tjpgd_logo.h diff --git a/components/esp32/test/test_miniz.c b/components/esp32/test/test_miniz.c deleted file mode 100644 index e4a6c99445..0000000000 --- a/components/esp32/test/test_miniz.c +++ /dev/null @@ -1,77 +0,0 @@ - - -#include -#include "esp32/rom/miniz.h" -#include "unity.h" - - -#define DATASIZE (1024*64) - -TEST_CASE("Test miniz compression/decompression", "[miniz][ignore]") -{ - int x; - char b; - char *inbuf, *outbuf; - tdefl_compressor *comp; - tinfl_decompressor *decomp; - tdefl_status status; - size_t inbytes = 0, outbytes = 0, inpos = 0, outpos = 0, compsz; - printf("Allocating data buffer and filling it with semi-random data\n"); - inbuf = malloc(DATASIZE); - TEST_ASSERT(inbuf != NULL); - srand(0); - for (x = 0; x < DATASIZE; x++) { - inbuf[x] = (x & 1) ? rand() & 0xff : 0; - } - printf("Allocating compressor & outbuf (%d bytes)\n", sizeof(tdefl_compressor)); - comp = malloc(sizeof(tdefl_compressor)); - TEST_ASSERT(comp != NULL); - outbuf = malloc(DATASIZE); - TEST_ASSERT(outbuf != NULL); - printf("Compressing...\n"); - status = tdefl_init(comp, NULL, NULL, TDEFL_WRITE_ZLIB_HEADER | 1500); - TEST_ASSERT(status == TDEFL_STATUS_OKAY); - while (inbytes != DATASIZE) { - outbytes = DATASIZE - outpos; - inbytes = DATASIZE - inpos; - tdefl_compress(comp, &inbuf[inpos], &inbytes, &outbuf[outpos], &outbytes, TDEFL_FINISH); - printf("...Compressed %d into %d bytes\n", inbytes, outbytes); - inpos += inbytes; outpos += outbytes; - } - compsz = outpos; - free(comp); - //Kill inbuffer - for (x = 0; x < DATASIZE; x++) { - inbuf[x] = 0; - } - free(inbuf); - - inbuf = outbuf; - outbuf = malloc(DATASIZE); - TEST_ASSERT(outbuf != NULL); - printf("Reinflating...\n"); - decomp = malloc(sizeof(tinfl_decompressor)); - TEST_ASSERT(decomp != NULL); - tinfl_init(decomp); - inpos = 0; outpos = 0; - while (inbytes != compsz) { - outbytes = DATASIZE - outpos; - inbytes = compsz - inpos; - tinfl_decompress(decomp, (const mz_uint8 *)&inbuf[inpos], &inbytes, (uint8_t *)outbuf, (mz_uint8 *)&outbuf[outpos], &outbytes, TINFL_FLAG_PARSE_ZLIB_HEADER); - printf("...Decompressed %d into %d bytes\n", inbytes, outbytes); - inpos += inbytes; outpos += outbytes; - } - printf("Checking if same...\n"); - srand(0); - for (x = 0; x < DATASIZE; x++) { - b = (x & 1) ? rand() & 0xff : 0; - if (outbuf[x] != b) { - printf("Pos %x: %hhx!=%hhx\n", x, outbuf[x], b); - TEST_ASSERT(0); - } - } - printf("Great Success!\n"); - free(inbuf); - free(outbuf); - free(decomp); -} diff --git a/components/esp32s2/test/CMakeLists.txt b/components/esp32s2/test/CMakeLists.txt index 155d8969f0..7d5e8e3953 100644 --- a/components/esp32s2/test/CMakeLists.txt +++ b/components/esp32s2/test/CMakeLists.txt @@ -1,18 +1,7 @@ if(IDF_TARGET STREQUAL "esp32s2") idf_component_register(SRC_DIRS . - PRIV_INCLUDE_DIRS . ${CMAKE_CURRENT_BINARY_DIR} + PRIV_INCLUDE_DIRS . PRIV_REQUIRES unity test_utils nvs_flash ulp esp_common ) - - add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h" - COMMAND xxd -i "logo.jpg" "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h" - WORKING_DIRECTORY ${COMPONENT_DIR} - DEPENDS "${CMAKE_CURRENT_LIST_DIR}/logo.jpg") - - add_custom_target(esp32s2_test_logo DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h") - - add_dependencies(${COMPONENT_LIB} esp32s2_test_logo) - - target_link_libraries(${COMPONENT_LIB} INTERFACE "-u ld_include_test_dport_xt_highint5") endif() diff --git a/components/esp32s2/test/logo.jpg b/components/esp32s2/test/logo.jpg deleted file mode 100644 index 2bd9e775eac4d4195d9d7465239fa007715ff428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7561 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 -#include "unity.h" - -TEST_CASE("libgcc math functions", "[rom]") -{ - extern int64_t __absvdi2(int64_t x); - TEST_ASSERT(__absvdi2(-1L) == 1); - extern int __absvsi2(int x); - TEST_ASSERT(__absvsi2(-1) == 1); - extern double __adddf3(double x, double y); - TEST_ASSERT(__adddf3(1.0, 4.0) == 5.0); - extern float __addsf3(float x, float y); - TEST_ASSERT(__addsf3(1.0f, 4.0f) == 5.0f); - extern int64_t __addvdi3(int64_t x, int64_t y); - TEST_ASSERT(__addvdi3(1L, 4L) == 5L); - extern int __addvsi3(int x, int y); - TEST_ASSERT(__addvsi3(1, 4) == 5); - extern int64_t __ashldi3(int64_t x, int y); - TEST_ASSERT(__ashldi3(1, 4) == 16); - extern int64_t __ashrdi3(int64_t x, int y); - TEST_ASSERT(__ashrdi3(4, 1) == 2); - extern int64_t __bswapdi2(int64_t x); - TEST_ASSERT(__bswapdi2(0xaabbccddeeff0011ULL) == 0x1100ffeeddccbbaaULL); - extern int32_t __bswapsi2(int32_t x); - TEST_ASSERT(__bswapsi2(0xaabbccdd) == 0xddccbbaa); - extern int64_t __clrsbdi2(int64_t x); - TEST_ASSERT(__clrsbdi2(-1) == 63); - extern int __clrsbsi2(int x); - TEST_ASSERT(__clrsbsi2(-1) == 31); - extern int __clzdi2(int64_t x); - TEST_ASSERT(__clzdi2(1) == 63); - extern int __clzsi2(int x); - TEST_ASSERT(__clzsi2(1) == 31); - extern int __cmpdi2(int64_t x, int64_t y); - TEST_ASSERT(__cmpdi2(10, 10) == 1); - extern int __ctzdi2(uint64_t x); - TEST_ASSERT(__ctzdi2(0x8000000000000000ULL) == 63); - extern int __ctzsi2(unsigned x); - TEST_ASSERT(__ctzsi2(0x80000000U) == 31); - extern complex double __divdc3(double a, double b, double c, double d); - TEST_ASSERT(__divdc3(0, 1, 1, 0) == I); - extern double __divdf3(double x, double y); - TEST_ASSERT(__divdf3(16.0, 2.0) == 8.0); - extern int64_t __divdi3(int64_t x, int64_t y); - TEST_ASSERT(__divdi3(16, 2) == 8); - extern complex float __divsc3(float a, float b, float c, float d); - TEST_ASSERT(__divsc3(0, 1, 1, 0) == I); - extern float __divsf3(float x, float y); - TEST_ASSERT(__divsf3(16.0f, 2.0f) == 8.0f); - extern int __divsi3(int x, int y); - TEST_ASSERT(__divsi3(16, 2) == 8); - extern int __eqdf2(double x, double y); - TEST_ASSERT(__eqdf2(4.0, 4.0) == 0); - extern int __eqsf2(float x, float y); - TEST_ASSERT(__eqsf2(4.0f, 4.0f) == 0); - extern double __extendsfdf2(float x); - TEST_ASSERT(__extendsfdf2(4.0f) == 4.0); - extern int __ffsdi2(uint64_t x); - TEST_ASSERT(__ffsdi2(0x8000000000000000ULL) == 64); - extern int __ffssi2(unsigned x); - TEST_ASSERT(__ffssi2(0x80000000) == 32); - extern int64_t __fixdfdi(double x); - TEST_ASSERT(__fixdfdi(4.0) == 4LL); - extern int __fixdfsi(double x); - TEST_ASSERT(__fixdfsi(4.0) == 4); - extern int64_t __fixsfdi(float x); - TEST_ASSERT(__fixsfdi(4.0f) == 4LL); - extern int __fixsfsi(float x); - TEST_ASSERT(__fixsfsi(4.0f) == 4); - extern unsigned __fixunsdfsi(double x); - TEST_ASSERT(__fixunsdfsi(16.0) == 16); - extern uint64_t __fixunssfdi(float x); - TEST_ASSERT(__fixunssfdi(16.0f) == 16); - extern unsigned __fixunssfsi(float x); - TEST_ASSERT(__fixunssfsi(16.0f) == 16); - extern double __floatdidf(int64_t); - TEST_ASSERT(__floatdidf(-1LL) == -1.0f); - extern float __floatdisf(int64_t); - TEST_ASSERT(__floatdisf(-1LL) == -1.0f); - extern double __floatsidf(int x); - TEST_ASSERT(__floatsidf(-1) == -1.0); - extern float __floatsisf(int x); - TEST_ASSERT(__floatsisf(-1) == -1.0f); - extern double __floatundidf(uint64_t x); - TEST_ASSERT(__floatundidf(16) == 16.0); - extern float __floatundisf(uint64_t x); - TEST_ASSERT(__floatundisf(16) == 16.0f); - extern double __floatunsidf(unsigned x); - TEST_ASSERT(__floatunsidf(16) == 16.0); - extern float __floatunsisf(unsigned x); - TEST_ASSERT(__floatunsisf(16) == 16.0f); - extern int __gedf2(double x, double y); - TEST_ASSERT(__gedf2(2.0, 0.0) >= 0); - extern int __gesf2(float x, float y); - TEST_ASSERT(__gesf2(2.0f, 0.0f) >= 0); - extern int __gtdf2(double x, double y); - TEST_ASSERT(__gtdf2(2.0, 0.0) >= 0); - extern int __gtsf2(float x, float y); - TEST_ASSERT(__gtsf2(2.0f, 0.0f) >= 0); - extern int __ledf2(double x, double y); - TEST_ASSERT(__ledf2(0.0, 2.0) <= 0); - extern int __lesf2(float x, float y); - TEST_ASSERT(__lesf2(0.0f, 2.0f) <= 0); - extern int64_t __lshrdi3(int64_t x, int y); - TEST_ASSERT(__lshrdi3(0x8000000000000000LL, 1) == 0x4000000000000000LL); - extern int __ltdf2(double x, double y); - TEST_ASSERT(__ltdf2(0.0, 2.0) < 0); - extern int __ltsf2(float x, float y); - TEST_ASSERT(__ltsf2(0.0f, 2.0f) < 0); - extern int64_t __moddi3(int64_t x, int64_t y); - TEST_ASSERT(__moddi3(15, 2) == 1); - extern int __modsi3(int x, int y); - TEST_ASSERT(__modsi3(15, 2) == 1); - extern complex double __muldc3(double a, double b, double c, double d); - TEST_ASSERT(__muldc3(1.0, 0.0, 0.0, 1.0) == I); - extern double __muldf3(double x, double y); - TEST_ASSERT(__muldf3(2.0, 8.0) == 16.0); - extern int64_t __muldi3(int64_t x, int64_t y); - TEST_ASSERT(__muldi3(2, 8) == 16); - extern complex float __mulsc3 (float a, float b, float c, float d); - TEST_ASSERT(__mulsc3(1.0f, 0.0f, 0.0f, -1.0f) == -I); - extern float __mulsf3 (float a, float b); - TEST_ASSERT(__mulsf3(2.0f, 8.0f) == 16.0f); - extern int __mulsi3(int x, int y); - TEST_ASSERT(__mulsi3(2, 8) == 16); - extern int __mulvdi3(int64_t x, int64_t y); - TEST_ASSERT(__mulvdi3(2, 8) == 16); - extern int __mulvsi3(int x, int y); - TEST_ASSERT(__mulvsi3(2, 8) == 16); - extern int __nedf2(double x, double y); - TEST_ASSERT(__nedf2(2.0, 2.0) == 0); - extern double __negdf2(double x); - TEST_ASSERT(__negdf2(1.0) == -1.0); - extern int64_t __negdi2(int64_t x); - TEST_ASSERT(__negdi2(-1LL) == 1); - extern float __negsf2(float x); - TEST_ASSERT(__negsf2(-1.0f) == 1.0f); - extern int64_t __negvdi2(int64_t x); - TEST_ASSERT(__negvdi2(-1LL) == 1); - extern int __negvsi2(int x); - TEST_ASSERT(__negvsi2(-1) == 1); - extern int __nesf2(float x, float y); - TEST_ASSERT(__nesf2(2.0, 0.0) != 0); - extern int __paritysi2(unsigned x); - TEST_ASSERT(__paritysi2(0x10101010) == 0); - extern int __popcountdi2(uint64_t); - TEST_ASSERT(__popcountdi2(0xaaaaaaaa11111111ULL) == 24); - extern int __popcountsi2(unsigned x); - TEST_ASSERT(__popcountsi2(0x11111111) == 8); - extern double __powidf2(double x, int y); - TEST_ASSERT(__powidf2(2.0, -1) == 0.5); - extern float __powisf2(float x, int y); - TEST_ASSERT(__powisf2(2.0f, 2) == 4.0f); - extern double __subdf3(double x, double y); - TEST_ASSERT(__subdf3(2.0, 1.0) == 1.0); - extern float __subsf3(float x, float y); - TEST_ASSERT(__subsf3(5.0f, 4.0f) == 1.0f); - extern int64_t __subvdi3(int64_t x, int64_t y); - TEST_ASSERT(__subvdi3(-1LL, -1LL) == 0); - extern int __subvsi3(int x, int y); - TEST_ASSERT(__subvsi3(-1, -1) == 0); - extern float __truncdfsf2(double x); - TEST_ASSERT(__truncdfsf2(4.0) == 4.0f); - extern int __ucmpdi2(uint64_t x, uint64_t y); - TEST_ASSERT(__ucmpdi2(0x100000000ULL, 0x100000000ULL) == 1); - extern uint64_t __udivdi3(uint64_t x, uint64_t y); - TEST_ASSERT(__udivdi3(15, 2) == 7); - extern uint64_t __udivmoddi4(uint64_t x, uint64_t y, uint64_t* z); - uint64_t z; - TEST_ASSERT(__udivmoddi4(15, 2, &z) == 7); - TEST_ASSERT(z == 1); - extern unsigned __udivsi3(unsigned x, unsigned y); - TEST_ASSERT(__udivsi3(15, 2) == 7); - extern uint64_t __umoddi3(uint64_t x, uint64_t y); - TEST_ASSERT(__umoddi3(15, 2) == 1); - extern unsigned __umodsi3(unsigned x, unsigned y); - TEST_ASSERT(__umodsi3(15, 2) == 1); - extern uint64_t __umulsidi3(unsigned x, unsigned y); - TEST_ASSERT(__umulsidi3(0x10000000, 0x10000000) == 0x100000000000000ULL); - extern int __unorddf2(double x, double y); - TEST_ASSERT(__unorddf2(1.0, 2.0) == 0); - extern int __unordsf2(float x, float y); - TEST_ASSERT(__unordsf2(2.0f, 1.0f) == 0); - -} diff --git a/components/esp_rom/test/CMakeLists.txt b/components/esp_rom/test/CMakeLists.txt new file mode 100644 index 0000000000..c28ddcca46 --- /dev/null +++ b/components/esp_rom/test/CMakeLists.txt @@ -0,0 +1,12 @@ +idf_component_register(SRC_DIRS . + PRIV_INCLUDE_DIRS . ${CMAKE_CURRENT_BINARY_DIR} + PRIV_REQUIRES unity test_utils) + +if(IDF_TARGET STREQUAL "esp32") + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h" + COMMAND xxd -i "logo.jpg" "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h" + WORKING_DIRECTORY ${COMPONENT_DIR} + DEPENDS "${CMAKE_CURRENT_LIST_DIR}/logo.jpg") + add_custom_target(test_logo DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test_tjpgd_logo.h") + add_dependencies(${COMPONENT_LIB} test_logo) +endif() diff --git a/components/esp_rom/test/component.mk b/components/esp_rom/test/component.mk new file mode 100644 index 0000000000..07ea1205a5 --- /dev/null +++ b/components/esp_rom/test/component.mk @@ -0,0 +1,15 @@ +# +#Component Makefile +# + +COMPONENT_SRCDIRS := . + +COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive + +COMPONENT_EXTRA_CLEAN := test_tjpgd_logo.h + +test_tjpgd.o: test_tjpgd_logo.h + +test_tjpgd_logo.h: $(COMPONENT_PATH)/logo.jpg + $(summary) XXD logo.jpg + cd $(COMPONENT_PATH); xxd -i logo.jpg $(COMPONENT_BUILD_DIR)/test_tjpgd_logo.h diff --git a/components/esp32/test/logo.jpg b/components/esp_rom/test/logo.jpg similarity index 100% rename from components/esp32/test/logo.jpg rename to components/esp_rom/test/logo.jpg diff --git a/components/esp32/test/test_libgcc.c b/components/esp_rom/test/test_libgcc.c similarity index 97% rename from components/esp32/test/test_libgcc.c rename to components/esp_rom/test/test_libgcc.c index 7fca990d48..25c5ae7f17 100644 --- a/components/esp32/test/test_libgcc.c +++ b/components/esp_rom/test/test_libgcc.c @@ -1,7 +1,7 @@ #include #include "unity.h" -TEST_CASE("libgcc math functions", "[rom]") +TEST_CASE("libgcc math functions", "[rom][libgcc]") { extern int64_t __absvdi2(int64_t x); TEST_ASSERT(__absvdi2(-1L) == 1); @@ -117,9 +117,9 @@ TEST_CASE("libgcc math functions", "[rom]") TEST_ASSERT(__muldf3(2.0, 8.0) == 16.0); extern int64_t __muldi3(int64_t x, int64_t y); TEST_ASSERT(__muldi3(2, 8) == 16); - extern complex float __mulsc3 (float a, float b, float c, float d); + extern complex float __mulsc3(float a, float b, float c, float d); TEST_ASSERT(__mulsc3(1.0f, 0.0f, 0.0f, -1.0f) == -I); - extern float __mulsf3 (float a, float b); + extern float __mulsf3(float a, float b); TEST_ASSERT(__mulsf3(2.0f, 8.0f) == 16.0f); extern int __mulsi3(int x, int y); TEST_ASSERT(__mulsi3(2, 8) == 16); @@ -165,7 +165,7 @@ TEST_CASE("libgcc math functions", "[rom]") TEST_ASSERT(__ucmpdi2(0x100000000ULL, 0x100000000ULL) == 1); extern uint64_t __udivdi3(uint64_t x, uint64_t y); TEST_ASSERT(__udivdi3(15, 2) == 7); - extern uint64_t __udivmoddi4(uint64_t x, uint64_t y, uint64_t* z); + extern uint64_t __udivmoddi4(uint64_t x, uint64_t y, uint64_t *z); uint64_t z; TEST_ASSERT(__udivmoddi4(15, 2, &z) == 7); TEST_ASSERT(z == 1); @@ -181,5 +181,4 @@ TEST_CASE("libgcc math functions", "[rom]") TEST_ASSERT(__unorddf2(1.0, 2.0) == 0); extern int __unordsf2(float x, float y); TEST_ASSERT(__unordsf2(2.0f, 1.0f) == 0); - } diff --git a/components/esp_rom/test/test_miniz.c b/components/esp_rom/test/test_miniz.c new file mode 100644 index 0000000000..1ba742b331 --- /dev/null +++ b/components/esp_rom/test/test_miniz.c @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include "sdkconfig.h" +#include "unity.h" + +// compression/decompression will take off a bunch of memory +// test it only with PSRAM enabled +#ifdef CONFIG_SPIRAM + +#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32) + +#if CONFIG_IDF_TARGET_ESP32 +#include "esp32/rom/miniz.h" +#elif CONFIG_IDF_TARGET_ESP32S2 +#include "esp32s2/rom/miniz.h" +#else +#error "unsupported target" +#endif + + +#define DATASIZE (1024 * 64) + +TEST_CASE("Test miniz compression/decompression", "[rom][miniz]") +{ + size_t inbytes = 0, outbytes = 0, inpos = 0, outpos = 0, compsz; + printf("Allocating data buffer and filling it with semi-random data\r\n"); + uint8_t *inbuf = calloc(1, DATASIZE); + TEST_ASSERT_NOT_NULL_MESSAGE(inbuf, "allocate input buffer failed"); + + srand(0); // semi random data + for (int i = 0; i < DATASIZE; i++) { + inbuf[i] = (i & 0x01) ? rand() & 0xff : 0; + } + + printf("Allocating compressor\r\n"); + tdefl_compressor *comp = calloc(1, sizeof(tdefl_compressor)); + TEST_ASSERT_NOT_NULL_MESSAGE(comp, "allocate tdefl_compressor failed"); + + uint8_t *outbuf = calloc(1, DATASIZE); + TEST_ASSERT_NOT_NULL_MESSAGE(outbuf, "allocate output buffer failed"); + + printf("Compressing...\r\n"); + tdefl_status comp_status = tdefl_init(comp, NULL, NULL, TDEFL_WRITE_ZLIB_HEADER | 1500); + TEST_ASSERT_EQUAL_MESSAGE(TDEFL_STATUS_OKAY, comp_status, "tdefl_init failed"); + + while (1) { + outbytes = DATASIZE - outpos; + inbytes = DATASIZE - inpos; + comp_status = tdefl_compress(comp, &inbuf[inpos], &inbytes, &outbuf[outpos], &outbytes, TDEFL_FINISH); + inpos += inbytes; + outpos += outbytes; + printf("...Compressed %d into %d bytes\r\n", inpos, outpos); + if (comp_status == TDEFL_STATUS_DONE) { + break; + } else if (comp_status != TDEFL_STATUS_OKAY) { + TEST_ASSERT_MESSAGE(0, "tdefl_compress failed"); + } + } + + compsz = outpos; + free(comp); + free(inbuf); + + inbuf = outbuf; + outbuf = calloc(1, DATASIZE); + TEST_ASSERT_NOT_NULL_MESSAGE(outbuf, "allocate output buffer failed"); + + printf("Decompressing...\r\n"); + tinfl_decompressor *decomp = calloc(1, sizeof(tinfl_decompressor)); + TEST_ASSERT_NOT_NULL_MESSAGE(decomp, "allocate tinfl_decompressor failed"); + tinfl_init(decomp); + + inpos = 0; + outpos = 0; + while (1) { + outbytes = DATASIZE - outpos; + inbytes = compsz - inpos; + tinfl_status decomp_status = tinfl_decompress(decomp, &inbuf[inpos], &inbytes, outbuf, &outbuf[outpos], &outbytes, TINFL_FLAG_PARSE_ZLIB_HEADER); + inpos += inbytes; + outpos += outbytes; + printf("...Decompressed %d into %d bytes\r\n", inpos, outpos); + if (decomp_status == TINFL_STATUS_DONE) { + break; + } else if (decomp_status < TINFL_STATUS_DONE) { + printf("decomp status=%d\r\n", decomp_status); + TEST_ASSERT_MESSAGE(0, "tinfl_decompress failed"); + } + } + + printf("Verifying data between compression and decompression...\r\n"); + srand(0); // semi random data + for (int i = 0; i < DATASIZE; i++) { + uint8_t original = (i & 1) ? rand() & 0xff : 0; + TEST_ASSERT_EQUAL_MESSAGE(original, outbuf[i], "data after decompression doesn't match the original one"); + } + printf("Great Success!\n"); + free(inbuf); + free(outbuf); + free(decomp); +} + +#endif //#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32) +#endif // CONFIG_SPIRAM \ No newline at end of file diff --git a/components/esp32/test/test_tjpgd.c b/components/esp_rom/test/test_tjpgd.c similarity index 90% rename from components/esp32/test/test_tjpgd.c rename to components/esp_rom/test/test_tjpgd.c index 82c147b11e..7a0439c0d0 100644 --- a/components/esp32/test/test_tjpgd.c +++ b/components/esp_rom/test/test_tjpgd.c @@ -1,12 +1,13 @@ - - #include -#include "esp32/rom/tjpgd.h" #include #include #include +#include "sdkconfig.h" #include "unity.h" +#if CONFIG_IDF_TARGET_ESP32 + +#include "esp32/rom/tjpgd.h" #include "test_tjpgd_logo.h" typedef struct { @@ -17,7 +18,6 @@ typedef struct { int outH; } JpegDev; - static UINT infunc(JDEC *decoder, BYTE *buf, UINT len) { JpegDev *jd = (JpegDev *)decoder->device; @@ -29,7 +29,6 @@ static UINT infunc(JDEC *decoder, BYTE *buf, UINT len) return len; } - static UINT outfunc(JDEC *decoder, void *bitmap, JRECT *rect) { unsigned char *in = (unsigned char *)bitmap; @@ -49,7 +48,7 @@ static UINT outfunc(JDEC *decoder, void *bitmap, JRECT *rect) #define TESTH 48 #define WORKSZ 3100 -TEST_CASE("Test JPEG decompression library", "[tjpgd]") +TEST_CASE("Test JPEG decompression library", "[rom][tjpgd]") { char aapix[] = " .:;+=xX$$"; unsigned char *decoded, *p; @@ -60,7 +59,8 @@ TEST_CASE("Test JPEG decompression library", "[tjpgd]") JpegDev jd; decoded = malloc(48 * 48 * 3); for (x = 0; x < 48 * 48 * 3; x += 2) { - decoded[x] = 0; decoded[x + 1] = 0xff; + decoded[x] = 0; + decoded[x + 1] = 0xff; } work = malloc(WORKSZ); memset(work, 0, WORKSZ); @@ -89,3 +89,5 @@ TEST_CASE("Test JPEG decompression library", "[tjpgd]") free(work); free(decoded); } + +#endif // #if CONFIG_IDF_TARGET_ESP32