MCPcopy Create free account
hub / github.com/davisking/dlib / test_optional_int

Function test_optional_int

dlib/test/optional.cpp:127–207  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125// ---------------------------------------------------------------------------------------------------
126
127 void test_optional_int()
128 {
129 dlib::optional<int> o1;
130 DLIB_TEST(!o1);
131 DLIB_TEST(!o1.has_value());
132 DLIB_TEST(o1.value_or(2) == 2);
133 int throw_counter{0};
134 try {
135 o1.value();
136 } catch(const std::exception& e) {
137 throw_counter++;
138 }
139 DLIB_TEST(throw_counter == 1);
140 DLIB_TEST(o1 == dlib::nullopt);
141
142 dlib::optional<int> o2 = dlib::nullopt;
143 static_assert(noexcept(o2 = dlib::nullopt), "bad");
144 DLIB_TEST(!o2);
145 DLIB_TEST(!o2.has_value());
146 DLIB_TEST(o2.value_or(3) == 3);
147
148 dlib::optional<int> o3 = 42;
149 DLIB_TEST(*o3 == 42);
150 DLIB_TEST(o3.value() == 42);
151 DLIB_TEST(o3.value_or(3) == 42);
152 DLIB_TEST(o3 == 42);
153 DLIB_TEST(42 == o3);
154
155 dlib::optional<int> o4 = o3;
156 static_assert(noexcept(o4 = o3), "bad");
157 DLIB_TEST(*o3 == 42);
158 DLIB_TEST(*o4 == 42);
159 DLIB_TEST(o4 == 42);
160 DLIB_TEST(42 == o4);
161 DLIB_TEST(o4.value() == 42);
162
163 dlib::optional<int> o5 = o1;
164 static_assert(noexcept(o5 = o1), "bad");
165 DLIB_TEST(!o1);
166 DLIB_TEST(!o5);
167 DLIB_TEST(!o5.has_value());
168
169 dlib::optional<int> o6 = std::move(o3);
170 static_assert(noexcept(o6 = std::move(o3)), "bad");
171 DLIB_TEST(*o6 == 42);
172 DLIB_TEST(o6.value() == 42);
173
174 dlib::optional<short> o7 = (short)42;
175 static_assert(noexcept(o7 = (short)42), "bad");
176 DLIB_TEST(*o7 == 42);
177
178 dlib::optional<int> o8 = o7;
179 DLIB_TEST(*o7 == 42);
180 DLIB_TEST(*o8 == 42);
181
182 dlib::optional<int> o9 = std::move(o7);
183 DLIB_TEST(*o9 == 42);
184

Callers 1

perform_testMethod · 0.85

Calls 6

moveFunction · 0.85
has_valueMethod · 0.80
value_orMethod · 0.80
valueMethod · 0.80
swapFunction · 0.70
resetMethod · 0.45

Tested by

no test coverage detected