| 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 |