Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2013 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 "sql/meta_table.h" | |
| 6 | |
| 7 #include "base/files/file_path.h" | |
| 8 #include "base/files/scoped_temp_dir.h" | |
| 9 #include "sql/connection.h" | |
| 10 #include "sql/statement.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 namespace { | |
| 14 | |
| 15 class SQLMetaTableTest : public testing::Test { | |
| 16 public: | |
| 17 SQLMetaTableTest() {} | |
|
Greg Billock
2013/08/29 18:05:40
needed?
Scott Hess - ex-Googler
2013/08/29 23:32:26
You're right. Also removing in the place I did th
| |
| 18 | |
| 19 virtual void SetUp() { | |
| 20 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | |
| 21 ASSERT_TRUE(db_.Open(db_path())); | |
| 22 } | |
| 23 | |
| 24 virtual void TearDown() { | |
| 25 db_.Close(); | |
| 26 } | |
| 27 | |
| 28 sql::Connection& db() { return db_; } | |
| 29 | |
| 30 base::FilePath db_path() { | |
|
Greg Billock
2013/08/29 18:05:40
private? or just build in SetUp?
Scott Hess - ex-Googler
2013/08/29 23:32:26
Sure. And connection_unittest.cc while I'm there.
Greg Billock
2013/09/06 16:02:09
I meant just build db_path_ in SetUp and don't hav
Scott Hess - ex-Googler
2013/09/06 16:28:28
Done. Didn't even notice that :-).
| |
| 31 return temp_dir_.path().AppendASCII("SQLMetaTableTest.db"); | |
| 32 } | |
| 33 | |
| 34 private: | |
| 35 base::ScopedTempDir temp_dir_; | |
| 36 sql::Connection db_; | |
|
Scott Hess - ex-Googler
2013/08/29 23:32:26
Hmm. Also, seems iffy to have temp_dir_ destructe
Greg Billock
2013/09/06 16:02:09
This was right, no? Destruction is in reverse orde
Scott Hess - ex-Googler
2013/09/06 16:28:28
Darn it. You are correct, and I know this, but it
Greg Billock
2013/09/06 23:19:34
:-) I feel your pain. :-)
| |
| 37 }; | |
| 38 | |
| 39 TEST_F(SQLMetaTableTest, DoesTableExist) { | |
| 40 EXPECT_FALSE(sql::MetaTable::DoesTableExist(&db())); | |
| 41 | |
| 42 { | |
| 43 sql::MetaTable meta_table; | |
| 44 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 45 } | |
| 46 | |
| 47 EXPECT_TRUE(sql::MetaTable::DoesTableExist(&db())); | |
| 48 } | |
| 49 | |
| 50 TEST_F(SQLMetaTableTest, VersionNumber) { | |
| 51 const int kVersionFirst = 2, kCompatVersionFirst = 1; | |
|
Greg Billock
2013/08/29 18:05:40
one per line (and below)
Scott Hess - ex-Googler
2013/08/29 23:32:26
Done.
| |
| 52 const int kVersionSecond = 4, kCompatVersionSecond = 3; | |
| 53 const int kVersionThird = 6, kCompatVersionThird = 5; | |
| 54 | |
| 55 // First Init() sets the version info as expected. | |
| 56 { | |
| 57 sql::MetaTable meta_table; | |
| 58 EXPECT_TRUE(meta_table.Init(&db(), kVersionFirst, kCompatVersionFirst)); | |
| 59 EXPECT_EQ(kVersionFirst, meta_table.GetVersionNumber()); | |
| 60 EXPECT_EQ(kCompatVersionFirst, meta_table.GetCompatibleVersionNumber()); | |
| 61 } | |
| 62 | |
| 63 // Second Init() does not change the version info. | |
| 64 { | |
| 65 sql::MetaTable meta_table; | |
| 66 EXPECT_TRUE(meta_table.Init(&db(), kVersionSecond, kCompatVersionSecond)); | |
|
Greg Billock
2013/08/29 18:05:40
This sure looks like it is changing the version in
Scott Hess - ex-Googler
2013/08/29 23:32:26
I believe that the idea is that on first run, the
| |
| 67 EXPECT_EQ(kVersionFirst, meta_table.GetVersionNumber()); | |
| 68 EXPECT_EQ(kCompatVersionFirst, meta_table.GetCompatibleVersionNumber()); | |
| 69 | |
| 70 meta_table.SetVersionNumber(kVersionSecond); | |
| 71 meta_table.SetCompatibleVersionNumber(kCompatVersionSecond); | |
| 72 } | |
| 73 | |
| 74 // Version info from Set*() calls is seen. | |
| 75 { | |
| 76 sql::MetaTable meta_table; | |
| 77 EXPECT_TRUE(meta_table.Init(&db(), kVersionThird, kCompatVersionThird)); | |
| 78 EXPECT_EQ(kVersionSecond, meta_table.GetVersionNumber()); | |
| 79 EXPECT_EQ(kCompatVersionSecond, meta_table.GetCompatibleVersionNumber()); | |
| 80 } | |
| 81 } | |
| 82 | |
| 83 TEST_F(SQLMetaTableTest, StringValue) { | |
| 84 const char kKey[] = "String Key"; | |
| 85 const std::string kFirstValue("First Value"), kSecondValue("Second Value"); | |
| 86 | |
| 87 // Initially, the value isn't there until set. | |
| 88 { | |
| 89 sql::MetaTable meta_table; | |
| 90 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 91 | |
| 92 std::string value; | |
| 93 EXPECT_FALSE(meta_table.GetValue(kKey, &value)); | |
| 94 | |
| 95 EXPECT_TRUE(meta_table.SetValue(kKey, kFirstValue)); | |
| 96 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 97 EXPECT_EQ(kFirstValue, value); | |
| 98 } | |
| 99 | |
| 100 // Value is persistent across different instances. | |
| 101 { | |
| 102 sql::MetaTable meta_table; | |
| 103 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 104 | |
| 105 std::string value; | |
| 106 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 107 EXPECT_EQ(kFirstValue, value); | |
| 108 | |
| 109 EXPECT_TRUE(meta_table.SetValue(kKey, kSecondValue)); | |
| 110 } | |
| 111 | |
| 112 // Existing value was successfully changed. | |
| 113 { | |
| 114 sql::MetaTable meta_table; | |
| 115 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 116 | |
| 117 std::string value; | |
| 118 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 119 EXPECT_EQ(kSecondValue, value); | |
| 120 } | |
| 121 } | |
| 122 | |
| 123 TEST_F(SQLMetaTableTest, IntValue) { | |
| 124 const char kKey[] = "Int Key"; | |
| 125 const int kFirstValue = 17, kSecondValue = 23; | |
| 126 | |
| 127 // Initially, the value isn't there until set. | |
| 128 { | |
| 129 sql::MetaTable meta_table; | |
| 130 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 131 | |
| 132 int value; | |
| 133 EXPECT_FALSE(meta_table.GetValue(kKey, &value)); | |
| 134 | |
| 135 EXPECT_TRUE(meta_table.SetValue(kKey, kFirstValue)); | |
| 136 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 137 EXPECT_EQ(kFirstValue, value); | |
| 138 } | |
| 139 | |
| 140 // Value is persistent across different instances. | |
| 141 { | |
| 142 sql::MetaTable meta_table; | |
| 143 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 144 | |
| 145 int value; | |
| 146 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 147 EXPECT_EQ(kFirstValue, value); | |
| 148 | |
| 149 EXPECT_TRUE(meta_table.SetValue(kKey, kSecondValue)); | |
| 150 } | |
| 151 | |
| 152 // Existing value was successfully changed. | |
| 153 { | |
| 154 sql::MetaTable meta_table; | |
| 155 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 156 | |
| 157 int value; | |
| 158 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 159 EXPECT_EQ(kSecondValue, value); | |
| 160 } | |
| 161 } | |
| 162 | |
| 163 TEST_F(SQLMetaTableTest, Int64Value) { | |
| 164 const char kKey[] = "Int Key"; | |
| 165 const int64 kFirstValue = 5000000017LLU, kSecondValue = 5000000023LLU; | |
| 166 | |
| 167 // Initially, the value isn't there until set. | |
| 168 { | |
| 169 sql::MetaTable meta_table; | |
| 170 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 171 | |
| 172 int64 value; | |
| 173 EXPECT_FALSE(meta_table.GetValue(kKey, &value)); | |
| 174 | |
| 175 EXPECT_TRUE(meta_table.SetValue(kKey, kFirstValue)); | |
| 176 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 177 EXPECT_EQ(kFirstValue, value); | |
| 178 } | |
| 179 | |
| 180 // Value is persistent across different instances. | |
| 181 { | |
| 182 sql::MetaTable meta_table; | |
| 183 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 184 | |
| 185 int64 value; | |
| 186 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 187 EXPECT_EQ(kFirstValue, value); | |
| 188 | |
| 189 EXPECT_TRUE(meta_table.SetValue(kKey, kSecondValue)); | |
| 190 } | |
| 191 | |
| 192 // Existing value was successfully changed. | |
| 193 { | |
| 194 sql::MetaTable meta_table; | |
| 195 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 196 | |
| 197 int64 value; | |
| 198 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 199 EXPECT_EQ(kSecondValue, value); | |
| 200 } | |
| 201 } | |
| 202 | |
| 203 TEST_F(SQLMetaTableTest, DeleteKey) { | |
| 204 const char kKey[] = "String Key"; | |
| 205 const std::string kValue("String Value"); | |
| 206 | |
| 207 sql::MetaTable meta_table; | |
| 208 EXPECT_TRUE(meta_table.Init(&db(), 1, 1)); | |
| 209 | |
| 210 // Value isn't present. | |
| 211 std::string value; | |
| 212 EXPECT_FALSE(meta_table.GetValue(kKey, &value)); | |
| 213 | |
| 214 // Now value is present. | |
| 215 EXPECT_TRUE(meta_table.SetValue(kKey, kValue)); | |
| 216 EXPECT_TRUE(meta_table.GetValue(kKey, &value)); | |
| 217 EXPECT_EQ(kValue, value); | |
| 218 | |
| 219 // After delete value isn't present. | |
| 220 EXPECT_TRUE(meta_table.DeleteKey(kKey)); | |
| 221 EXPECT_FALSE(meta_table.GetValue(kKey, &value)); | |
| 222 } | |
| 223 | |
| 224 } // namespace | |
| OLD | NEW |