summaryrefslogtreecommitdiff
path: root/test/unit/util/assert_white.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/util/assert_white.h')
-rw-r--r--test/unit/util/assert_white.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/test/unit/util/assert_white.h b/test/unit/util/assert_white.h
index 9425daa44..d001c5a84 100644
--- a/test/unit/util/assert_white.h
+++ b/test/unit/util/assert_white.h
@@ -15,6 +15,9 @@
#include <cxxtest/TestSuite.h>
+#include <string>
+#include <cstring>
+
#include "util/Assert.h"
using namespace CVC4;
@@ -39,9 +42,44 @@ public:
TS_ASSERT_THROWS( Unimplemented(), UnimplementedOperationException );
TS_ASSERT_THROWS( IllegalArgument("x"), IllegalArgumentException );
TS_ASSERT_THROWS( CheckArgument(false, "x"), IllegalArgumentException );
- TS_ASSERT_THROWS( AlwaysAssertArgument(false, "x"), IllegalArgumentException );
+ TS_ASSERT_THROWS( AlwaysAssertArgument(false, "x"),
+ IllegalArgumentException );
TS_ASSERT_THROWS_NOTHING( AssertArgument(true, "x") );
TS_ASSERT_THROWS_NOTHING( AssertArgument(true, "x") );
}
+ void testReallyLongAssert() {
+ string msg(1034, 'x');
+ try {
+ AlwaysAssert(false, msg.c_str());
+ TS_FAIL("Should have thrown an exception !");
+ } catch(AssertionException& e) {
+ // we don't want to match on the entire string, because it may
+ // have an absolute path to the unit test binary, line number
+ // info, etc.
+ const char* theString = e.toString().c_str();
+ const char* firstPart =
+ "Assertion failure\nvoid AssertWhite::testReallyLongAssert()\n";
+ string lastPartStr = "\n\n false\n" + msg;
+ const char* lastPart = lastPartStr.c_str();
+ TS_ASSERT(strncmp(theString, firstPart, strlen(firstPart)) == 0);
+ TS_ASSERT(strncmp(theString + strlen(theString) - strlen(lastPart),
+ lastPart, strlen(lastPart)) == 0);
+ } catch(...) {
+ TS_FAIL("Threw the wrong kind of exception !");
+ }
+ }
+
+ void testUnreachable() {
+ TS_ASSERT_THROWS( Unreachable(), UnreachableCodeException );
+ TS_ASSERT_THROWS( Unreachable("hello"), UnreachableCodeException );
+ TS_ASSERT_THROWS( Unreachable("hello %s", "world"), UnreachableCodeException );
+
+ int x = 5;
+ TS_ASSERT_THROWS( Unhandled(), UnhandledCaseException );
+ TS_ASSERT_THROWS( Unhandled(x), UnhandledCaseException );
+ TS_ASSERT_THROWS( Unhandled("foo"), UnhandledCaseException );
+ TS_ASSERT_THROWS( Unhandled("foo %s baz", "bar"), UnhandledCaseException );
+ }
+
};
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback