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

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

Issue 2522633004: Add LazySyncableAdapter (Closed)
Patch Set: minor cleanup 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 "blimp/helium/helium_test.h"
11 #include "blimp/helium/serializable_struct.h"
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 using testing::_;
16 using testing::DoAll;
17 using testing::Return;
18 using testing::SaveArg;
19
20 namespace blimp {
21 namespace helium {
22 namespace {
23
24 constexpr Revision kRevision = 42;
25
26 struct TestSyncableChangeset : public SerializableStruct {
27 TestSyncableChangeset() : value(this) {}
28 ~TestSyncableChangeset() override {}
29
30 TestSyncableChangeset& operator=(const TestSyncableChangeset& other) {
31 value.Set(other.value());
32 return *this;
33 }
34
35 Field<int32_t> value;
36 };
37
38 class MockSyncable : public LazySyncable<TestSyncableChangeset> {
39 public:
40 MockSyncable() {}
41 ~MockSyncable() = default;
42
43 // LazySyncable implementation.
44 MOCK_CONST_METHOD1(CreateChangesetMock, TestSyncableChangeset*(Revision));
45 MOCK_METHOD1(ApplyChangeset, void(const TestSyncableChangeset&));
46 MOCK_METHOD1(SetLocalUpdateCallback, void(const base::Closure&));
47 MOCK_CONST_METHOD1(ValidateChangeset, bool(const TestSyncableChangeset&));
48 MOCK_METHOD1(ReleaseBefore, void(Revision));
49 MOCK_CONST_METHOD0(GetRevision, Revision());
50 MOCK_METHOD2(PrepareToCreateChangeset, void(Revision, base::Closure));
51
52 std::unique_ptr<TestSyncableChangeset> CreateChangeset(Revision from) const {
53 return base::WrapUnique<TestSyncableChangeset>(CreateChangesetMock(from));
54 }
55
56 private:
57 DISALLOW_COPY_AND_ASSIGN(MockSyncable);
58 };
59
60 class LazySyncableAdapterTest : public HeliumTest {
61 public:
62 LazySyncableAdapterTest() : adapter_(&syncable_) {}
63 ~LazySyncableAdapterTest() override = default;
64
65 MOCK_METHOD0(CallbackMock, void());
66
67 protected:
68 MockSyncable syncable_;
69 LazySyncableAdapter<TestSyncableChangeset> adapter_;
70
71 private:
72 DISALLOW_COPY_AND_ASSIGN(LazySyncableAdapterTest);
73 };
74
75 TEST_F(LazySyncableAdapterTest, ForwardsSetLocalCallback) {
76 base::Closure callback_arg;
77
78 EXPECT_CALL(syncable_, SetLocalUpdateCallback(_))
79 .WillOnce(SaveArg<0>(&callback_arg));
80 adapter_.SetLocalUpdateCallback(base::Bind(
81 &LazySyncableAdapterTest::CallbackMock, base::Unretained(this)));
82
83 EXPECT_CALL(*this, CallbackMock());
84 callback_arg.Run();
85 }
86
87 TEST_F(LazySyncableAdapterTest, ForwardsReleaseBefore) {
88 EXPECT_CALL(syncable_, ReleaseBefore(kRevision));
89 adapter_.ReleaseBefore(kRevision);
90 }
91
92 TEST_F(LazySyncableAdapterTest, ForwardsGetRevision) {
93 EXPECT_CALL(syncable_, GetRevision()).WillOnce(Return(kRevision));
94 EXPECT_EQ(kRevision, adapter_.GetRevision());
95 }
96
97 TEST_F(LazySyncableAdapterTest, ForwardsPrepareToCreateChangeset) {
98 base::Closure callback_arg;
99
100 EXPECT_CALL(syncable_, PrepareToCreateChangeset(kRevision, _))
101 .WillOnce(SaveArg<1>(&callback_arg));
102 adapter_.PrepareToCreateChangeset(
103 kRevision, base::Bind(&LazySyncableAdapterTest::CallbackMock,
104 base::Unretained(this)));
105
106 EXPECT_CALL(*this, CallbackMock());
107 callback_arg.Run();
108 }
109
110 TEST_F(LazySyncableAdapterTest, SerializesParsesForwardsChangesets) {
111 std::unique_ptr<TestSyncableChangeset> changeset =
112 base::MakeUnique<TestSyncableChangeset>();
113 changeset->value.Set(33);
114
115 EXPECT_CALL(syncable_, CreateChangesetMock(kRevision))
116 .WillOnce(Return(changeset.release()));
117 std::unique_ptr<std::string> string_changeset =
118 adapter_.CreateChangeset(kRevision);
119
120 TestSyncableChangeset validate_changeset;
121 EXPECT_CALL(syncable_, ValidateChangeset(_))
122 .WillOnce(DoAll(SaveArg<0>(&validate_changeset), Return(true)));
123 EXPECT_EQ(true, adapter_.ValidateChangeset(*string_changeset));
124 EXPECT_EQ(33, validate_changeset.value());
125
126 TestSyncableChangeset apply_changeset;
127 EXPECT_CALL(syncable_, ApplyChangeset(_))
128 .WillOnce(SaveArg<0>(&apply_changeset));
129 adapter_.ApplyChangeset(*string_changeset);
130 EXPECT_EQ(33, apply_changeset.value());
131 }
132
133 } // namespace
134 } // namespace helium
135 } // 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