Migrate from Catch to Doctest

This reduces the build times of the test suite by about two thirds in my
testing in another project.

Change-Id: I8a5da3aff0956796c718d13237d0620f48316029
Depends-on: https://gerrit.cesnet.cz/c/CzechLight/dependencies/+/1580
diff --git a/tests/trompeloeil_doctest.h b/tests/trompeloeil_doctest.h
new file mode 100644
index 0000000..8ee4071
--- /dev/null
+++ b/tests/trompeloeil_doctest.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include <doctest/doctest.h>
+#include <trompeloeil.hpp>
+
+#define SECTION(name) DOCTEST_SUBCASE(name)
+
+// https://github.com/onqtam/doctest/issues/216
+#undef REQUIRE_THROWS
+#undef REQUIRE_THROWS_AS
+#undef REQUIRE_THROWS_WITH
+#undef REQUIRE_NOTHROW
+#define REQUIRE_THROWS(expr) DOCTEST_REQUIRE_THROWS(static_cast<void>(expr))
+#define REQUIRE_THROWS_AS(expr, e) DOCTEST_REQUIRE_THROWS_AS(static_cast<void>(expr), e)
+#define REQUIRE_THROWS_WITH(expr, e) DOCTEST_REQUIRE_THROWS_WITH(static_cast<void>(expr), e)
+#define REQUIRE_NOTHROW(expr) DOCTEST_REQUIRE_NOTHROW(static_cast<void>(expr))
+
+extern template struct trompeloeil::reporter<trompeloeil::specialized>;
+
+void waitForCompletionAndBitMore(const trompeloeil::sequence& seq);