]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/system/test/result_value_construct2.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / system / test / result_value_construct2.cpp
1 // Copyright 2021 Peter Dimov.
2 // Distributed under the Boost Software License, Version 1.0.
3 // https://www.boost.org/LICENSE_1_0.txt
4
5 #include <boost/system/result.hpp>
6 #include <boost/core/lightweight_test.hpp>
7 #include <vector>
8 #include <string>
9
10 using namespace boost::system;
11
12 struct X
13 {
14 int a;
15 };
16
17 struct Y
18 {
19 int a, b;
20 };
21
22 struct E
23 {
24 std::string v;
25 };
26
27 result<X> fx0()
28 {
29 return {};
30 }
31
32 result<X> fx1()
33 {
34 return {{ 1 }};
35 }
36
37 result<Y> fy0()
38 {
39 return {};
40 }
41
42 result<Y> fy2()
43 {
44 return {{ 1, 2 }};
45 }
46
47 result<X, E> fxe0()
48 {
49 return {};
50 }
51
52 result<X, E> fxe1()
53 {
54 return {{ 1 }};
55 }
56
57 result<std::vector<int>> fv0()
58 {
59 return {};
60 }
61
62 result<std::vector<int>> fv1()
63 {
64 return {{ 1 }};
65 }
66
67 result<std::vector<int>> fv2()
68 {
69 return {{ 1, 2 }};
70 }
71
72 int main()
73 {
74 {
75 result<X> r = fx0();
76
77 BOOST_TEST( r.has_value() );
78
79 BOOST_TEST_EQ( r->a, 0 );
80 }
81
82 {
83 result<X> r = fx1();
84
85 BOOST_TEST( r.has_value() );
86
87 BOOST_TEST_EQ( r->a, 1 );
88 }
89
90 {
91 result<Y> r = fy0();
92
93 BOOST_TEST( r.has_value() );
94
95 BOOST_TEST_EQ( r->a, 0 );
96 BOOST_TEST_EQ( r->b, 0 );
97 }
98
99 {
100 result<Y> r = fy2();
101
102 BOOST_TEST( r.has_value() );
103
104 BOOST_TEST_EQ( r->a, 1 );
105 BOOST_TEST_EQ( r->b, 2 );
106 }
107
108 {
109 result<X, E> r = fxe0();
110
111 BOOST_TEST( r.has_value() );
112
113 BOOST_TEST_EQ( r->a, 0 );
114 }
115
116 {
117 result<X, E> r = fxe1();
118
119 BOOST_TEST( r.has_value() );
120
121 BOOST_TEST_EQ( r->a, 1 );
122 }
123
124 {
125 result<std::vector<int>> r = fv0();
126
127 BOOST_TEST( r.has_value() );
128
129 BOOST_TEST_EQ( r->size(), 0 );
130 }
131
132 {
133 result<std::vector<int>> r = fv1();
134
135 BOOST_TEST( r.has_value() );
136
137 BOOST_TEST_EQ( r->size(), 1 );
138 BOOST_TEST_EQ( r->at(0), 1 );
139 }
140
141 {
142 result<std::vector<int>> r = fv2();
143
144 BOOST_TEST( r.has_value() );
145
146 BOOST_TEST_EQ( r->size(), 2 );
147 BOOST_TEST_EQ( r->at(0), 1 );
148 BOOST_TEST_EQ( r->at(1), 2 );
149 }
150
151 return boost::report_errors();
152 }