set_unexpected.pass.cpp 833 B

1234567891011121314151617181920212223242526272829303132333435
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. // test set_unexpected
  10. #include <exception>
  11. #include <cassert>
  12. #include <cstdlib>
  13. void f1() {}
  14. void f2() {}
  15. void f3()
  16. {
  17. std::exit(0);
  18. }
  19. int main()
  20. {
  21. std::unexpected_handler old = std::set_unexpected(f1);
  22. // verify there is a previous unexpected handler
  23. assert(old);
  24. // verify f1 was replace with f2
  25. assert(std::set_unexpected(f2) == f1);
  26. // verify calling original unexpected handler calls terminate
  27. std::set_terminate(f3);
  28. (*old)();
  29. assert(0);
  30. }