From bc7ab0605f128720a0530094f4665d0dd76bf45f Mon Sep 17 00:00:00 2001 From: Victor Costan Date: Fri, 20 Apr 2018 19:03:56 +0000 Subject: [PATCH] sql: Add feature test for default values on boolean columns in SQLite. The feature is used by //components/webdata. This test will help make sure the feature keeps working as we upgrade SQLite. Bug: 829893 Change-Id: Ie94439e5abd2cad4e0e15bad92ec3af462850b4c Reviewed-on: https://chromium-review.googlesource.com/1015206 Reviewed-by: Chris Mumford Commit-Queue: Victor Costan Cr-Commit-Position: refs/heads/master@{#552419} --- sql/sqlite_features_unittest.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/sql/sqlite_features_unittest.cc b/sql/sqlite_features_unittest.cc index 6585ce09700eef..ce3e729120185d 100644 --- a/sql/sqlite_features_unittest.cc +++ b/sql/sqlite_features_unittest.cc @@ -155,6 +155,34 @@ TEST_F(SQLiteFeaturesTest, ForeignKeySupport) { EXPECT_EQ("", ExecuteWithResult(&db(), kSelectChildren)); } +// Ensure that our SQLite version supports booleans. +TEST_F(SQLiteFeaturesTest, BooleanSupport) { + ASSERT_TRUE( + db().Execute("CREATE TABLE flags (" + " id INTEGER PRIMARY KEY," + " true_flag BOOL NOT NULL DEFAULT TRUE," + " false_flag BOOL NOT NULL DEFAULT FALSE)")); + ASSERT_TRUE(db().Execute( + "ALTER TABLE flags ADD COLUMN true_flag2 BOOL NOT NULL DEFAULT TRUE")); + ASSERT_TRUE(db().Execute( + "ALTER TABLE flags ADD COLUMN false_flag2 BOOL NOT NULL DEFAULT FALSE")); + ASSERT_TRUE(db().Execute("INSERT INTO flags (id) VALUES (1)")); + + sql::Statement s(db().GetUniqueStatement( + "SELECT true_flag, false_flag, true_flag2, false_flag2" + " FROM flags WHERE id=1;")); + ASSERT_TRUE(s.Step()); + + // TODO(pwnall): Enable this check after upgrading to SQLite 3.23. + // EXPECT_TRUE(s.ColumnBool(0)) << " default TRUE at table creation time"; + EXPECT_TRUE(!s.ColumnBool(1)) << " default FALSE at table creation time"; + + // TODO(pwnall): Enable this check after upgrading to SQLite 3.23. + // EXPECT_TRUE(s.ColumnBool(2)) + // << " default TRUE added by altering the table"; + EXPECT_TRUE(!s.ColumnBool(3)) << " default FALSE added by altering the table"; +} + #if defined(OS_FUCHSIA) // If the platform cannot support SQLite mmap'ed I/O, make sure SQLite isn't // offering to support it.