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

Side by Side Diff: chrome/browser/sync/sessions/status_controller_unittest.cc

Issue 9699057: [Sync] Move 'sync' target to sync/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Tim's comments Created 8 years, 9 months 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 "chrome/browser/sync/sessions/sync_session.h"
6 #include "chrome/browser/sync/test/engine/test_id_factory.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace browser_sync {
10 namespace sessions {
11
12 class StatusControllerTest : public testing::Test {
13 public:
14 virtual void SetUp() {
15 routes_[syncable::BOOKMARKS] = GROUP_UI;
16 }
17 protected:
18 ModelSafeRoutingInfo routes_;
19 };
20
21 TEST_F(StatusControllerTest, GetsDirty) {
22 StatusController status(routes_);
23 status.set_num_server_changes_remaining(30);
24 EXPECT_TRUE(status.TestAndClearIsDirty());
25
26 status.set_invalid_store(true);
27 EXPECT_TRUE(status.TestAndClearIsDirty());
28 status.set_invalid_store(false);
29 EXPECT_TRUE(status.TestAndClearIsDirty());
30
31 status.increment_num_successful_commits();
32 EXPECT_TRUE(status.TestAndClearIsDirty());
33 status.increment_num_successful_commits();
34 EXPECT_TRUE(status.TestAndClearIsDirty());
35
36 {
37 ScopedModelSafeGroupRestriction r(&status, GROUP_UI);
38 status.mutable_conflict_progress()->
39 AddSimpleConflictingItemById(syncable::Id());
40 }
41 EXPECT_TRUE(status.TestAndClearIsDirty());
42
43 std::vector<int64> v;
44 v.push_back(1);
45 status.set_unsynced_handles(v);
46 EXPECT_TRUE(status.TestAndClearIsDirty());
47 std::vector<int64> v2;
48 v2.push_back(1);
49 status.set_unsynced_handles(v2);
50 EXPECT_FALSE(status.TestAndClearIsDirty()); // Test for deep comparison.
51 }
52
53 TEST_F(StatusControllerTest, StaysClean) {
54 StatusController status(routes_);
55 status.update_conflicts_resolved(true);
56 EXPECT_FALSE(status.TestAndClearIsDirty());
57
58 status.set_items_committed();
59 EXPECT_FALSE(status.TestAndClearIsDirty());
60
61 OrderedCommitSet commits(routes_);
62 commits.AddCommitItem(0, syncable::Id(), syncable::BOOKMARKS);
63 status.set_commit_set(commits);
64 EXPECT_FALSE(status.TestAndClearIsDirty());
65 }
66
67 // This test is useful, as simple as it sounds, due to the copy-paste prone
68 // nature of status_controller.cc (we have had bugs in the past where a set_foo
69 // method was actually setting |bar_| instead!).
70 TEST_F(StatusControllerTest, ReadYourWrites) {
71 StatusController status(routes_);
72 status.set_num_server_changes_remaining(13);
73 EXPECT_EQ(13, status.num_server_changes_remaining());
74
75 EXPECT_FALSE(status.syncer_status().invalid_store);
76 status.set_invalid_store(true);
77 EXPECT_TRUE(status.syncer_status().invalid_store);
78
79 EXPECT_FALSE(status.conflicts_resolved());
80 status.update_conflicts_resolved(true);
81 EXPECT_TRUE(status.conflicts_resolved());
82
83 status.set_last_download_updates_result(SYNCER_OK);
84 EXPECT_EQ(SYNCER_OK, status.error().last_download_updates_result);
85
86 status.set_last_post_commit_result(SYNC_AUTH_ERROR);
87 EXPECT_EQ(SYNC_AUTH_ERROR, status.error().last_post_commit_result);
88
89 status.set_last_process_commit_response_result(SYNC_SERVER_ERROR);
90 EXPECT_EQ(SYNC_SERVER_ERROR,
91 status.error().last_process_commit_response_result);
92
93 for (int i = 0; i < 14; i++)
94 status.increment_num_successful_commits();
95 EXPECT_EQ(14, status.syncer_status().num_successful_commits);
96
97 std::vector<int64> v;
98 v.push_back(16);
99 status.set_unsynced_handles(v);
100 EXPECT_EQ(16, v[0]);
101 }
102
103 TEST_F(StatusControllerTest, HasConflictingUpdates) {
104 StatusController status(routes_);
105 EXPECT_FALSE(status.HasConflictingUpdates());
106 {
107 ScopedModelSafeGroupRestriction r(&status, GROUP_UI);
108 EXPECT_FALSE(status.update_progress());
109 status.mutable_update_progress()->AddAppliedUpdate(SUCCESS,
110 syncable::Id());
111 status.mutable_update_progress()->AddAppliedUpdate(CONFLICT_SIMPLE,
112 syncable::Id());
113 EXPECT_TRUE(status.update_progress()->HasConflictingUpdates());
114 }
115
116 EXPECT_TRUE(status.HasConflictingUpdates());
117
118 {
119 ScopedModelSafeGroupRestriction r(&status, GROUP_PASSIVE);
120 EXPECT_FALSE(status.update_progress());
121 }
122 }
123
124 TEST_F(StatusControllerTest, HasConflictingUpdates_NonBlockingUpdates) {
125 StatusController status(routes_);
126 EXPECT_FALSE(status.HasConflictingUpdates());
127 {
128 ScopedModelSafeGroupRestriction r(&status, GROUP_UI);
129 EXPECT_FALSE(status.update_progress());
130 status.mutable_update_progress()->AddAppliedUpdate(SUCCESS,
131 syncable::Id());
132 status.mutable_update_progress()->AddAppliedUpdate(CONFLICT_HIERARCHY,
133 syncable::Id());
134 EXPECT_TRUE(status.update_progress()->HasConflictingUpdates());
135 }
136
137 EXPECT_TRUE(status.HasConflictingUpdates());
138 }
139
140 TEST_F(StatusControllerTest, CountUpdates) {
141 StatusController status(routes_);
142 EXPECT_EQ(0, status.CountUpdates());
143 ClientToServerResponse* response(status.mutable_updates_response());
144 sync_pb::SyncEntity* entity1 = response->mutable_get_updates()->add_entries();
145 sync_pb::SyncEntity* entity2 = response->mutable_get_updates()->add_entries();
146 ASSERT_TRUE(entity1 != NULL && entity2 != NULL);
147 EXPECT_EQ(2, status.CountUpdates());
148 }
149
150 // Test TotalNumConflictingItems
151 TEST_F(StatusControllerTest, TotalNumConflictingItems) {
152 StatusController status(routes_);
153 TestIdFactory f;
154 {
155 ScopedModelSafeGroupRestriction r(&status, GROUP_UI);
156 EXPECT_FALSE(status.conflict_progress());
157 status.mutable_conflict_progress()->
158 AddSimpleConflictingItemById(f.NewLocalId());
159 status.mutable_conflict_progress()->
160 AddSimpleConflictingItemById(f.NewLocalId());
161 EXPECT_EQ(2, status.conflict_progress()->SimpleConflictingItemsSize());
162 }
163 EXPECT_EQ(2, status.TotalNumConflictingItems());
164 {
165 ScopedModelSafeGroupRestriction r(&status, GROUP_DB);
166 EXPECT_FALSE(status.conflict_progress());
167 status.mutable_conflict_progress()->
168 AddSimpleConflictingItemById(f.NewLocalId());
169 status.mutable_conflict_progress()->
170 AddSimpleConflictingItemById(f.NewLocalId());
171 EXPECT_EQ(2, status.conflict_progress()->SimpleConflictingItemsSize());
172 }
173 EXPECT_EQ(4, status.TotalNumConflictingItems());
174 }
175
176 // Basic test that non group-restricted state accessors don't cause violations.
177 TEST_F(StatusControllerTest, Unrestricted) {
178 StatusController status(routes_);
179 const UpdateProgress* progress =
180 status.GetUnrestrictedUpdateProgress(GROUP_UI);
181 EXPECT_FALSE(progress);
182 status.mutable_commit_message();
183 status.commit_response();
184 status.mutable_commit_response();
185 status.updates_response();
186 status.mutable_updates_response();
187 status.error();
188 status.syncer_status();
189 status.num_server_changes_remaining();
190 status.commit_ids();
191 status.HasBookmarkCommitActivity();
192 status.download_updates_succeeded();
193 status.ServerSaysNothingMoreToDownload();
194 status.group_restriction();
195 }
196
197 } // namespace sessions
198 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/sessions/status_controller.cc ('k') | chrome/browser/sync/sessions/sync_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698