Arbutils/tests/ExceptionTests.cpp

37 lines
1.1 KiB
C++
Raw Normal View History

#ifdef TESTS_BUILD
2022-02-05 12:37:47 +00:00
#include <doctest.h>
#include "../src/Exception.hpp"
using namespace ArbUt;
static void Thrower() { throw ArbUt::Exception("foobar"); }
static void ThrowerWithMacro() { THROW("foobar"); }
static void ThrowerWithMacroAndParameters([[maybe_unused]] int i) { THROW("foobar", ' ', i); }
TEST_CASE("Throw exception get stack trace") {
try {
Thrower();
2020-08-15 12:19:36 +00:00
} catch (const ArbUt::Exception& e) {
2020-08-17 10:05:15 +00:00
REQUIRE(e.GetStacktrace(1) ==
"Stacktrace with depth 1: \n"
"ExceptionTests.cpp[6] static void Thrower() { throw ArbUt::Exception(\"foobar\"); }\n"
"--- End of Stack ---");
}
}
TEST_CASE("Throw exception with macro, check message") {
try {
ThrowerWithMacro();
} catch (const ArbUt::Exception& e) {
REQUIRE_EQ(std::string(e.what()), "[ExceptionTests.cpp:7] \"foobar\"");
}
}
TEST_CASE("Throw exception with macro and parameters, check message") {
try {
ThrowerWithMacroAndParameters(684);
} catch (const ArbUt::Exception& e) {
REQUIRE_EQ(std::string(e.what()), "[ExceptionTests.cpp:8] \"foobar 684\"");
}
}
#endif