Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: blimp/helium/lazy_syncable_adapter_unittest.cc

Issue 2522633004: Add LazySyncableAdapter (Closed)
Patch Set: kmarshall feedback Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « blimp/helium/lazy_syncable_adapter.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
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 "blimp/helium/lazy_syncable_adapter.h"
6
7 #include <stdint.h>
8
9 #include "base/bind.h"
10 #include "base/bind_helpers.h"
Kevin M 2016/12/03 00:35:01 Not used?
steimel 2016/12/03 00:41:05 Done.
11 #include "blimp/helium/helium_test.h"
12 #include "blimp/helium/serializable_struct.h"
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 using testing::_;
17 using testing::DoAll;
18 using testing::Return;
19 using testing::SaveArg;
20
21 namespace blimp {
22 namespace helium {
23 namespace {
24
25 constexpr Revision revision = 42;
Kevin M 2016/12/03 00:35:01 kRevision
steimel 2016/12/03 00:41:05 Done.
26
27 struct TestSyncableChangeset : public SerializableStruct {
28 TestSyncableChangeset() : value(this) {}
29 ~TestSyncableChangeset() override {}
30
31 TestSyncableChangeset& operator=(const TestSyncableChangeset& other) {
32 value.Set(other.value());
33 return *this;
34 }
35
36 Field<int32_t> value;
37 };
38
39 class MockSyncable : public LazySyncable<TestSyncableChangeset> {
40 public:
41 MockSyncable() {}
42 ~MockSyncable() = default;
43
44 // LazySyncable implementation.
45 MOCK_CONST_METHOD1(CreateChangesetMock, TestSyncableChangeset*(Revision));
46 MOCK_METHOD1(ApplyChangeset, void(const TestSyncableChangeset&));
47 MOCK_METHOD1(SetLocalUpdateCallback, void(const base::Closure&));
48 MOCK_CONST_METHOD1(ValidateChangeset, bool(const TestSyncableChangeset&));
49 MOCK_METHOD1(ReleaseBefore, void(Revision));
50 MOCK_CONST_METHOD0(GetRevision, Revision());
51 MOCK_METHOD2(PrepareToCreateChangeset, void(Revision, base::Closure));
52
53 std::unique_ptr<TestSyncableChangeset> CreateChangeset(Revision from) const {
54 return base::WrapUnique<TestSyncableChangeset>(CreateChangesetMock(from));
55 }
56
57 private:
58 DISALLOW_COPY_AND_ASSIGN(MockSyncable);
59 };
60
61 class LazySyncableAdapterTest : public HeliumTest {
62 public:
63 LazySyncableAdapterTest() : adapter_(&syncable_) {}
64 ~LazySyncableAdapterTest() override = default;
65
66 MOCK_METHOD0(CallbackMock, void());
67
68 protected:
69 MockSyncable syncable_;
70 LazySyncableAdapter<TestSyncableChangeset> adapter_;
71
72 private:
73 DISALLOW_COPY_AND_ASSIGN(LazySyncableAdapterTest);
74 };
75
76 TEST_F(LazySyncableAdapterTest, ForwardsSetLocalCallback) {
77 base::Closure callback_arg;
78
79 EXPECT_CALL(syncable_, SetLocalUpdateCallback(_))
80 .WillOnce(SaveArg<0>(&callback_arg));
81 adapter_.SetLocalUpdateCallback(base::Bind(
82 &LazySyncableAdapterTest::CallbackMock, base::Unretained(this)));
83
84 EXPECT_CALL(*this, CallbackMock());
85 callback_arg.Run();
86 }
87
88 TEST_F(LazySyncableAdapterTest, ForwardsReleaseBefore) {
89 EXPECT_CALL(syncable_, ReleaseBefore(revision));
90 adapter_.ReleaseBefore(revision);
91 }
92
93 TEST_F(LazySyncableAdapterTest, ForwardsGetRevision) {
94 EXPECT_CALL(syncable_, GetRevision()).WillOnce(Return(revision));
95 EXPECT_EQ(revision, adapter_.GetRevision());
96 }
97
98 TEST_F(LazySyncableAdapterTest, ForwardsPrepareToCreateChangeset) {
99 base::Closure callback_arg;
100
101 EXPECT_CALL(syncable_, PrepareToCreateChangeset(revision, _))
102 .WillOnce(SaveArg<1>(&callback_arg));
103 adapter_.PrepareToCreateChangeset(
104 revision, base::Bind(&LazySyncableAdapterTest::CallbackMock,
105 base::Unretained(this)));
106
107 EXPECT_CALL(*this, CallbackMock());
108 callback_arg.Run();
109 }
110
111 TEST_F(LazySyncableAdapterTest, SerializesParsesForwardsChangesets) {
112 std::unique_ptr<TestSyncableChangeset> changeset =
113 base::MakeUnique<TestSyncableChangeset>();
114 changeset->value.Set(33);
115
116 EXPECT_CALL(syncable_, CreateChangesetMock(revision))
117 .WillOnce(Return(changeset.release()));
118 std::unique_ptr<std::string> string_changeset =
119 adapter_.CreateChangeset(revision);
120
121 TestSyncableChangeset validate_changeset;
122 EXPECT_CALL(syncable_, ValidateChangeset(_))
123 .WillOnce(DoAll(SaveArg<0>(&validate_changeset), Return(true)));
124 EXPECT_EQ(true, adapter_.ValidateChangeset(*string_changeset));
125 EXPECT_EQ(33, validate_changeset.value());
126
127 TestSyncableChangeset apply_changeset;
128 EXPECT_CALL(syncable_, ApplyChangeset(_))
129 .WillOnce(SaveArg<0>(&apply_changeset));
130 adapter_.ApplyChangeset(*string_changeset);
131 EXPECT_EQ(33, apply_changeset.value());
132 }
133
134 } // namespace
135 } // namespace helium
136 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/helium/lazy_syncable_adapter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698