tests: lib: cbprintf_package: Extend to test static packaging

Extend test to validate cbprintf static packaging on various
platforms.

Added more test configurations: complete, nano, long double.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
This commit is contained in:
Krzysztof Chruscinski 2021-03-03 10:48:30 +01:00 committed by Carles Cufí
commit a92214b8f4
3 changed files with 48 additions and 4 deletions

View file

@ -1,2 +1 @@
CONFIG_ZTEST=y CONFIG_ZTEST=y
CONFIG_CBPRINTF_COMPLETE=y

View file

@ -27,7 +27,8 @@ static int out(int c, void *dest)
return rv; return rv;
} }
static char runtime_buf[128]; static char static_buf[512];
static char runtime_buf[512];
static char compare_buf[128]; static char compare_buf[128];
void dump(const char *desc, uint8_t *package, size_t len) void dump(const char *desc, uint8_t *package, size_t len)
@ -58,13 +59,23 @@ void unpack(const char *desc, struct out_buffer *buf,
}; \ }; \
int rc = cbprintf_package(NULL, 0, fmt, __VA_ARGS__); \ int rc = cbprintf_package(NULL, 0, fmt, __VA_ARGS__); \
zassert_true(rc > 0, "cbprintf_package() returned %d", rc); \ zassert_true(rc > 0, "cbprintf_package() returned %d", rc); \
size_t len = rc; \ int len = rc; \
uint8_t __aligned(8) rt_package[len]; \ /* Aligned so the package is similar to the static one. */ \
uint8_t __aligned(CBPRINTF_PACKAGE_ALIGNMENT) rt_package[len]; \
memset(rt_package, 0, len); \ memset(rt_package, 0, len); \
rc = cbprintf_package(rt_package, len, fmt, __VA_ARGS__); \ rc = cbprintf_package(rt_package, len, fmt, __VA_ARGS__); \
zassert_equal(rc, len, "cbprintf_package() returned %d, expected %d", rc, len); \ zassert_equal(rc, len, "cbprintf_package() returned %d, expected %d", rc, len); \
dump("runtime", rt_package, len); \ dump("runtime", rt_package, len); \
unpack("runtime", &rt_buf, rt_package, len); \ unpack("runtime", &rt_buf, rt_package, len); \
\
struct out_buffer st_buf = { \
.buf = static_buf, .idx = 0, .size = sizeof(static_buf) \
}; \
CBPRINTF_STATIC_PACKAGE(NULL, 0, len, fmt, __VA_ARGS__); \
uint8_t __aligned(CBPRINTF_PACKAGE_ALIGNMENT) package[len]; \
CBPRINTF_STATIC_PACKAGE(package, len, len, fmt, __VA_ARGS__); \
dump("static", package, len); \
unpack("static", &st_buf, package, len); \
} while (0) } while (0)
void test_cbprintf_package(void) void test_cbprintf_package(void)
@ -97,6 +108,11 @@ void test_cbprintf_package(void)
TEST_PACKAGING("test %c %p", c, &c); TEST_PACKAGING("test %c %p", c, &c);
if (IS_ENABLED(CONFIG_CBPRINTF_FP_SUPPORT)) { if (IS_ENABLED(CONFIG_CBPRINTF_FP_SUPPORT)) {
TEST_PACKAGING("test %f %a", f, d); TEST_PACKAGING("test %f %a", f, d);
#if CONFIG_CBPRINTF_PACKAGE_LONGDOUBLE
long double ld = 1.2333;
TEST_PACKAGING("test %Lf", ld);
#endif
} }
} }

View file

@ -7,6 +7,9 @@ tests:
qemu_arc_em qemu_arc_hs qemu_cortex_a53 qemu_cortex_m0 qemu_cortex_m3 qemu_arc_em qemu_arc_hs qemu_cortex_a53 qemu_cortex_m0 qemu_cortex_m3
qemu_cortex_r5 qemu_leon3 qemu_nios2 qemu_riscv32 qemu_riscv64 qemu_x86 qemu_cortex_r5 qemu_leon3 qemu_nios2 qemu_riscv32 qemu_riscv64 qemu_x86
qemu_x86_64 qemu_xtensa qemu_x86_64 qemu_xtensa
extra_configs:
- CONFIG_CBPRINTF_COMPLETE=y
libraries.cbprintf_package_fp: libraries.cbprintf_package_fp:
tags: cbprintf tags: cbprintf
integration_platforms: integration_platforms:
@ -17,3 +20,29 @@ tests:
qemu_x86_64 qemu_xtensa qemu_x86_64 qemu_xtensa
extra_configs: extra_configs:
- CONFIG_CBPRINTF_FP_SUPPORT=y - CONFIG_CBPRINTF_FP_SUPPORT=y
- CONFIG_CBPRINTF_COMPLETE=y
libraries.cbprintf_package_long_double:
tags: cbprintf
integration_platforms:
- native_posix
platform_allow: >
qemu_arc_em qemu_arc_hs qemu_cortex_a53 qemu_cortex_m0 qemu_cortex_m3
qemu_cortex_r5 qemu_leon3 qemu_nios2 qemu_riscv64
qemu_x86_64 qemu_xtensa
platform_exclude: qemu_riscv32
extra_configs:
- CONFIG_CBPRINTF_FP_SUPPORT=y
- CONFIG_CBPRINTF_COMPLETE=y
- CONFIG_CBPRINTF_PACKAGE_LONGDOUBLE=y
libraries.cbprintf_package_nano:
tags: cbprintf
integration_platforms:
- native_posix
platform_allow: >
qemu_arc_em qemu_arc_hs qemu_cortex_a53 qemu_cortex_m0 qemu_cortex_m3
qemu_cortex_r5 qemu_leon3 qemu_nios2 qemu_riscv32 qemu_riscv64 qemu_x86
qemu_x86_64 qemu_xtensa
extra_configs:
- CONFIG_CBPRINTF_NANO=y