Explorar el Código

change test case to verify unexpected() calls terminate - not is terminate

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@103794 91177308-0d34-0410-b5e6-96231b3b80d8
Nick Kledzik hace 15 años
padre
commit
b75862d1a1

+ 15 - 2
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);
 }