1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// test underflow_error
10
11#include <stdexcept>
12#include <type_traits>
13#include <cstring>
14#include <string>
15#include <cassert>
16
17#include "test_macros.h"
18
19int main(int, char**)
20{
21 static_assert((std::is_base_of<std::runtime_error, std::underflow_error>::value),
22 "std::is_base_of<std::runtime_error, std::underflow_error>::value");
23 static_assert(std::is_polymorphic<std::underflow_error>::value,
24 "std::is_polymorphic<std::underflow_error>::value");
25 {
26 const char* msg = "underflow_error message";
27 std::underflow_error e(msg);
28 assert(std::strcmp(e.what(), msg) == 0);
29 std::underflow_error e2(e);
30 assert(std::strcmp(e2.what(), msg) == 0);
31 e2 = e;
32 assert(std::strcmp(e2.what(), msg) == 0);
33 }
34 {
35 std::string msg("another underflow_error message");
36 std::underflow_error e(msg);
37 assert(e.what() == msg);
38 std::underflow_error e2(e);
39 assert(e2.what() == msg);
40 e2 = e;
41 assert(e2.what() == msg);
42 }
43
44 return 0;
45}
46

source code of libcxx/test/std/diagnostics/std.exceptions/underflow.error/underflow_error.pass.cpp