Index: sql/connection_unittest.cc |
diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc |
index 07c9fa7c732c0714e4eb07a5799f0946ed7a1076..3cb2e370fb4a21102c6c16cb18986cdfb5207b9d 100644 |
--- a/sql/connection_unittest.cc |
+++ b/sql/connection_unittest.cc |
@@ -176,10 +176,9 @@ TEST_F(SQLConnectionTest, DoesStuffExist) { |
// Test DoesTableExist. |
EXPECT_FALSE(db().DoesTableExist("foo")); |
ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); |
+ ASSERT_TRUE(db().Execute("CREATE INDEX foo_a ON foo (a)")); |
EXPECT_TRUE(db().DoesTableExist("foo")); |
- |
- // Should be case sensitive. |
- EXPECT_FALSE(db().DoesTableExist("FOO")); |
+ EXPECT_TRUE(db().DoesIndexExist("foo_a")); |
// Test DoesColumnExist. |
EXPECT_FALSE(db().DoesColumnExist("foo", "bar")); |
@@ -187,6 +186,10 @@ TEST_F(SQLConnectionTest, DoesStuffExist) { |
// Testing for a column on a nonexistent table. |
EXPECT_FALSE(db().DoesColumnExist("bar", "b")); |
+ |
+ // Names are not case sensitive. |
+ EXPECT_TRUE(db().DoesTableExist("FOO")); |
+ EXPECT_TRUE(db().DoesColumnExist("FOO", "A")); |
} |
TEST_F(SQLConnectionTest, GetLastInsertRowId) { |
@@ -221,10 +224,36 @@ TEST_F(SQLConnectionTest, ScopedIgnoreError) { |
ASSERT_TRUE(db().Execute(kCreateSql)); |
ASSERT_TRUE(db().Execute("INSERT INTO foo (id) VALUES (12)")); |
- sql::ScopedErrorIgnorer ignore_errors; |
- ignore_errors.IgnoreError(SQLITE_CONSTRAINT); |
- ASSERT_FALSE(db().Execute("INSERT INTO foo (id) VALUES (12)")); |
- ASSERT_TRUE(ignore_errors.CheckIgnoredErrors()); |
+ { |
+ sql::ScopedErrorIgnorer ignore_errors; |
+ ignore_errors.IgnoreError(SQLITE_CONSTRAINT); |
+ ASSERT_FALSE(db().Execute("INSERT INTO foo (id) VALUES (12)")); |
+ ASSERT_TRUE(ignore_errors.CheckIgnoredErrors()); |
+ } |
+} |
+ |
+// Test that clients of GetUntrackedStatement() can test corruption-handling |
+// with ScopedErrorIgnorer. |
+TEST_F(SQLConnectionTest, ScopedIgnoreUntracked) { |
+ const char* kCreateSql = "CREATE TABLE foo (id INTEGER UNIQUE)"; |
+ ASSERT_TRUE(db().Execute(kCreateSql)); |
+ ASSERT_FALSE(db().DoesTableExist("bar")); |
+ ASSERT_TRUE(db().DoesTableExist("foo")); |
+ ASSERT_TRUE(db().DoesColumnExist("foo", "id")); |
+ db().Close(); |
+ |
+ // Corrupt the database so that nothing works, including PRAGMAs. |
+ ASSERT_TRUE(sql::test::CorruptSizeInHeader(db_path())); |
+ |
+ { |
+ sql::ScopedErrorIgnorer ignore_errors; |
+ ignore_errors.IgnoreError(SQLITE_CORRUPT); |
+ ASSERT_TRUE(db().Open(db_path())); |
+ ASSERT_FALSE(db().DoesTableExist("bar")); |
+ ASSERT_FALSE(db().DoesTableExist("foo")); |
+ ASSERT_FALSE(db().DoesColumnExist("foo", "id")); |
+ ASSERT_TRUE(ignore_errors.CheckIgnoredErrors()); |
+ } |
} |
TEST_F(SQLConnectionTest, ErrorCallback) { |