[PPL-devel] [GIT] ppl/ppl(master): DO_TEST_F now produces a more sensible output.

Roberto Bagnara bagnara at cs.unipr.it
Sat Apr 25 14:07:51 CEST 2009


Module: ppl/ppl
Branch: master
Commit: 5b72ef21ddc5a6e8f055f9e83ea6b19145c0c5fc
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=5b72ef21ddc5a6e8f055f9e83ea6b19145c0c5fc

Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date:   Sat Apr 25 14:07:17 2009 +0200

DO_TEST_F now produces a more sensible output.

---

 TODO              |    2 -
 tests/ppl_test.hh |   55 +++++++++++++++++++++++++++++++---------------------
 2 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/TODO b/TODO
index f8f3a63..97a262f 100644
--- a/TODO
+++ b/TODO
@@ -17,8 +17,6 @@ Enhancements for PPL 0.11
 - Intervals are best instantiated with checked numbers with
   particular policies: review all the interfaced boxes,
   augment the testsuite, and update the documentation.
-- DO_TEST_F should not cause the output "failed tests" to appear,
-  but "tests unexpectedly succeeded".
 - Reduce the number of FIXMEs to no more than 20.
 - Switch to the latest versions of Autoconf and Automake (in beta test
   at the time of writing): they provide features we have been looking
diff --git a/tests/ppl_test.hh b/tests/ppl_test.hh
index 4ee3370..ff7e1eb 100644
--- a/tests/ppl_test.hh
+++ b/tests/ppl_test.hh
@@ -59,24 +59,33 @@ catch (const std::exception& e) { \
   exit(1); \
 }
 
-#define BEGIN_MAIN				\
-int						\
-main() try {					\
-  set_handlers();				\
-  bool succeeded = false;			\
-  bool overflow = false;			\
-  std::list<std::string> failed_tests;
+#define BEGIN_MAIN                                       \
+int                                                      \
+main() try {                                             \
+  set_handlers();                                        \
+  bool succeeded = false;                                \
+  bool overflow = false;                                 \
+  std::list<std::string> failed_tests;                   \
+  std::list<std::string> unexpectedly_succeeded_tests;
 
 #define END_MAIN							\
-  if (failed_tests.empty())						\
-    return 0;								\
-  else {								\
-    std::cerr << "failed tests: ";					\
-    std::copy(failed_tests.begin(), failed_tests.end(),			\
+  if (!failed_tests.empty()) {						\
+    std::cerr << "tests failed: ";					\
+    std::copy(failed_tests.begin(),                                     \
+              failed_tests.end(),                                       \
 	      std::ostream_iterator<std::string>(std::cerr, " "));	\
     std::cerr << std::endl;						\
     return 1;								\
   }									\
+  if (!unexpectedly_succeeded_tests.empty()) {				\
+    std::cerr << "tests unexpectedly succeeded: ";                      \
+    std::copy(unexpectedly_succeeded_tests.begin(),                     \
+              unexpectedly_succeeded_tests.end(),                       \
+	      std::ostream_iterator<std::string>(std::cerr, " "));	\
+    std::cerr << std::endl;						\
+    return 1;								\
+  }									\
+  return 0;								\
 }									\
 catch (const std::overflow_error& e) {					\
   std::cerr << "arithmetic overflow (" << e.what() << ")"		\
@@ -122,16 +131,18 @@ catch (const std::exception& e) {					\
   if (!succeeded)			 \
     failed_tests.push_back(#test);
 
-#define DO_TEST_F(test)			 \
-  ANNOUNCE_TEST(test);			 \
-  RUN_TEST(test);			 \
-  if (succeeded)			 \
-    failed_tests.push_back(#test);
-
-#define DO_TEST_OVERFLOW(test)		 \
-  ANNOUNCE_TEST(test);			 \
-  RUN_TEST(test);			 \
-  if (succeeded || !overflow)		 \
+#define DO_TEST_F(test)                                 \
+  ANNOUNCE_TEST(test);                                  \
+  RUN_TEST(test);                                       \
+  if (succeeded)                                        \
+    unexpectedly_succeeded_tests.push_back(#test);
+
+#define DO_TEST_OVERFLOW(test)                          \
+  ANNOUNCE_TEST(test);                                  \
+  RUN_TEST(test);                                       \
+  if (succeeded)                                        \
+    unexpectedly_succeeded_tests.push_back(#test);      \
+  else if (!overflow)                                   \
     failed_tests.push_back(#test);
 
 #define DO_TEST_MAY_OVERFLOW_IF_INEXACT(test, shape)			\




More information about the PPL-devel mailing list