aboutsummaryrefslogtreecommitdiff
path: root/gcc/selftest.h
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2016-06-13 20:58:08 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2016-06-13 20:58:08 +0000
commit755fa6662d06f5ab2f32043bab4728bbf654d29d (patch)
treea014daaa092f85dfc9fc4901e27b06537f61aa15 /gcc/selftest.h
parenta73786e39ff86e8e1d186baaf802b99f8675bbeb (diff)
downloadgcc-755fa6662d06f5ab2f32043bab4728bbf654d29d.zip
gcc-755fa6662d06f5ab2f32043bab4728bbf654d29d.tar.gz
gcc-755fa6662d06f5ab2f32043bab4728bbf654d29d.tar.bz2
selftest: show values when ASSERT_STREQ fails
Rework ASSERT_STREQ so that it prints the actual and expected values to stderr when it fails (by moving it to a helper function). gcc/ChangeLog: * selftest.c (selftest::fail_formatted): New function. (selftest::assert_streq): New function. * selftest.h (selftests::fail_formatted): New decl. (selftest::assert_streq): New decl. (ASSERT_STREQ): Reimplement in terms of selftest::assert_streq. From-SVN: r237404
Diffstat (limited to 'gcc/selftest.h')
-rw-r--r--gcc/selftest.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/gcc/selftest.h b/gcc/selftest.h
index d1f8acc..6759734 100644
--- a/gcc/selftest.h
+++ b/gcc/selftest.h
@@ -39,6 +39,17 @@ extern void pass (const char *file, int line, const char *msg);
extern void fail (const char *file, int line, const char *msg);
+/* As "fail", but using printf-style formatted output. */
+
+extern void fail_formatted (const char *file, int line, const char *fmt, ...)
+ ATTRIBUTE_PRINTF_3;
+
+/* Implementation detail of ASSERT_STREQ. */
+
+extern void assert_streq (const char *file, int line,
+ const char *desc_expected, const char *desc_actual,
+ const char *val_expected, const char *val_actual);
+
/* Declarations for specific families of tests (by source file), in
alphabetical order. */
extern void bitmap_c_tests ();
@@ -123,15 +134,10 @@ extern int num_passes;
::selftest::pass if they are equal,
::selftest::fail if they are non-equal. */
-#define ASSERT_STREQ(EXPECTED, ACTUAL) \
- SELFTEST_BEGIN_STMT \
- const char *desc = "ASSERT_STREQ (" #EXPECTED ", " #ACTUAL ")"; \
- const char *expected_ = (EXPECTED); \
- const char *actual_ = (ACTUAL); \
- if (0 == strcmp (expected_, actual_)) \
- ::selftest::pass (__FILE__, __LINE__, desc); \
- else \
- ::selftest::fail (__FILE__, __LINE__, desc); \
+#define ASSERT_STREQ(EXPECTED, ACTUAL) \
+ SELFTEST_BEGIN_STMT \
+ ::selftest::assert_streq (__FILE__, __LINE__, #EXPECTED, #ACTUAL, \
+ (EXPECTED), (ACTUAL)); \
SELFTEST_END_STMT
/* Evaluate PRED1 (VAL1), calling ::selftest::pass if it is true,