OLD | NEW |
| (Empty) |
1 // Copyright 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 // Utilities to verify the state of items in unit tests. | |
6 | |
7 #include "sync/test/engine/test_syncable_utils.h" | |
8 | |
9 #include "sync/syncable/directory.h" | |
10 #include "sync/syncable/entry.h" | |
11 #include "sync/syncable/mutable_entry.h" | |
12 #include "sync/syncable/syncable_base_transaction.h" | |
13 #include "sync/syncable/syncable_write_transaction.h" | |
14 #include "sync/test/engine/test_id_factory.h" | |
15 | |
16 using std::string; | |
17 | |
18 namespace syncer { | |
19 namespace syncable { | |
20 | |
21 int CountEntriesWithName(BaseTransaction* rtrans, | |
22 const syncable::Id& parent_id, | |
23 const string& name) { | |
24 Directory::Metahandles child_handles; | |
25 rtrans->directory()->GetChildHandlesById(rtrans, parent_id, &child_handles); | |
26 if (child_handles.size() <= 0) { | |
27 return 0; | |
28 } | |
29 | |
30 int number_of_entries_with_name = 0; | |
31 for (Directory::Metahandles::iterator i = child_handles.begin(); | |
32 i != child_handles.end(); ++i) { | |
33 Entry e(rtrans, GET_BY_HANDLE, *i); | |
34 CHECK(e.good()); | |
35 if (e.GetNonUniqueName()== name) { | |
36 ++number_of_entries_with_name; | |
37 } | |
38 } | |
39 return number_of_entries_with_name; | |
40 } | |
41 | |
42 Id GetFirstEntryWithName(BaseTransaction* rtrans, | |
43 const syncable::Id& parent_id, | |
44 const string& name) { | |
45 Directory::Metahandles child_handles; | |
46 rtrans->directory()->GetChildHandlesById(rtrans, parent_id, &child_handles); | |
47 | |
48 for (Directory::Metahandles::iterator i = child_handles.begin(); | |
49 i != child_handles.end(); ++i) { | |
50 Entry e(rtrans, GET_BY_HANDLE, *i); | |
51 CHECK(e.good()); | |
52 if (e.GetNonUniqueName()== name) { | |
53 return e.GetId(); | |
54 } | |
55 } | |
56 | |
57 CHECK(false); | |
58 return Id(); | |
59 } | |
60 | |
61 Id GetOnlyEntryWithName(BaseTransaction* rtrans, | |
62 const syncable::Id& parent_id, | |
63 const string& name) { | |
64 CHECK_EQ(1, CountEntriesWithName(rtrans, parent_id, name)); | |
65 return GetFirstEntryWithName(rtrans, parent_id, name); | |
66 } | |
67 | |
68 void CreateTypeRoot(WriteTransaction* trans, | |
69 syncable::Directory *dir, | |
70 ModelType type) { | |
71 std::string tag_name = syncer::ModelTypeToRootTag(type); | |
72 syncable::MutableEntry node(trans, | |
73 syncable::CREATE, | |
74 type, | |
75 TestIdFactory::root(), | |
76 tag_name); | |
77 DCHECK(node.good()); | |
78 node.PutUniqueServerTag(tag_name); | |
79 node.PutIsDir(true); | |
80 node.PutServerIsDir(false); | |
81 node.PutIsUnsynced(false); | |
82 node.PutIsUnappliedUpdate(false); | |
83 node.PutServerVersion(20); | |
84 node.PutBaseVersion(20); | |
85 node.PutIsDel(false); | |
86 node.PutId(syncer::TestIdFactory::MakeServer(tag_name)); | |
87 sync_pb::EntitySpecifics specifics; | |
88 syncer::AddDefaultFieldValue(type, &specifics); | |
89 node.PutServerSpecifics(specifics); | |
90 node.PutSpecifics(specifics); | |
91 } | |
92 | |
93 sync_pb::DataTypeProgressMarker BuildProgress(ModelType type) { | |
94 sync_pb::DataTypeProgressMarker progress; | |
95 progress.set_token("token"); | |
96 progress.set_data_type_id(GetSpecificsFieldNumberFromModelType(type)); | |
97 return progress; | |
98 } | |
99 | |
100 } // namespace syncable | |
101 } // namespace syncer | |
OLD | NEW |