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 // <system_error>
10
11 // bool operator==(const error_code& lhs, const error_code& rhs);
12 // bool operator==(const error_code& lhs, const error_condition& rhs);
13 // bool operator==(const error_condition& lhs, const error_code& rhs);
14 // bool operator==(const error_condition& lhs, const error_condition& rhs);
15 // bool operator!=(const error_code& lhs, const error_code& rhs);
16 // bool operator!=(const error_code& lhs, const error_condition& rhs);
17 // bool operator!=(const error_condition& lhs, const error_code& rhs);
18 // bool operator!=(const error_condition& lhs, const error_condition& rhs);
19
20 #include <system_error>
21 #include <cassert>
22
23 #include "test_macros.h"
24
main(int,char **)25 int main(int, char**)
26 {
27 std::error_code e_code1(5, std::generic_category());
28 std::error_code e_code2(5, std::system_category());
29 std::error_code e_code3(6, std::generic_category());
30 std::error_code e_code4(6, std::system_category());
31 std::error_condition e_condition1(5, std::generic_category());
32 std::error_condition e_condition2(5, std::system_category());
33 std::error_condition e_condition3(6, std::generic_category());
34 std::error_condition e_condition4(6, std::system_category());
35
36 assert(e_code1 == e_code1);
37 assert(e_code1 != e_code2);
38 assert(e_code1 != e_code3);
39 assert(e_code1 != e_code4);
40 assert(e_code1 == e_condition1);
41 assert(e_code1 != e_condition2);
42 assert(e_code1 != e_condition3);
43 assert(e_code1 != e_condition4);
44
45 assert(e_code2 != e_code1);
46 assert(e_code2 == e_code2);
47 assert(e_code2 != e_code3);
48 assert(e_code2 != e_code4);
49 assert(e_code2 == e_condition1); // ?
50 assert(e_code2 == e_condition2);
51 assert(e_code2 != e_condition3);
52 assert(e_code2 != e_condition4);
53
54 assert(e_code3 != e_code1);
55 assert(e_code3 != e_code2);
56 assert(e_code3 == e_code3);
57 assert(e_code3 != e_code4);
58 assert(e_code3 != e_condition1);
59 assert(e_code3 != e_condition2);
60 assert(e_code3 == e_condition3);
61 assert(e_code3 != e_condition4);
62
63 assert(e_code4 != e_code1);
64 assert(e_code4 != e_code2);
65 assert(e_code4 != e_code3);
66 assert(e_code4 == e_code4);
67 assert(e_code4 != e_condition1);
68 assert(e_code4 != e_condition2);
69 assert(e_code4 == e_condition3); // ?
70 assert(e_code4 == e_condition4);
71
72 assert(e_condition1 == e_code1);
73 assert(e_condition1 == e_code2); // ?
74 assert(e_condition1 != e_code3);
75 assert(e_condition1 != e_code4);
76 assert(e_condition1 == e_condition1);
77 assert(e_condition1 != e_condition2);
78 assert(e_condition1 != e_condition3);
79 assert(e_condition1 != e_condition4);
80
81 assert(e_condition2 != e_code1);
82 assert(e_condition2 == e_code2);
83 assert(e_condition2 != e_code3);
84 assert(e_condition2 != e_code4);
85 assert(e_condition2 != e_condition1);
86 assert(e_condition2 == e_condition2);
87 assert(e_condition2 != e_condition3);
88 assert(e_condition2 != e_condition4);
89
90 assert(e_condition3 != e_code1);
91 assert(e_condition3 != e_code2);
92 assert(e_condition3 == e_code3);
93 assert(e_condition3 == e_code4); // ?
94 assert(e_condition3 != e_condition1);
95 assert(e_condition3 != e_condition2);
96 assert(e_condition3 == e_condition3);
97 assert(e_condition3 != e_condition4);
98
99 assert(e_condition4 != e_code1);
100 assert(e_condition4 != e_code2);
101 assert(e_condition4 != e_code3);
102 assert(e_condition4 == e_code4);
103 assert(e_condition4 != e_condition1);
104 assert(e_condition4 != e_condition2);
105 assert(e_condition4 != e_condition3);
106 assert(e_condition4 == e_condition4);
107
108 return 0;
109 }
110