Skip to content

Commit 938ffec

Browse files
Add some tests for 'stout::expected'
1 parent 5f99456 commit 938ffec

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

include/stout/expected.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
////////////////////////////////////////////////////////////////////////

tests/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ cc_test(
3939
cc_test(
4040
name = "stout",
4141
srcs = [
42+
"expected_tests.cc",
4243
"stringify_tests.cc",
4344
"temporary_directory_test_tests.cc",
4445
],

tests/expected_tests.cc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
}

0 commit comments

Comments
 (0)