1
0
Fork 0

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.
development
Marco Paland 7 years ago
parent 810cb2b290
commit a07b5d4200

@ -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"));
}

Loading…
Cancel
Save