DatabaseResultLoaderTest.java revision 52b6f8887bb67b43066739c244e89e54caf2718b
17fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze/*
27fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Copyright (C) 2017 The Android Open Source Project
37fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
47fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Licensed under the Apache License, Version 2.0 (the "License");
57fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * you may not use this file except in compliance with the License.
67fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * You may obtain a copy of the License at
77fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
87fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *      http://www.apache.org/licenses/LICENSE-2.0
97fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Unless required by applicable law or agreed to in writing, software
117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * distributed under the License is distributed on an "AS IS" BASIS,
127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * See the License for the specific language governing permissions and
147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * limitations under the License.
157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze *
167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze */
177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
18b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzepackage com.android.settings.search2;
197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.ContentValues;
217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.Context;
2252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritzeimport android.content.Intent;
237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.database.sqlite.SQLiteDatabase;
24a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang
257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.SettingsRobolectricTestRunner;
267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.TestConfig;
27a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.dashboard.SiteMapManager;
28b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport com.android.settings.search.IndexDatabaseHelper;
29a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhangimport com.android.settings.testutils.DatabaseTestUtils;
30a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.testutils.FakeFeatureFactory;
31a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang
327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.After;
337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Before;
347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Test;
357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.runner.RunWith;
36a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Answers;
37a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Mock;
38a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.MockitoAnnotations;
397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.RuntimeEnvironment;
407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.annotation.Config;
417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritzeimport java.util.ArrayList;
43b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport java.util.List;
44b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport static com.google.common.truth.Truth.assertThat;
46a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.anyString;
47a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.eq;
48a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.times;
49a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.verify;
50a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.when;
517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class)
537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzepublic class DatabaseResultLoaderTest {
557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
56a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
57a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private Context mMockContext;
58a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    @Mock
59a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private SiteMapManager mSiteMapManager;
60a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang    private Context mContext;
617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private DatabaseResultLoader loader;
627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
6352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String titleOne = "titleOne";
6452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String titleTwo = "titleTwo";
6552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String titleThree = "titleThree";
6652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String titleFour = "titleFour";
6752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String summaryOne = "summaryOne";
6852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String summaryTwo = "summaryTwo";
6952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String summaryThree = "summaryThree";
7052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    private final String summaryFour = "summaryFour";
7152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    SQLiteDatabase mDb;
737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Before
757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void setUp() {
76a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        MockitoAnnotations.initMocks(this);
777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mContext = RuntimeEnvironment.application;
78a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        FakeFeatureFactory.setupForTest(mMockContext);
79a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        FakeFeatureFactory factory =
80a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang                (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext);
81a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang        when(factory.searchFeatureProvider.getSiteMapManager())
82a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang                .thenReturn(mSiteMapManager);
837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase();
847fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        setUpDb();
857fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @After
887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void cleanUp() {
89a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang        DatabaseTestUtils.clearDb();
907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchTitle() {
9440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "title", mSiteMapManager);
953f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
963f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString());
977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
1007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchSummary() {
10140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "summary", mSiteMapManager);
1023f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
1037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
1067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchKeywords() {
10740ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "keywords", mSiteMapManager);
1083f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
1097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
1127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    public void testMatchEntries() {
11340ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "entries", mSiteMapManager);
1143f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(2);
1157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
11852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseWord_matchesNonPrefix() {
1197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("Data usage");
12040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "usage", mSiteMapManager);
1217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
12552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseSpace_matches() {
1267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("space");
12740ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, " space ", mSiteMapManager);
1287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
13252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordNoDash() {
1337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("wi-fi calling");
13440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager);
1357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
13952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordWithDash() {
1407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("priorités seulment");
14140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "priorités", mSiteMapManager);
1427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
14652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesWordWithoutDash() {
1477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("priorités seulment");
14840ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "priorites", mSiteMapManager);
1497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
1527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    @Test
15352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseDash_matchesEntireQueryWithoutDash() {
1547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        insertSpecialCase("wi-fi calling");
15540ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "wifi calling", mSiteMapManager);
1567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
1577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
1587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
159314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
16052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCasePrefix_matchesPrefixOfEntry() {
161314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Photos");
16240ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "pho", mSiteMapManager);
163314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
164314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
165314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
166314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
167314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() {
168314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Photos");
16940ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "hot", mSiteMapManager);
170314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
171314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
172314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
173314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
17452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefix_matchesPrefixOfEntry() {
175314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
17640ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "Apps", mSiteMapManager);
177314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
178314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
179314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
180314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
18152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefix_matchesSecondWordPrefixOfEntry() {
182314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
18340ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "Not", mSiteMapManager);
184314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
185314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
186314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
187314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
188314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() {
189314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
19040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "pp", mSiteMapManager);
191314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
192314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
193314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
194314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
195314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() {
196314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps Notifications");
19740ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "tion", mSiteMapManager);
198314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(0);
199314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
200314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
201314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
20252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfEntry() {
203314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps & Notifications");
20440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "App", mSiteMapManager);
205314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
206314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
207314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
208314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    @Test
20952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfSecondEntry() {
210314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        insertSpecialCase("Apps & Notifications");
21140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze        loader = new DatabaseResultLoader(mContext, "No", mSiteMapManager);
212314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        assertThat(loader.loadInBackground().size()).isEqualTo(1);
213314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze    }
214314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze
215b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze    @Test
21652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testDeDupe_noDuplicates_originalListReturn() {
21752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Three elements with unique titles and summaries
21852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        List<SearchResult> results = new ArrayList();
21952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        IntentPayload intentPayload = new IntentPayload(new Intent());
22052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
22152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult.Builder builder = new SearchResult.Builder();
22252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleOne)
22352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
22452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(intentPayload);
22552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultOne = builder.build();
22652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultOne);
22752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
22852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleTwo)
22952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryTwo);
23052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultTwo = builder.build();
23152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultTwo);
23252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
23352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleThree)
23452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryThree);
23552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultThree = builder.build();
23652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultThree);
23752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
23852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader = new DatabaseResultLoader(mContext, "", null);
23952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader.removeDuplicates(results);
24052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.size()).isEqualTo(3);
24152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(0)).isEqualTo(resultOne);
24252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(1)).isEqualTo(resultTwo);
24352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(2)).isEqualTo(resultThree);
24452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    }
24552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
24652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    @Test
24752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testDeDupe_oneDuplicate_duplicateRemoved() {
24852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        List<SearchResult> results = new ArrayList();
24952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        IntentPayload intentPayload = new IntentPayload(new Intent());
25052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
25152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult.Builder builder = new SearchResult.Builder();
25252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleOne)
25352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
25452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addRank(0)
25552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(intentPayload);
25652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultOne = builder.build();
25752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultOne);
25852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
25952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Duplicate of the first element
26052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleOne)
26152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
26252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addRank(1);
26352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultTwo = builder.build();
26452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultTwo);
26552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
26652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Unique
26752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleThree)
26852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryThree);
26952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultThree = builder.build();
27052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultThree);
27152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
27252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader = new DatabaseResultLoader(mContext, "", null);
27352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader.removeDuplicates(results);
27452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.size()).isEqualTo(2);
27552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(0)).isEqualTo(resultOne);
27652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(1)).isEqualTo(resultThree);
27752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    }
27852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
27952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    @Test
28052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testDeDupe_firstDupeInline_secondDuplicateRemoved() {
28152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        List<SearchResult> results = new ArrayList();
28252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        InlineSwitchPayload inlinePayload = new InlineSwitchPayload("", 0,
28352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                null);
28452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        IntentPayload intentPayload = new IntentPayload(new Intent());
28552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
28652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult.Builder builder = new SearchResult.Builder();
28752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Inline result
28852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleOne)
28952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
29052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addRank(0)
29152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(inlinePayload);
29252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultOne = builder.build();
29352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultOne);
29452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
29552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Duplicate of first result, but Intent Result. Should be removed.
29652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleOne)
29752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
29852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addRank(1)
29952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(intentPayload);
30052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultTwo = builder.build();
30152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultTwo);
30252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
30352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Unique
30452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleThree)
30552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryThree);
30652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultThree = builder.build();
30752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultThree);
30852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
30952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader = new DatabaseResultLoader(mContext, "", null);
31052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader.removeDuplicates(results);
31152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.size()).isEqualTo(2);
31252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(0)).isEqualTo(resultOne);
31352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(1)).isEqualTo(resultThree);
31452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    }
31552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
31652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    @Test
31752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testDeDupe_secondDupeInline_firstDuplicateRemoved() {
31852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        /*
31952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * Create a list as follows:
32052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (5) Intent Four
32152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (4) Inline Two
32252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (3) Intent Three
32352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (2) Intent Two
32452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (1) Intent One
32552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         *
32652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * After removing duplicates:
32752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (4) Intent Four
32852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (3) Inline Two
32952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (2) Intent Three
33052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         * (1) Intent One
33152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze         */
33252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        List<SearchResult> results = new ArrayList();
33352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        InlineSwitchPayload inlinePayload = new InlineSwitchPayload("", 0,
33452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                null);
33552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        IntentPayload intentPayload = new IntentPayload(new Intent());
33652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
33752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
33852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult.Builder builder = new SearchResult.Builder();
33952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Intent One
34052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleOne)
34152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
34252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(intentPayload);
34352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultOne = builder.build();
34452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultOne);
34552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
34652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Intent Two
34752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleTwo)
34852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryTwo)
34952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(intentPayload);
35052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultTwo = builder.build();
35152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultTwo);
35252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
35352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Intent Three
35452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleThree)
35552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryThree);
35652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultThree = builder.build();
35752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultThree);
35852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
35952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Inline Two
36052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleTwo)
36152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryTwo)
36252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(inlinePayload);
36352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultFour = builder.build();
36452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultFour);
36552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
36652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        // Intent Four
36752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        builder.addTitle(titleFour)
36852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addSummary(summaryOne)
36952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze                .addPayload(intentPayload);
37052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        SearchResult resultFive = builder.build();
37152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        results.add(resultFive);
37252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
37352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader = new DatabaseResultLoader(mContext, "", null);
37452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        loader.removeDuplicates(results);
37552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.size()).isEqualTo(4);
37652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(0)).isEqualTo(resultOne);
37752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(1)).isEqualTo(resultThree);
37852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(2)).isEqualTo(resultFour);
37952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze        assertThat(results.get(3)).isEqualTo(resultFive);
38052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    }
38152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze
38252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    @Test
38352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze    public void testSpecialCaseTwoWords_firstWordMatches_ranksHigher() {
384b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        final String caseOne = "Apple pear";
385b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        final String caseTwo = "Banana apple";
386b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        insertSpecialCase(caseOne);
387b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        insertSpecialCase(caseTwo);
388b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        loader = new DatabaseResultLoader(mContext, "App", null);
389b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        List<? extends SearchResult> results = loader.loadInBackground();
390b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
391b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(0).title).isEqualTo(caseOne);
392b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(1).title).isEqualTo(caseTwo);
393b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        assertThat(results.get(0).rank).isLessThan(results.get(1).rank);
394b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze    }
395b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze
3967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private void insertSpecialCase(String specialCase) {
3977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase);
3987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        normalized = DatabaseIndexingUtils.normalizeString(normalized);
3997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        ContentValues values = new ContentValues();
401b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, normalized.hashCode());
4027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
4037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
4047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, specialCase);
4057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, normalized);
4067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "");
4077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "");
4087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "");
4097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "");
4107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "");
4117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "");
4127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
4137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
4147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
4157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
4167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
4177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
4187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
4193f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
4207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
4217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
4227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
4237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null);
4247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
4267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
4277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    private void setUpDb() {
4297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        ContentValues values = new ContentValues();
4307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 0);
4317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
4327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
4337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title");
4347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title");
4357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary");
436314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary");
4377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary");
438314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary");
439314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries");
440314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords");
4417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
4427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
4437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
4447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
4457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
4467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
4477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
4483f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
4497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
4507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
4517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
4527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null);
4537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
4557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values = new ContentValues();
4577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 1);
4587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
4597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
4607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title");
4617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title");
4627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary");
463314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary");
4647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary");
465314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary");
466314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries");
467314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords");
4687fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
4697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
4707fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
4717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
4727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
4737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
4747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
4753f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true);
4767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
4777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
4787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
4797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null);
4807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
4817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
4827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values = new ContentValues();
4837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DOCID, 2);
4847fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us");
4857fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1);
4867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title");
4877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title");
4887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary");
489314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary");
4907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary");
491314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary");
492314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries");
493314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords");
4947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME,
4957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze                "com.android.settings.gestures.GestureSettings");
4967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves");
4977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, "");
4987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, "");
4997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, "");
5007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ICON, "");
5013f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false);
5027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power");
5037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0);
5047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0);
5057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null);
5067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze
5077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze        mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values);
5087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze    }
509b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze}