OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/sync/syncable/syncable.h" | 5 #include "chrome/browser/sync/syncable/syncable.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #include <sys/types.h> | 9 #include <sys/types.h> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 #include "third_party/sqlite/sqlite3.h" | 40 #include "third_party/sqlite/sqlite3.h" |
41 | 41 |
42 using browser_sync::TestIdFactory; | 42 using browser_sync::TestIdFactory; |
43 using test::ExpectDictBooleanValue; | 43 using test::ExpectDictBooleanValue; |
44 using test::ExpectDictStringValue; | 44 using test::ExpectDictStringValue; |
45 | 45 |
46 namespace syncable { | 46 namespace syncable { |
47 | 47 |
48 class SyncableKernelTest : public testing::Test {}; | 48 class SyncableKernelTest : public testing::Test {}; |
49 | 49 |
| 50 // TODO(akalin): Add unit tests for EntryKernel::ContainsString(). |
| 51 |
50 TEST_F(SyncableKernelTest, ToValue) { | 52 TEST_F(SyncableKernelTest, ToValue) { |
51 EntryKernel kernel; | 53 EntryKernel kernel; |
52 scoped_ptr<DictionaryValue> value(kernel.ToValue()); | 54 scoped_ptr<DictionaryValue> value(kernel.ToValue()); |
53 if (value.get()) { | 55 if (value.get()) { |
54 // Not much to check without repeating the ToValue() code. | 56 // Not much to check without repeating the ToValue() code. |
55 EXPECT_TRUE(value->HasKey("isDirty")); | 57 EXPECT_TRUE(value->HasKey("isDirty")); |
56 // The extra +1 is for "isDirty". | 58 // The extra +1 is for "isDirty". |
57 EXPECT_EQ(BIT_TEMPS_END - BEGIN_FIELDS + 1, | 59 EXPECT_EQ(BIT_TEMPS_END - BEGIN_FIELDS + 1, |
58 static_cast<int>(value->size())); | 60 static_cast<int>(value->size())); |
59 } else { | 61 } else { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 } | 100 } |
99 protected: | 101 protected: |
100 ScopedTempDir temp_dir_; | 102 ScopedTempDir temp_dir_; |
101 FilePath db_path_; | 103 FilePath db_path_; |
102 }; | 104 }; |
103 | 105 |
104 TEST_F(SyncableGeneralTest, General) { | 106 TEST_F(SyncableGeneralTest, General) { |
105 Directory dir; | 107 Directory dir; |
106 dir.Open(db_path_, "SimpleTest"); | 108 dir.Open(db_path_, "SimpleTest"); |
107 | 109 |
| 110 int64 root_metahandle; |
| 111 { |
| 112 ReadTransaction rtrans(&dir, __FILE__, __LINE__); |
| 113 Entry e(&rtrans, GET_BY_ID, rtrans.root_id()); |
| 114 ASSERT_TRUE(e.good()); |
| 115 root_metahandle = e.Get(META_HANDLE); |
| 116 } |
| 117 |
108 int64 written_metahandle; | 118 int64 written_metahandle; |
109 const Id id = TestIdFactory::FromNumber(99); | 119 const Id id = TestIdFactory::FromNumber(99); |
110 std::string name = "Jeff"; | 120 std::string name = "Jeff"; |
111 // Test simple read operations on an empty DB. | 121 // Test simple read operations on an empty DB. |
112 { | 122 { |
113 ReadTransaction rtrans(&dir, __FILE__, __LINE__); | 123 ReadTransaction rtrans(&dir, __FILE__, __LINE__); |
114 Entry e(&rtrans, GET_BY_ID, id); | 124 Entry e(&rtrans, GET_BY_ID, id); |
115 ASSERT_FALSE(e.good()); // Hasn't been written yet. | 125 ASSERT_FALSE(e.good()); // Hasn't been written yet. |
116 | 126 |
117 Directory::ChildHandles child_handles; | 127 Directory::ChildHandles child_handles; |
118 dir.GetChildHandles(&rtrans, rtrans.root_id(), &child_handles); | 128 dir.GetChildHandlesById(&rtrans, rtrans.root_id(), &child_handles); |
| 129 EXPECT_TRUE(child_handles.empty()); |
| 130 |
| 131 dir.GetChildHandlesByHandle(&rtrans, root_metahandle, &child_handles); |
119 EXPECT_TRUE(child_handles.empty()); | 132 EXPECT_TRUE(child_handles.empty()); |
120 } | 133 } |
121 | 134 |
122 // Test creating a new meta entry. | 135 // Test creating a new meta entry. |
123 { | 136 { |
124 WriteTransaction wtrans(&dir, UNITTEST, __FILE__, __LINE__); | 137 WriteTransaction wtrans(&dir, UNITTEST, __FILE__, __LINE__); |
125 MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name); | 138 MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name); |
126 ASSERT_TRUE(me.good()); | 139 ASSERT_TRUE(me.good()); |
127 me.Put(ID, id); | 140 me.Put(ID, id); |
128 me.Put(BASE_VERSION, 1); | 141 me.Put(BASE_VERSION, 1); |
129 written_metahandle = me.Get(META_HANDLE); | 142 written_metahandle = me.Get(META_HANDLE); |
130 } | 143 } |
131 | 144 |
132 // Test GetChildHandles after something is now in the DB. | 145 // Test GetChildHandles* after something is now in the DB. |
133 // Also check that GET_BY_ID works. | 146 // Also check that GET_BY_ID works. |
134 { | 147 { |
135 ReadTransaction rtrans(&dir, __FILE__, __LINE__); | 148 ReadTransaction rtrans(&dir, __FILE__, __LINE__); |
136 Entry e(&rtrans, GET_BY_ID, id); | 149 Entry e(&rtrans, GET_BY_ID, id); |
137 ASSERT_TRUE(e.good()); | 150 ASSERT_TRUE(e.good()); |
138 | 151 |
139 Directory::ChildHandles child_handles; | 152 Directory::ChildHandles child_handles; |
140 dir.GetChildHandles(&rtrans, rtrans.root_id(), &child_handles); | 153 dir.GetChildHandlesById(&rtrans, rtrans.root_id(), &child_handles); |
141 EXPECT_EQ(1u, child_handles.size()); | 154 EXPECT_EQ(1u, child_handles.size()); |
142 | 155 |
143 for (Directory::ChildHandles::iterator i = child_handles.begin(); | 156 for (Directory::ChildHandles::iterator i = child_handles.begin(); |
| 157 i != child_handles.end(); ++i) { |
| 158 EXPECT_EQ(*i, written_metahandle); |
| 159 } |
| 160 |
| 161 dir.GetChildHandlesByHandle(&rtrans, root_metahandle, &child_handles); |
| 162 EXPECT_EQ(1u, child_handles.size()); |
| 163 |
| 164 for (Directory::ChildHandles::iterator i = child_handles.begin(); |
144 i != child_handles.end(); ++i) { | 165 i != child_handles.end(); ++i) { |
145 EXPECT_EQ(*i, written_metahandle); | 166 EXPECT_EQ(*i, written_metahandle); |
146 } | 167 } |
147 } | 168 } |
148 | 169 |
149 // Test writing data to an entity. Also check that GET_BY_HANDLE works. | 170 // Test writing data to an entity. Also check that GET_BY_HANDLE works. |
150 static const char s[] = "Hello World."; | 171 static const char s[] = "Hello World."; |
151 { | 172 { |
152 WriteTransaction trans(&dir, UNITTEST, __FILE__, __LINE__); | 173 WriteTransaction trans(&dir, UNITTEST, __FILE__, __LINE__); |
153 MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle); | 174 MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle); |
(...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1781 TEST_F(SyncableClientTagTest, TestClientTagIndexDuplicateServer) { | 1802 TEST_F(SyncableClientTagTest, TestClientTagIndexDuplicateServer) { |
1782 EXPECT_TRUE(CreateWithDefaultTag(factory_.NewServerId(), true)); | 1803 EXPECT_TRUE(CreateWithDefaultTag(factory_.NewServerId(), true)); |
1783 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), true)); | 1804 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), true)); |
1784 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), false)); | 1805 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), false)); |
1785 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), false)); | 1806 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), false)); |
1786 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), true)); | 1807 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), true)); |
1787 } | 1808 } |
1788 | 1809 |
1789 } // namespace | 1810 } // namespace |
1790 } // namespace syncable | 1811 } // namespace syncable |
OLD | NEW |