File tree Expand file tree Collapse file tree 3 files changed +57
-0
lines changed Expand file tree Collapse file tree 3 files changed +57
-0
lines changed Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include " tl/expected.hpp"
4+
5+ // //////////////////////////////////////////////////////////////////////
6+
7+ namespace stout {
8+
9+ // //////////////////////////////////////////////////////////////////////
10+
11+ template <typename T, typename Error = std::string>
12+ using expected = tl::expected<T, Error>;
13+
14+ template <typename Error = std::string>
15+ using unexpected = tl::unexpected<Error>;
16+
17+ using tl::make_unexpected;
18+
19+ // //////////////////////////////////////////////////////////////////////
20+
21+ } // namespace stout
22+
23+ // //////////////////////////////////////////////////////////////////////
Original file line number Diff line number Diff line change @@ -39,6 +39,7 @@ cc_test(
3939cc_test (
4040 name = "stout" ,
4141 srcs = [
42+ "expected_tests.cc" ,
4243 "stringify_tests.cc" ,
4344 "temporary_directory_test_tests.cc" ,
4445 ],
Original file line number Diff line number Diff line change 1+ #include " gtest/gtest.h"
2+ #include " stout/expected.h"
3+
4+ stout::expected<int , std::string> divide (int divident, int divider) {
5+ if (!divider) {
6+ return stout::unexpected<std::string>{" divide by zero" };
7+ } else {
8+ return divident / divider;
9+ }
10+ }
11+
12+ TEST (Expected, SucceedResult) {
13+ const auto result = divide (6 , 3 );
14+
15+ EXPECT_TRUE (result.has_value ());
16+ EXPECT_EQ (2 , *result);
17+ }
18+
19+ TEST (Expected, DivideByZero) {
20+ const auto result = divide (6 , 0 );
21+
22+ EXPECT_TRUE (!result.has_value ());
23+ EXPECT_EQ (" divide by zero" , result.error ());
24+ }
25+
26+ TEST (Expected, MakeUnexpected) {
27+ auto error = []() {
28+ return stout::make_unexpected<std::string>(" error" );
29+ };
30+ const auto result = error ();
31+
32+ EXPECT_EQ (" error" , result.value ());
33+ }
You can’t perform that action at this time.
0 commit comments