CreatureLib/tests/ExceptionTests.cpp

33 lines
1012 B
C++

#ifdef TESTS_BUILD
#include <cstring>
#include "../CInterface/Core.hpp"
#include "../extern/catch.hpp"
#include "../src/Library/Exceptions/CreatureException.hpp"
TEST_CASE("When throwing exception, what() is readable", "[Utilities]") {
bool hasCaught = false;
try {
THROW_CREATURE("foobar");
} catch (const ArbUt::Exception& e) {
hasCaught = true;
INFO(e.what());
REQUIRE(std::string(e.what()) == "[ExceptionTests.cpp:10] foobar");
}
REQUIRE(hasCaught);
}
TEST_CASE("C Interface exception", "[Utilities]") {
ExceptionHandler::SetLastArbUtException("foo", ArbUt::Exception("foobar"), 1);
REQUIRE(std::string(ExceptionHandler::GetLastException()) == "[foo] foobar");
#if !WINDOWS
#ifndef DEBUG
REQUIRE(std::string(ExceptionHandler::GetLastExceptionStacktrace()) != "");
#else
REQUIRE(std::string(ExceptionHandler::GetLastExceptionStacktrace()) ==
"ExceptionTests.cpp[20] ____C_A_T_C_H____T_E_S_T____3()\n");
#endif
#endif
}
#endif