]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
1e59de90
TL
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
10using namespace boost::system;
11
12struct X
13{
14 int a;
15};
16
17struct Y
18{
19 int a, b;
20};
21
22struct E
23{
24 std::string v;
25};
26
27result<X> fx0()
28{
29 return {};
30}
31
32result<X> fx1()
33{
34 return {{ 1 }};
35}
36
37result<Y> fy0()
38{
39 return {};
40}
41
42result<Y> fy2()
43{
44 return {{ 1, 2 }};
45}
46
47result<X, E> fxe0()
48{
49 return {};
50}
51
52result<X, E> fxe1()
53{
54 return {{ 1 }};
55}
56
57result<std::vector<int>> fv0()
58{
59 return {};
60}
61
62result<std::vector<int>> fv1()
63{
64 return {{ 1 }};
65}
66
67result<std::vector<int>> fv2()
68{
69 return {{ 1, 2 }};
70}
71
72int 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}