This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Merge/shared string_printf and string_vprintf unit tests


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4a25033455f1e4e0325fdd249e30a79efc856689

commit 4a25033455f1e4e0325fdd249e30a79efc856689
Author: Pedro Alves <palves@redhat.com>
Date:   Mon Oct 30 11:41:34 2017 +0000

    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.

Diff:
---
 gdb/ChangeLog                          |  9 +++++++
 gdb/unittests/common-utils-selftests.c | 44 ++++++++++++++++++++++------------
 2 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7417e14..20d78ba 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+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.
+
 2017-10-29  Simon Marchi  <simon.marchi@ericsson.com>
 
 	* darwin-nat.c: Remove include of gdb.h.
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 */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]