set_unexpected.pass.cpp revision e3e488eb61abdccb12fbdc88f645258cdb25086d
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 10// test set_unexpected 11 12#include <exception> 13#include <cassert> 14#include <cstdlib> 15 16void f1() {} 17void f2() {} 18 19void f3() 20{ 21 std::exit(0); 22} 23 24int main() 25{ 26 std::unexpected_handler old = std::set_unexpected(f1); 27 // verify there is a previous unexpected handler 28 assert(old); 29 // verify f1 was replace with f2 30 assert(std::set_unexpected(f2) == f1); 31 // verify calling original unexpected handler calls terminate 32 std::set_terminate(f3); 33 (*old)(); 34 assert(0); 35} 36