• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.quicksearchbox;
18 
19 import com.android.quicksearchbox.util.MockNamedTaskExecutor;
20 
21 import android.os.Handler;
22 import android.test.AndroidTestCase;
23 import android.test.suitebuilder.annotation.MediumTest;
24 
25 /**
26  * Tests for {@link SuggestionsProviderImpl}.
27  */
28 @MediumTest
29 public class SuggestionsProviderImplTest extends AndroidTestCase {
30 
31     private MockCorpora mCorpora;
32     private MockNamedTaskExecutor mTaskExecutor;
33     private SuggestionsProviderImpl mProvider;
34 
35     @Override
setUp()36     protected void setUp() throws Exception {
37         Config config = new Config(getContext());
38         mTaskExecutor = new MockNamedTaskExecutor();
39         Handler publishThread = new MockHandler();
40         ShortcutRepository shortcutRepo = new MockShortcutRepository();
41         mCorpora = new MockCorpora();
42         mCorpora.addCorpus(MockCorpus.CORPUS_1);
43         mCorpora.addCorpus(MockCorpus.CORPUS_2);
44         CorpusRanker corpusRanker = new LexicographicalCorpusRanker(mCorpora);
45         Logger logger = new NoLogger();
46         mProvider = new SuggestionsProviderImpl(config,
47                 mTaskExecutor,
48                 publishThread,
49                 shortcutRepo,
50                 mCorpora,
51                 corpusRanker,
52                 logger);
53         mProvider.setAllPromoter(new ConcatPromoter());
54         mProvider.setSingleCorpusPromoter(new ConcatPromoter());
55     }
56 
testSingleCorpus()57     public void testSingleCorpus() {
58         Suggestions suggestions = mProvider.getSuggestions("foo", MockCorpus.CORPUS_1, 3);
59         try {
60             assertEquals(1, suggestions.getExpectedResultCount());
61             assertEquals(0, suggestions.getResultCount());
62             assertEquals(0, suggestions.getPromoted().getCount());
63             assertTrue(mTaskExecutor.runNext());
64             assertEquals(1, suggestions.getExpectedResultCount());
65             assertEquals(1, suggestions.getResultCount());
66             assertEquals(MockCorpus.CORPUS_1.getSuggestions("foo", 3, true).getCount(),
67                     suggestions.getPromoted().getCount());
68             mTaskExecutor.assertDone();
69         } finally {
70             if (suggestions != null) suggestions.close();
71         }
72     }
73 
testMultipleCorpora()74     public void testMultipleCorpora() {
75         Suggestions suggestions = mProvider.getSuggestions("foo", null, 6);
76         try {
77             int corpus1Count = MockCorpus.CORPUS_1.getSuggestions("foo", 3, true).getCount();
78             int corpus2Count = MockCorpus.CORPUS_2.getSuggestions("foo", 3, true).getCount();
79             assertEquals(mCorpora.getEnabledCorpora().size(), suggestions.getExpectedResultCount());
80             assertEquals(0, suggestions.getResultCount());
81             assertEquals(0, suggestions.getPromoted().getCount());
82             assertTrue(mTaskExecutor.runNext());
83             assertEquals(1, suggestions.getResultCount());
84             assertEquals("Incorrect promoted: " + suggestions.getPromoted(),
85                     corpus1Count, suggestions.getPromoted().getCount());
86             assertTrue(mTaskExecutor.runNext());
87             assertEquals(2, suggestions.getResultCount());
88             assertEquals("Incorrect promoted: " + suggestions.getPromoted(),
89                     corpus1Count + corpus2Count, suggestions.getPromoted().getCount());
90             mTaskExecutor.assertDone();
91         } finally {
92             if (suggestions != null) suggestions.close();
93         }
94     }
95 
96 }
97