// Copyright 2004-present Facebook. All Rights Reserved. #include <gtest/gtest.h> #include <exception> #include <stdexcept> #include <cxxreact/RecoverableError.h> using namespace facebook::react::detail; TEST(RecoverableError, RunRethrowingAsRecoverableRecoverTest) { try { RecoverableError::runRethrowingAsRecoverable<std::runtime_error>([]() { throw std::runtime_error("catch me"); }); FAIL() << "Unthrown exception"; } catch (const RecoverableError &err) { ASSERT_STREQ(err.what(), "catch me"); } catch (...) { FAIL() << "Uncaught exception"; } } TEST(RecoverableError, RunRethrowingAsRecoverableFallthroughTest) { try { RecoverableError::runRethrowingAsRecoverable<std::runtime_error>([]() { throw std::logic_error("catch me"); }); FAIL() << "Unthrown exception"; } catch (const RecoverableError &err) { FAIL() << "Recovered exception that should have fallen through"; } catch (const std::exception &err) { ASSERT_STREQ(err.what(), "catch me"); } }