#include #include #include namespace renderive::error { namespace { TEST(ErrorPolicy, ExceptionModePreservesExceptionType) { set_mode(Mode::exception); EXPECT_THROW(unexpected("invalid value"), std::invalid_argument); } TEST(ErrorPolicy, FastFailModeTerminatesAtThePolicyBoundary) { EXPECT_DEATH( { set_mode(Mode::fast_fail); unexpected("broken invariant"); }, "broken invariant"); } TEST(ErrorPolicy, CaptureUsesTheSameMode) { set_mode(Mode::exception); const auto exception = capture("async failure"); ASSERT_TRUE(exception); EXPECT_THROW(std::rethrow_exception(exception), std::logic_error); } } // namespace } // namespace renderive::error