summaryrefslogtreecommitdiffstats
path: root/src/fmt/test/test-assert.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fmt/test/test-assert.h')
-rw-r--r--src/fmt/test/test-assert.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/fmt/test/test-assert.h b/src/fmt/test/test-assert.h
new file mode 100644
index 000000000..f613722ff
--- /dev/null
+++ b/src/fmt/test/test-assert.h
@@ -0,0 +1,32 @@
+// Formatting library for C++ - test version of FMT_ASSERT
+//
+// Copyright (c) 2012 - present, Victor Zverovich
+// All rights reserved.
+//
+// For the license information refer to format.h.
+
+#ifndef FMT_TEST_ASSERT_H_
+#define FMT_TEST_ASSERT_H_
+
+#include <stdexcept>
+
+#include "gtest.h"
+
+class assertion_failure : public std::logic_error {
+ public:
+ explicit assertion_failure(const char* message) : std::logic_error(message) {}
+
+ private:
+ virtual void avoid_weak_vtable();
+};
+
+void assertion_failure::avoid_weak_vtable() {}
+
+#define FMT_ASSERT(condition, message) \
+ if (!(condition)) throw assertion_failure(message);
+
+// Expects an assertion failure.
+#define EXPECT_ASSERT(stmt, message) \
+ FMT_TEST_THROW_(stmt, assertion_failure, message, GTEST_NONFATAL_FAILURE_)
+
+#endif // FMT_TEST_ASSERT_H_