| Index: sql/sqlite_features_unittest.cc
|
| diff --git a/sql/sqlite_features_unittest.cc b/sql/sqlite_features_unittest.cc
|
| index e721693383fbe0d73abfcb846de5e47767bbeed5..b93a2235b163162e8c3a370249d0241f94c76d1f 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
|
|
|