diff options
Diffstat (limited to 'libcxx/test/language.support/support.exception/exception.unexpected')
-rw-r--r-- | libcxx/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/libcxx/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp b/libcxx/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp index a4b9727a97b..59ba90bc194 100644 --- a/libcxx/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp +++ b/libcxx/test/language.support/support.exception/exception.unexpected/set.unexpected/set_unexpected.pass.cpp @@ -11,12 +11,25 @@ #include <exception> #include <cassert> +#include <cstdlib> 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); } |