tests: lib: cbprintf_packaged: Add test for cbprintf_package_convert
Add test for the new function in the API. Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
This commit is contained in:
parent
07322b85c9
commit
6f5cf3042d
1 changed files with 68 additions and 0 deletions
|
@ -809,6 +809,74 @@ ZTEST(cbprintf_package, test_cbprintf_must_runtime_package)
|
|||
zassert_equal(rv, 0, NULL);
|
||||
}
|
||||
|
||||
struct test_cbprintf_covert_ctx {
|
||||
uint8_t buf[256];
|
||||
size_t offset;
|
||||
bool null;
|
||||
};
|
||||
|
||||
static int convert_cb(const void *buf, size_t len, void *context)
|
||||
{
|
||||
struct test_cbprintf_covert_ctx *ctx = (struct test_cbprintf_covert_ctx *)context;
|
||||
|
||||
zassert_false(ctx->null, NULL);
|
||||
if (buf) {
|
||||
zassert_false(ctx->null, NULL);
|
||||
zassert_true(ctx->offset + len <= sizeof(ctx->buf), NULL);
|
||||
memcpy(&ctx->buf[ctx->offset], buf, len);
|
||||
ctx->offset += len;
|
||||
return len;
|
||||
}
|
||||
|
||||
/* At the end of conversion callback should be called with null
|
||||
* buffer to indicate the end.
|
||||
*/
|
||||
ctx->null = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ZTEST(cbprintf_package, test_cbprintf_package_convert)
|
||||
{
|
||||
int slen, clen;
|
||||
static const char test_str[] = "test %s %d %s";
|
||||
char test_str1[] = "test str1";
|
||||
static const char test_str2[] = "test str2";
|
||||
/* Store indexes of rw strings. */
|
||||
uint32_t flags = CBPRINTF_PACKAGE_ADD_RW_STR_POS;
|
||||
struct test_cbprintf_covert_ctx ctx;
|
||||
|
||||
#define TEST_FMT test_str, test_str1, 100, test_str2
|
||||
char exp_str[256];
|
||||
|
||||
snprintfcb(exp_str, sizeof(exp_str), TEST_FMT);
|
||||
|
||||
slen = cbprintf_package(NULL, 0, flags, TEST_FMT);
|
||||
zassert_true(slen > 0, NULL);
|
||||
|
||||
uint8_t __aligned(CBPRINTF_PACKAGE_ALIGNMENT) spackage[slen];
|
||||
|
||||
memset(&ctx, 0, sizeof(ctx));
|
||||
memset(spackage, 0, slen);
|
||||
|
||||
slen = cbprintf_package(spackage, slen, flags, TEST_FMT);
|
||||
zassert_true(slen > 0, NULL);
|
||||
|
||||
uint32_t copy_flags = CBPRINTF_PACKAGE_COPY_RW_STR |
|
||||
CBPRINTF_PACKAGE_COPY_KEEP_RO_STR;
|
||||
|
||||
clen = cbprintf_package_convert(spackage, slen, NULL, 0, copy_flags, NULL, 0);
|
||||
zassert_true(clen > 0, NULL);
|
||||
|
||||
clen = cbprintf_package_convert(spackage, slen, convert_cb, &ctx, copy_flags, NULL, 0);
|
||||
zassert_true(clen > 0, NULL);
|
||||
zassert_true(ctx.null, NULL);
|
||||
zassert_equal(ctx.offset, clen, NULL);
|
||||
|
||||
check_package(ctx.buf, ctx.offset, exp_str);
|
||||
#undef TEST_FMT
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Log information about variable sizes and alignment.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue