aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/unit++/tester.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/unit++/tester.cc')
-rw-r--r--tests/lib/unit++/tester.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/lib/unit++/tester.cc b/tests/lib/unit++/tester.cc
new file mode 100644
index 00000000..f4b65acd
--- /dev/null
+++ b/tests/lib/unit++/tester.cc
@@ -0,0 +1,74 @@
+// Copyright (C) 2001 Claus Dr�by
+// Terms of use are in the file COPYING
+#include <typeinfo>
+#include <iostream>
+#include "tester.h"
+using namespace std;
+
+using namespace unitpp;
+
+void tester::summary()
+{
+ os << "Tests [Ok-Fail-Error]: [" << n_test.n_ok() << '-'
+ << n_test.n_fail() << '-' << n_test.n_err() << "]\n";
+}
+void tester::visit(test& t)
+{
+ try {
+ t();
+ n_test.add_ok();
+ write(t);
+ } catch (assertion_error& e) {
+ n_test.add_fail();
+ write(t, e);
+ } catch (exception& e) {
+ n_test.add_err();
+ write(t, e);
+ } catch (...) {
+ n_test.add_err();
+ write(t, 0);
+ }
+}
+
+void tester::visit(suite& t)
+{
+ if (verbose)
+ os << "****** " << t.name() << " ******" << endl;
+ accu.push(n_test);
+}
+
+void tester::visit(suite& , int)
+{
+ res_cnt r(accu.top());
+ accu.pop();
+ if (n_test.n_err() != r.n_err())
+ n_suite.add_err();
+ else if (n_test.n_fail() != r.n_fail())
+ n_suite.add_fail();
+ else
+ n_suite.add_ok();
+}
+void tester::write(test& t)
+{
+ if (verbose)
+ disp(t, "OK");
+}
+void tester::disp(test& t, const string& status)
+{
+ os << status << ": " << t.name() << endl;
+}
+void tester::write(test& t, assertion_error& e)
+{
+ disp(t, "FAIL");
+ os << e << '\n';
+}
+void tester::write(test& t, std::exception& e)
+{
+ disp(t, "ERROR");
+ os << " : [" << typeid(e).name() << "] " << e.what() << '\n';
+}
+void tester::write(test& t, int )
+{
+ disp(t, "ERROR");
+ os << " : " << "unknown exception" << '\n';
+}