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

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

Issue 11185064: FYI: Move conflict resolve + clean up afterwards (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
« no previous file with comments | « sync/sessions/status_controller.cc ('k') | sync/sessions/sync_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sync/sessions/sync_session.h" 5 #include "sync/sessions/sync_session.h"
6 #include "sync/test/engine/test_id_factory.h" 6 #include "sync/test/engine/test_id_factory.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace syncer { 9 namespace syncer {
10 namespace sessions { 10 namespace sessions {
11 11
12 class StatusControllerTest : public testing::Test { 12 class StatusControllerTest : public testing::Test {
13 public: 13 public:
14 virtual void SetUp() { 14 virtual void SetUp() {
15 routes_[BOOKMARKS] = GROUP_UI; 15 routes_[BOOKMARKS] = GROUP_UI;
16 } 16 }
17 protected: 17 protected:
18 ModelSafeRoutingInfo routes_; 18 ModelSafeRoutingInfo routes_;
19 }; 19 };
20 20
21 // This test is useful, as simple as it sounds, due to the copy-paste prone 21 // This test is useful, as simple as it sounds, due to the copy-paste prone
22 // nature of status_controller.cc (we have had bugs in the past where a set_foo 22 // nature of status_controller.cc (we have had bugs in the past where a set_foo
23 // method was actually setting |bar_| instead!). 23 // method was actually setting |bar_| instead!).
24 TEST_F(StatusControllerTest, ReadYourWrites) { 24 TEST_F(StatusControllerTest, ReadYourWrites) {
25 StatusController status(routes_); 25 StatusController status(routes_);
26 status.set_num_server_changes_remaining(13); 26 status.set_num_server_changes_remaining(13);
27 EXPECT_EQ(13, status.num_server_changes_remaining()); 27 EXPECT_EQ(13, status.num_server_changes_remaining());
28 28
29 EXPECT_FALSE(status.conflicts_resolved());
30 status.update_conflicts_resolved(true);
31 EXPECT_TRUE(status.conflicts_resolved());
32
33 status.set_last_download_updates_result(SYNCER_OK); 29 status.set_last_download_updates_result(SYNCER_OK);
34 EXPECT_EQ(SYNCER_OK, 30 EXPECT_EQ(SYNCER_OK,
35 status.model_neutral_state().last_download_updates_result); 31 status.model_neutral_state().last_download_updates_result);
36 32
37 status.set_commit_result(SYNC_AUTH_ERROR); 33 status.set_commit_result(SYNC_AUTH_ERROR);
38 EXPECT_EQ(SYNC_AUTH_ERROR, status.model_neutral_state().commit_result); 34 EXPECT_EQ(SYNC_AUTH_ERROR, status.model_neutral_state().commit_result);
39 35
40 for (int i = 0; i < 14; i++) 36 for (int i = 0; i < 14; i++)
41 status.increment_num_successful_commits(); 37 status.increment_num_successful_commits();
42 EXPECT_EQ(14, status.model_neutral_state().num_successful_commits); 38 EXPECT_EQ(14, status.model_neutral_state().num_successful_commits);
43 } 39 }
44 40
45 TEST_F(StatusControllerTest, HasConflictingUpdates) {
46 StatusController status(routes_);
47 EXPECT_FALSE(status.HasConflictingUpdates());
48
49 {
50 ScopedModelSafeGroupRestriction r(&status, GROUP_UI);
51 status.increment_num_updates_applied();
52 status.mutable_simple_conflict_ids()->insert(syncable::Id());
53 }
54
55 EXPECT_TRUE(status.HasConflictingUpdates());
56 }
57
58 TEST_F(StatusControllerTest, HasConflictingUpdates_NonBlockingUpdates) {
59 StatusController status(routes_);
60 EXPECT_FALSE(status.HasConflictingUpdates());
61
62 status.increment_num_updates_applied();
63 status.increment_num_encryption_conflicts();
64 EXPECT_TRUE(status.HasConflictingUpdates());
65 }
66
67 TEST_F(StatusControllerTest, CountUpdates) { 41 TEST_F(StatusControllerTest, CountUpdates) {
68 StatusController status(routes_); 42 StatusController status(routes_);
69 EXPECT_EQ(0, status.CountUpdates()); 43 EXPECT_EQ(0, status.CountUpdates());
70 sync_pb::ClientToServerResponse* response(status.mutable_updates_response()); 44 sync_pb::ClientToServerResponse* response(status.mutable_updates_response());
71 sync_pb::SyncEntity* entity1 = response->mutable_get_updates()->add_entries(); 45 sync_pb::SyncEntity* entity1 = response->mutable_get_updates()->add_entries();
72 sync_pb::SyncEntity* entity2 = response->mutable_get_updates()->add_entries(); 46 sync_pb::SyncEntity* entity2 = response->mutable_get_updates()->add_entries();
73 ASSERT_TRUE(entity1 != NULL && entity2 != NULL); 47 ASSERT_TRUE(entity1 != NULL && entity2 != NULL);
74 EXPECT_EQ(2, status.CountUpdates()); 48 EXPECT_EQ(2, status.CountUpdates());
75 } 49 }
76 50
77 // Test TotalNumConflictingItems 51 // Test TotalNumConflictingItems
78 TEST_F(StatusControllerTest, TotalNumConflictingItems) { 52 TEST_F(StatusControllerTest, TotalNumConflictingItems) {
79 StatusController status(routes_); 53 StatusController status(routes_);
80 TestIdFactory f; 54 EXPECT_EQ(0, status.TotalNumConflictingItems());
81 {
82 ScopedModelSafeGroupRestriction r(&status, GROUP_UI);
83 status.mutable_simple_conflict_ids()->insert(f.NewLocalId());
84 status.mutable_simple_conflict_ids()->insert(f.NewLocalId());
85 EXPECT_EQ(static_cast<size_t>(2), status.simple_conflict_ids()->size());
86 }
87 EXPECT_EQ(2, status.TotalNumConflictingItems());
88 {
89 ScopedModelSafeGroupRestriction r(&status, GROUP_DB);
90 status.mutable_simple_conflict_ids()->insert(f.NewLocalId());
91 status.mutable_simple_conflict_ids()->insert(f.NewLocalId());
92 EXPECT_EQ(static_cast<size_t>(2), status.simple_conflict_ids()->size());
93 }
94 EXPECT_EQ(4, status.TotalNumConflictingItems());
95 55
96 status.increment_num_server_conflicts(); 56 status.increment_num_server_conflicts();
97 status.set_num_hierarchy_conflicts(3); 57 status.increment_num_hierarchy_conflicts_by(3);
98 EXPECT_EQ(8, status.TotalNumConflictingItems()); 58 status.increment_num_encryption_conflicts_by(2);
59 EXPECT_EQ(6, status.TotalNumConflictingItems());
99 } 60 }
100 61
101 // Basic test that non group-restricted state accessors don't cause violations. 62 // Basic test that non group-restricted state accessors don't cause violations.
102 TEST_F(StatusControllerTest, Unrestricted) { 63 TEST_F(StatusControllerTest, Unrestricted) {
103 StatusController status(routes_); 64 StatusController status(routes_);
104 status.model_neutral_state(); 65 status.model_neutral_state();
105 status.download_updates_succeeded(); 66 status.download_updates_succeeded();
106 status.ServerSaysNothingMoreToDownload(); 67 status.ServerSaysNothingMoreToDownload();
107 status.group_restriction(); 68 status.group_restriction();
108 } 69 }
109 70
110 } // namespace sessions 71 } // namespace sessions
111 } // namespace syncer 72 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/sessions/status_controller.cc ('k') | sync/sessions/sync_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698