1 #include "fcp/client/testing/utils.h"
2
3 #include <string>
4
5 #include "gtest/gtest.h"
6 #include "absl/status/statusor.h"
7 #include "fcp/protos/plan.pb.h"
8
9 namespace fcp::client::testing {
10 namespace {
11
12 using google::internal::federated::plan::Dataset;
13
14 // The fixture for testing class Foo.
15 class TestExampleIteratorTest : public ::testing::Test {};
16
TEST_F(TestExampleIteratorTest,NextCallsForEmptyDatset)17 TEST_F(TestExampleIteratorTest, NextCallsForEmptyDatset) {
18 Dataset::ClientDataset client_dataset;
19
20 TestExampleIterator iterator(&client_dataset);
21
22 absl::StatusOr<std::string> element;
23
24 element = iterator.Next();
25 EXPECT_FALSE(element.ok());
26
27 element = iterator.Next();
28 EXPECT_FALSE(element.ok());
29
30 element = iterator.Next();
31 EXPECT_FALSE(element.ok());
32 }
33
TEST_F(TestExampleIteratorTest,NextCallsForSingleElementDataset)34 TEST_F(TestExampleIteratorTest, NextCallsForSingleElementDataset) {
35 Dataset::ClientDataset client_dataset;
36 client_dataset.add_example("abc");
37
38 TestExampleIterator iterator(&client_dataset);
39
40 absl::StatusOr<std::string> element;
41
42 element = iterator.Next();
43 ASSERT_TRUE(element.ok());
44 EXPECT_EQ(element.value(), "abc");
45
46 element = iterator.Next();
47 EXPECT_FALSE(element.ok());
48
49 element = iterator.Next();
50 EXPECT_FALSE(element.ok());
51 }
52
53 // Tests that the Foo::Bar() method does Abc.
TEST_F(TestExampleIteratorTest,NextCallsForThreeElementDataset)54 TEST_F(TestExampleIteratorTest, NextCallsForThreeElementDataset) {
55 Dataset::ClientDataset client_dataset;
56 client_dataset.add_example("a");
57 client_dataset.add_example("b");
58 client_dataset.add_example("c");
59
60 TestExampleIterator iterator(&client_dataset);
61
62 absl::StatusOr<std::string> element;
63
64 element = iterator.Next();
65 ASSERT_TRUE(element.ok());
66 EXPECT_EQ(element.value(), "a");
67
68 element = iterator.Next();
69 ASSERT_TRUE(element.ok());
70 EXPECT_EQ(element.value(), "b");
71
72 element = iterator.Next();
73 ASSERT_TRUE(element.ok());
74 EXPECT_EQ(element.value(), "c");
75
76 element = iterator.Next();
77 EXPECT_FALSE(element.ok());
78
79 element = iterator.Next();
80 EXPECT_FALSE(element.ok());
81 }
82
83 } // namespace
84 } // namespace fcp::client::testing
85
main(int argc,char ** argv)86 int main(int argc, char **argv) {
87 ::testing::InitGoogleTest(&argc, argv);
88 return RUN_ALL_TESTS();
89 }
90