diff options
author | Pedro Alves <palves@redhat.com> | 2017-10-30 11:41:34 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-10-30 11:41:34 +0000 |
commit | 4a25033455f1e4e0325fdd249e30a79efc856689 (patch) | |
tree | 29bf136dc6936d3e2794e8dcfffa470dc52593d5 /gdb/unittests | |
parent | 16c5c17e43b34c6cc5337b40e927bc2d05c38300 (diff) | |
download | gdb-4a25033455f1e4e0325fdd249e30a79efc856689.zip gdb-4a25033455f1e4e0325fdd249e30a79efc856689.tar.gz gdb-4a25033455f1e4e0325fdd249e30a79efc856689.tar.bz2 |
Merge/shared string_printf and string_vprintf unit tests
Merge the string_printf and string_vprintf tests, running them all
against both functions.
gdb/ChangeLog:
2017-10-30 Pedro Alves <palves@redhat.com>
* unittests/common-utils-selftests.c (format_func): New typedef.
(string_printf_tests, string_vprintf_tests): Tests factored out
and merged to ...
(test_format_func): ... this new function.
(string_printf_tests, string_vprintf_tests): Reimplement on top of
test_format_func.
Diffstat (limited to 'gdb/unittests')
-rw-r--r-- | gdb/unittests/common-utils-selftests.c | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/gdb/unittests/common-utils-selftests.c b/gdb/unittests/common-utils-selftests.c index c48904b..596406e 100644 --- a/gdb/unittests/common-utils-selftests.c +++ b/gdb/unittests/common-utils-selftests.c @@ -22,23 +22,42 @@ namespace selftests { +/* Type of both 'string_printf' and the 'format' function below. Used + to run the same tests against both string_printf and + string_vprintf. */ +typedef std::string (format_func) (const char *fmt, ...) + ATTRIBUTE_PRINTF (1, 2); + static void -string_printf_tests () +test_format_func (format_func *func) { - SELF_CHECK (string_printf ("%s", "") == ""); - SELF_CHECK (string_printf ("%d comes before 2", 1) == "1 comes before 2"); - SELF_CHECK (string_printf ("hello %s", "world") == "hello world"); + /* Basic smoke tests. */ + SELF_CHECK (func ("%s", "") == ""); + SELF_CHECK (func ("%s", "test") == "test"); + SELF_CHECK (func ("%d", 23) == "23"); + SELF_CHECK (func ("%s %d %s", "test", 23, "done") == "test 23 done"); + SELF_CHECK (func ("nothing") == "nothing"); + SELF_CHECK (func ("%d comes before 2", 1) == "1 comes before 2"); + SELF_CHECK (func ("hello %s", "world") == "hello world"); + /* Check that we don't mishandle very large strings. (An earlier + non-public implementation of string_printf mishandled this). */ #define X10 "0123456789" #define X100 X10 X10 X10 X10 X10 X10 X10 X10 X10 X10 #define X1000 X100 X100 X100 X100 X100 X100 X100 X100 X100 X100 #define X10000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 #define X100000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 - SELF_CHECK (string_printf ("%s", X10) == X10); - SELF_CHECK (string_printf ("%s", X100) == X100); - SELF_CHECK (string_printf ("%s", X1000) == X1000); - SELF_CHECK (string_printf ("%s", X10000) == X10000); - SELF_CHECK (string_printf ("%s", X100000) == X100000); + SELF_CHECK (func ("%s", X10) == X10); + SELF_CHECK (func ("%s", X100) == X100); + SELF_CHECK (func ("%s", X1000) == X1000); + SELF_CHECK (func ("%s", X10000) == X10000); + SELF_CHECK (func ("%s", X100000) == X100000); +} + +static void +string_printf_tests () +{ + test_format_func (string_printf); } static std::string ATTRIBUTE_PRINTF (1, 2) @@ -55,12 +74,7 @@ format (const char *fmt, ...) static void string_vprintf_tests () { - /* Basic smoke tests. */ - SELF_CHECK (format ("%s", "test") == "test"); - SELF_CHECK (format ("%d", 23) == "23"); - SELF_CHECK (format ("%s %d %s", "test", 23, "done") - == "test 23 done"); - SELF_CHECK (format ("nothing") == "nothing"); + test_format_func (format); } } /* namespace selftests */ |