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
25#ifndef _WIN32
26# define TEST_SYSTEM_CATEGORY_IS_GENERIC_CATEGORY
27#endif
28
29int main(int, char**) {
30 std::error_code e_code1(5, std::generic_category());
31 std::error_code e_code2(5, std::system_category());
32 std::error_code e_code3(6, std::generic_category());
33 std::error_code e_code4(6, std::system_category());
34 std::error_condition e_condition1(5, std::generic_category());
35 std::error_condition e_condition2(5, std::system_category());
36 std::error_condition e_condition3(6, std::generic_category());
37 std::error_condition e_condition4(6, std::system_category());
38
39 assert(e_code1 == e_code1);
40 assert(e_code1 != e_code2);
41 assert(e_code1 != e_code3);
42 assert(e_code1 != e_code4);
43 assert(e_code1 == e_condition1);
44 assert(e_code1 != e_condition2);
45 assert(e_code1 != e_condition3);
46 assert(e_code1 != e_condition4);
47
48 assert(e_code2 != e_code1);
49 assert(e_code2 == e_code2);
50 assert(e_code2 != e_code3);
51 assert(e_code2 != e_code4);
52#ifdef TEST_SYSTEM_CATEGORY_IS_GENERIC_CATEGORY
53 LIBCPP_ASSERT(e_code2 == e_condition1);
54#endif
55 assert(e_code2 == e_condition2);
56 LIBCPP_ASSERT(e_code2 != e_condition3);
57 assert(e_code2 != e_condition4);
58
59 assert(e_code3 != e_code1);
60 assert(e_code3 != e_code2);
61 assert(e_code3 == e_code3);
62 assert(e_code3 != e_code4);
63 assert(e_code3 != e_condition1);
64 assert(e_code3 != e_condition2);
65 assert(e_code3 == e_condition3);
66 assert(e_code3 != e_condition4);
67
68 assert(e_code4 != e_code1);
69 assert(e_code4 != e_code2);
70 assert(e_code4 != e_code3);
71 assert(e_code4 == e_code4);
72 LIBCPP_ASSERT(e_code4 != e_condition1);
73 assert(e_code4 != e_condition2);
74#ifdef TEST_SYSTEM_CATEGORY_IS_GENERIC_CATEGORY
75 LIBCPP_ASSERT(e_code4 == e_condition3);
76#endif
77 assert(e_code4 == e_condition4);
78
79 assert(e_condition1 == e_code1);
80#ifdef TEST_SYSTEM_CATEGORY_IS_GENERIC_CATEGORY
81 LIBCPP_ASSERT(e_condition1 == e_code2);
82#endif
83 assert(e_condition1 != e_code3);
84 LIBCPP_ASSERT(e_condition1 != e_code4);
85 assert(e_condition1 == e_condition1);
86 assert(e_condition1 != e_condition2);
87 assert(e_condition1 != e_condition3);
88 assert(e_condition1 != e_condition4);
89
90 assert(e_condition2 != e_code1);
91 assert(e_condition2 == e_code2);
92 assert(e_condition2 != e_code3);
93 assert(e_condition2 != e_code4);
94 assert(e_condition2 != e_condition1);
95 assert(e_condition2 == e_condition2);
96 assert(e_condition2 != e_condition3);
97 assert(e_condition2 != e_condition4);
98
99 assert(e_condition3 != e_code1);
100 LIBCPP_ASSERT(e_condition3 != e_code2);
101 assert(e_condition3 == e_code3);
102#ifdef TEST_SYSTEM_CATEGORY_IS_GENERIC_CATEGORY
103 LIBCPP_ASSERT(e_condition3 == e_code4);
104#endif
105 assert(e_condition3 != e_condition1);
106 assert(e_condition3 != e_condition2);
107 assert(e_condition3 == e_condition3);
108 assert(e_condition3 != e_condition4);
109
110 assert(e_condition4 != e_code1);
111 assert(e_condition4 != e_code2);
112 assert(e_condition4 != e_code3);
113 assert(e_condition4 == e_code4);
114 assert(e_condition4 != e_condition1);
115 assert(e_condition4 != e_condition2);
116 assert(e_condition4 != e_condition3);
117 assert(e_condition4 == e_condition4);
118
119 return 0;
120}
121

source code of libcxx/test/std/diagnostics/syserr/syserr.compare/eq_error_code_error_code.pass.cpp