From a07b5d4200c81b1c99ce459e341ff9a12ee7cdac Mon Sep 17 00:00:00 2001 From: Marco Paland Date: Sun, 24 Jun 2018 13:11:04 +0200 Subject: fix(test_suite): fix vsnprint() mocking Using a structure as va_arg stack mock is too architecture dependent, using a regular va_list now instead. --- test/test_suite.cpp | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'test/test_suite.cpp') diff --git a/test/test_suite.cpp b/test/test_suite.cpp index 53482ab..3d7c10d 100644 --- a/test/test_suite.cpp +++ b/test/test_suite.cpp @@ -84,21 +84,30 @@ TEST_CASE("snprintf", "[]" ) { } -TEST_CASE("vsnprintf", "[]" ) { - char buffer[100]; +static void vsnprintf_builder_1(char* buffer, ...) +{ + va_list args; + va_start(args, buffer); + test::vsnprintf(buffer, 100U, "%d", args); + va_end(args); +} - // mock argument list - const struct tag_args { - intptr_t a; - intptr_t b; - char* s; - } args = { -1, -1000, "test" }; +static void vsnprintf_builder_3(char* buffer, ...) +{ + va_list args; + va_start(args, buffer); + test::vsnprintf(buffer, 100U, "%d %d %s", args); + va_end(args); +} - test::vsnprintf(buffer, 100U, "%d %d %s", (char*)&args); - REQUIRE(!strcmp(buffer, "-1 -1000 test")); +TEST_CASE("vsnprintf", "[]" ) { + char buffer[100]; - test::vsnprintf(buffer, 3U, "%d", (char*)&args); + vsnprintf_builder_1(buffer, -1); REQUIRE(!strcmp(buffer, "-1")); + + vsnprintf_builder_3(buffer, 3, -1000, "test"); + REQUIRE(!strcmp(buffer, "3 -1000 test")); } -- cgit v1.2.3