xref: /aosp_15_r20/external/cronet/base/test/gmock_expected_support_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2023 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/test/gmock_expected_support.h"
6 
7 #include <string>
8 
9 #include "base/types/expected.h"
10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 
13 namespace base::test {
14 namespace {
15 
TEST(GmockExpectedSupportTest,AssertOkAndAssign)16 TEST(GmockExpectedSupportTest, AssertOkAndAssign) {
17   const expected<int, std::string> e_int = 1;
18   ASSERT_OK_AND_ASSIGN(int result, e_int);
19   EXPECT_EQ(1, result);
20 }
21 
TEST(GmockExpectedSupportTest,VoidOkEquals)22 TEST(GmockExpectedSupportTest, VoidOkEquals) {
23   EXPECT_EQ(ok(), ok());
24   EXPECT_NE(ok(), ok("test"));
25   const expected<void, std::string> is_ok = ok();
26   EXPECT_EQ(ok(), is_ok);
27   EXPECT_EQ(is_ok, ok());
28   const expected<void, std::string> not_ok = unexpected("test");
29   EXPECT_NE(ok(), not_ok);
30   EXPECT_NE(not_ok, ok());
31 }
32 
TEST(GmockExpectedSupportTest,PrintTest)33 TEST(GmockExpectedSupportTest, PrintTest) {
34   EXPECT_EQ(testing::PrintToString(ok()), "ok()");
35   EXPECT_EQ(testing::PrintToString(ok("test")), "ok(test)");
36 
37   EXPECT_EQ(testing::PrintToString(unexpected<std::string>("test")),
38             "Unexpected(test)");
39 
40   EXPECT_EQ(testing::PrintToString(expected<void, std::string>(ok())),
41             "Expected()");
42   EXPECT_EQ(
43       testing::PrintToString(expected<std::string, std::string>(ok("test"))),
44       "Expected(test)");
45   EXPECT_EQ(testing::PrintToString(
46                 expected<std::string, std::string>(unexpected("test"))),
47             "Unexpected(test)");
48 }
49 
TEST(GmockExpectedSupportTest,HasValue)50 TEST(GmockExpectedSupportTest, HasValue) {
51   const expected<void, std::string> e_void;
52   EXPECT_THAT(e_void, HasValue());
53 
54   const expected<int, std::string> e_int = 3;
55   EXPECT_THAT(e_int, HasValue());
56 
57   const expected<int, std::string> error = unexpected("Uh oh");
58   EXPECT_THAT(error, ::testing::Not(HasValue()));
59 }
60 
TEST(GmockExpectedSupportTest,ValueIs)61 TEST(GmockExpectedSupportTest, ValueIs) {
62   const expected<int, std::string> e_int = 3;
63   EXPECT_THAT(e_int, ValueIs(3));
64 
65   const expected<std::string, int> e_string = "OK";
66   EXPECT_THAT(e_string, ValueIs("OK"));
67   EXPECT_THAT(e_string, ::testing::Not(ValueIs("ERROR")));
68 
69   const expected<int, std::string> e_error = unexpected("ERROR");
70   EXPECT_THAT(e_error, ::testing::Not(ValueIs(3)));
71 }
72 
TEST(GmockExpectedSupportTest,ErrorIs)73 TEST(GmockExpectedSupportTest, ErrorIs) {
74   const expected<std::string, int> e_int = unexpected(3);
75   EXPECT_THAT(e_int, ErrorIs(3));
76 
77   const expected<int, std::string> e_string = unexpected("OK");
78   EXPECT_THAT(e_string, ErrorIs("OK"));
79   EXPECT_THAT(e_string, ::testing::Not(ErrorIs("ERROR")));
80 
81   const expected<std::string, int> e_value = "OK";
82   EXPECT_THAT(e_value, ::testing::Not(ErrorIs(3)));
83 }
84 
85 }  // namespace
86 }  // namespace base::test
87