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

Side by Side Diff: sync/engine/store_timestamps_command_unittest.cc

Issue 11485019: [Sync] Add tests for invalid specifics field number handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 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 | 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 "base/basictypes.h"
6 #include "sync/engine/store_timestamps_command.h"
7 #include "sync/internal_api/public/base/model_type.h"
8 #include "sync/protocol/sync.pb.h"
9 #include "sync/test/engine/syncer_command_test.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace syncer {
13
14 namespace {
15
16 // Adds a progress marker to |response| for the given field number and
17 // token.
18 void AddProgressMarkerForFieldNumber(
19 sync_pb::GetUpdatesResponse* response,
20 int field_number, const std::string& token) {
21 sync_pb::DataTypeProgressMarker* marker =
22 response->add_new_progress_marker();
23 marker->set_data_type_id(field_number);
24 marker->set_token(token);
25 }
26
27 // Adds a progress marker to |response| for the given model type and
28 // token.
29 void AddProgressMarkerForModelType(
30 sync_pb::GetUpdatesResponse* response,
31 ModelType model_type, const std::string& token) {
32 AddProgressMarkerForFieldNumber(
33 response, GetSpecificsFieldNumberFromModelType(model_type), token);
34 }
35
36 class StoreTimestampsCommandTest : public SyncerCommandTest {
37 protected:
38 // Gets the directory's progress marker's token for the given model
39 // type.
40 std::string GetProgessMarkerToken(ModelType model_type) {
41 sync_pb::DataTypeProgressMarker progress_marker;
42 session()->context()->directory()->GetDownloadProgress(
43 model_type, &progress_marker);
44 EXPECT_EQ(
45 GetSpecificsFieldNumberFromModelType(model_type),
46 progress_marker.data_type_id());
47 return progress_marker.token();
48 }
49 };
50
51 // Builds a GetUpdatesResponse with some progress markers, including
52 // invalid ones. ProcessNewProgressMarkers() should return the model
53 // types for the valid progress markers and fill in the progress
54 // markers in the directory.
55 TEST_F(StoreTimestampsCommandTest, ProcessNewProgressMarkers) {
56 sync_pb::GetUpdatesResponse response;
57 AddProgressMarkerForModelType(&response, BOOKMARKS, "token1");
58 AddProgressMarkerForModelType(&response,
59 HISTORY_DELETE_DIRECTIVES, "token2");
60 AddProgressMarkerForFieldNumber(&response, -1, "bad token");
61
62 ModelTypeSet forward_progress_types =
63 ProcessNewProgressMarkers(
64 response, session()->context()->directory());
65
66 EXPECT_TRUE(
67 forward_progress_types.Equals(
68 ModelTypeSet(BOOKMARKS, HISTORY_DELETE_DIRECTIVES)));
69
70 EXPECT_EQ("token1", GetProgessMarkerToken(BOOKMARKS));
71 EXPECT_EQ("token2", GetProgessMarkerToken(HISTORY_DELETE_DIRECTIVES));
72
73 ModelTypeSet non_forward_progress_types =
74 Difference(ModelTypeSet::All(), forward_progress_types);
75 for (ModelTypeSet::Iterator it = non_forward_progress_types.First();
76 it.Good(); it.Inc()) {
77 EXPECT_TRUE(GetProgessMarkerToken(it.Get()).empty());
78 }
79 }
80
81 } // namespace
82
83 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698