diff --git a/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp b/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp index a4b9727a..59ba90bc 100644 --- a/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp +++ b/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp @@ -11,12 +11,25 @@ #include #include +#include void f1() {} void f2() {} +void f3() +{ + std::exit(0); +} + int main() { - assert(std::set_unexpected(f1) == std::terminate); - assert(std::set_unexpected(f2) == f1); + std::unexpected_handler old = std::set_unexpected(f1); + // verify there is a previous unexpected handler + assert(old); + // verify f1 was replace with f2 + assert(std::set_unexpected(f2) == f1); + // verify calling original unexpected handler calls terminate + std::set_terminate(f3); + (*old)(); + assert(0); }