From 6e7a315eb67cb6c113cf37e1d66c4f11a51a2b3e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 18:29:51 +0200 Subject: Adding upstream version 2.06. Signed-off-by: Daniel Baumann --- tests/printf_unit_test.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 tests/printf_unit_test.c (limited to 'tests/printf_unit_test.c') diff --git a/tests/printf_unit_test.c b/tests/printf_unit_test.c new file mode 100644 index 0000000..098c29f --- /dev/null +++ b/tests/printf_unit_test.c @@ -0,0 +1,78 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2011 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#include +#include +#include +#include + +#define MSG "printf test failed: %s, %s", real, expected + +#if defined(__GNUC__) && __GNUC__ >= 7 +#pragma GCC diagnostic ignored "-Wformat-truncation=" +#endif + +static void +printf_test (void) +{ + char real[512]; + char expected[512]; + char *null = NULL; + + grub_snprintf (real, sizeof (real), "%s", null); + snprintf (expected, sizeof (expected), "%s", null); + grub_test_assert (strcmp (real, expected) == 0, MSG); + + grub_snprintf (real, sizeof (real), "%10s", null); + snprintf (expected, sizeof (expected), "%10s", null); + grub_test_assert (strcmp (real, expected) == 0, MSG); + + grub_snprintf (real, sizeof (real), "%-10s", null); + snprintf (expected, sizeof (expected), "%-10s", null); + grub_test_assert (strcmp (real, expected) == 0, MSG); + + grub_snprintf (real, sizeof (real), "%d%%", 10); + snprintf (expected, sizeof (expected), "%d%%", 10); + grub_test_assert (strcmp (real, expected) == 0, MSG); + + grub_snprintf (real, sizeof (real), "%d %%", 10); + snprintf (expected, sizeof (expected), "%d %%", 10); + grub_test_assert (strcmp (real, expected) == 0, MSG); + + grub_snprintf (real, sizeof (real), "%%"); + snprintf (expected, sizeof (expected), "%%"); + grub_test_assert (strcmp (real, expected) == 0, MSG); + + grub_snprintf (real, sizeof (real), "%d %d %d", 1, 2, 3); + snprintf (expected, sizeof (expected), "%d %d %d", 1, 2, 3); + grub_test_assert (strcmp (real, expected) == 0, MSG); + grub_snprintf (real, sizeof (real), "%3$d %2$d %1$d", 1, 2, 3); + snprintf (expected, sizeof (expected), "%3$d %2$d %1$d", 1, 2, 3); + grub_test_assert (strcmp (real, expected) == 0, MSG); + grub_snprintf (real, sizeof (real), "%d %lld %d", 1, 2LL, 3); + snprintf (expected, sizeof (expected), "%d %lld %d", 1, 2LL, 3); + grub_test_assert (strcmp (real, expected) == 0, MSG); + grub_snprintf (real, sizeof (real), "%3$d %2$lld %1$d", 1, 2LL, 3); + snprintf (expected, sizeof (expected), "%3$d %2$lld %1$d", 1, 2LL, 3); + grub_test_assert (strcmp (real, expected) == 0, MSG); + grub_snprintf (real, sizeof (real), "%%0%dd ", 1); + snprintf (expected, sizeof (expected), "%%0%dd ", 1); + grub_test_assert (strcmp (real, expected) == 0, MSG); +} + +GRUB_UNIT_TEST ("printf_unit_test", printf_test); -- cgit v1.2.3