diff options
Diffstat (limited to 'sql/sqlite_features_unittest.cc')
-rw-r--r-- | sql/sqlite_features_unittest.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sql/sqlite_features_unittest.cc b/sql/sqlite_features_unittest.cc index d9bcb86..1aff80e 100644 --- a/sql/sqlite_features_unittest.cc +++ b/sql/sqlite_features_unittest.cc @@ -71,6 +71,24 @@ TEST_F(SQLiteFeaturesTest, NoFTS1) { TEST_F(SQLiteFeaturesTest, FTS2) { ASSERT_TRUE(db().Execute("CREATE VIRTUAL TABLE foo USING fts2(x)")); } + +// A standard SQLite will not include our patch. This includes iOS. +#if !defined(USE_SYSTEM_SQLITE) +// Chromium fts2 was patched to treat "foo*" as a prefix search, though the icu +// tokenizer will return it as two tokens {"foo", "*"}. +TEST_F(SQLiteFeaturesTest, FTS2_Prefix) { + const char kCreateSql[] = + "CREATE VIRTUAL TABLE foo USING fts2(x, tokenize icu)"; + ASSERT_TRUE(db().Execute(kCreateSql)); + + ASSERT_TRUE(db().Execute("INSERT INTO foo (x) VALUES ('test')")); + + sql::Statement s(db().GetUniqueStatement( + "SELECT x FROM foo WHERE x MATCH 'te*'")); + ASSERT_TRUE(s.Step()); + EXPECT_EQ("test", s.ColumnString(0)); +} +#endif #endif // fts3 is used for current history files, and also for WebDatabase. @@ -78,4 +96,20 @@ TEST_F(SQLiteFeaturesTest, FTS3) { ASSERT_TRUE(db().Execute("CREATE VIRTUAL TABLE foo USING fts3(x)")); } +#if !defined(USE_SYSTEM_SQLITE) +// Test that fts3 doesn't need fts2's patch (see above). +TEST_F(SQLiteFeaturesTest, FTS3_Prefix) { + const char kCreateSql[] = + "CREATE VIRTUAL TABLE foo USING fts3(x, tokenize icu)"; + ASSERT_TRUE(db().Execute(kCreateSql)); + + ASSERT_TRUE(db().Execute("INSERT INTO foo (x) VALUES ('test')")); + + sql::Statement s(db().GetUniqueStatement( + "SELECT x FROM foo WHERE x MATCH 'te*'")); + ASSERT_TRUE(s.Step()); + EXPECT_EQ("test", s.ColumnString(0)); +} +#endif + } // namespace |