Chromium Code Reviews| Index: sql/connection_unittest.cc |
| diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc |
| index 565c12fb9ab113c781de7ebe4e29bd3edb530f8a..539c1056ea9ef2a5e98d54447c7e8bd2895287f4 100644 |
| --- a/sql/connection_unittest.cc |
| +++ b/sql/connection_unittest.cc |
| @@ -142,10 +142,20 @@ TEST_F(SQLConnectionTest, Raze) { |
| ASSERT_TRUE(db().Execute(kCreateSql)); |
| ASSERT_TRUE(db().Execute("INSERT INTO foo (value) VALUES (12)")); |
| + int pragma_auto_vacuum = 0; |
| + { |
| + sql::Statement s(db().GetUniqueStatement("PRAGMA auto_vacuum")); |
| + ASSERT_TRUE(s.Step()); |
| + pragma_auto_vacuum = s.ColumnInt(0); |
| + } |
|
Scott Hess - ex-Googler
2012/08/05 15:34:46
2 is a valid auto_vacuum result. I don't know how
Yaron
2012/08/06 17:23:43
Done.
|
| + |
| + // If auto_vacuum is set, there's an extra page to maintain a freelist. |
| + const int kExpectedPageCount = 2 + pragma_auto_vacuum; |
| + |
| { |
| sql::Statement s(db().GetUniqueStatement("PRAGMA page_count")); |
| ASSERT_TRUE(s.Step()); |
| - EXPECT_EQ(2, s.ColumnInt(0)); |
| + EXPECT_EQ(kExpectedPageCount, s.ColumnInt(0)); |
| } |
| { |
| @@ -154,7 +164,8 @@ TEST_F(SQLConnectionTest, Raze) { |
| EXPECT_EQ("table", s.ColumnString(0)); |
| EXPECT_EQ("foo", s.ColumnString(1)); |
| EXPECT_EQ("foo", s.ColumnString(2)); |
| - EXPECT_EQ(2, s.ColumnInt(3)); |
| + // Table "foo" is stored in the last page of the file. |
| + EXPECT_EQ(kExpectedPageCount, s.ColumnInt(3)); |
| EXPECT_EQ(kCreateSql, s.ColumnString(4)); |
| } |
| @@ -170,6 +181,13 @@ TEST_F(SQLConnectionTest, Raze) { |
| sql::Statement s(db().GetUniqueStatement("SELECT * FROM sqlite_master")); |
| ASSERT_FALSE(s.Step()); |
| } |
| + |
| + { |
| + sql::Statement s(db().GetUniqueStatement("PRAGMA auto_vacuum")); |
| + ASSERT_TRUE(s.Step()); |
| + // auto_vacuum must be preserved across a Raze. |
| + EXPECT_EQ(pragma_auto_vacuum, s.ColumnInt(0)); |
| + } |
| } |
| // Test that Raze() maintains page_size. |