| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.android.quicksearchbox; |
| |
| import static com.android.quicksearchbox.SuggestionCursorUtil.assertSameSuggestions; |
| import static com.android.quicksearchbox.SuggestionCursorUtil.assertSameSuggestionsNoOrder; |
| import static com.android.quicksearchbox.SuggestionCursorUtil.concat; |
| |
| import android.test.AndroidTestCase; |
| import android.test.suitebuilder.annotation.MediumTest; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * Tests for {@link ResultPromoter}. |
| */ |
| @MediumTest |
| public class ResultPromoterTest extends AndroidTestCase { |
| |
| private static final int MAX_PROMOTED_SUGGESTIONS = 10; |
| |
| private String mQuery; |
| |
| private Suggestion mS11; |
| private Suggestion mS12; |
| private Suggestion mS21; |
| private Suggestion mS22; |
| private Suggestion mWeb1; |
| private Suggestion mWeb2; |
| |
| private CorpusResult mCorpusResult1; |
| private CorpusResult mCorpusResult2; |
| private CorpusResult mCorpusResultWeb; |
| |
| private SuggestionCursor mShortcuts; |
| private List<CorpusResult> mCorpusResults; |
| |
| @Override |
| protected void setUp() throws Exception { |
| mQuery = "foo"; |
| mS11 = MockSource.SOURCE_1.createSuggestion(mQuery + "_1_1"); |
| mS12 = MockSource.SOURCE_1.createSuggestion(mQuery + "_1_2"); |
| mS21 = MockSource.SOURCE_2.createSuggestion(mQuery + "_1_1"); |
| mS22 = MockSource.SOURCE_2.createSuggestion(mQuery + "_1_2"); |
| mWeb1 = MockSource.WEB_SOURCE.createSuggestion(mQuery + "_web_1"); |
| mWeb2 = MockSource.WEB_SOURCE.createSuggestion(mQuery + "_web_2"); |
| mShortcuts = cursor(mS11, mS12, mS21, mS22, mWeb1, mWeb2); |
| mCorpusResult1 = MockCorpus.CORPUS_1.getSuggestions(mQuery, 10, false); |
| mCorpusResult2 = MockCorpus.CORPUS_2.getSuggestions(mQuery, 10, false); |
| mCorpusResultWeb = MockCorpus.WEB_CORPUS.getSuggestions(mQuery, 10, false); |
| mCorpusResults = new ArrayList<CorpusResult>(); |
| mCorpusResults.add(mCorpusResult1); |
| mCorpusResults.add(mCorpusResult2); |
| mCorpusResults.add(mCorpusResultWeb); |
| } |
| |
| public void testOnlyResultShortcutsPromoted() { |
| SuggestionCursor promoted = promoteShortcuts(mShortcuts); |
| SuggestionCursor expected = cursor(mS11, mS12, mS21, mS22); |
| assertSameSuggestions(expected, promoted); |
| } |
| |
| public void testOnlyResultSuggestionsPromoted() { |
| SuggestionCursor promoted = promoteSuggestions(mCorpusResults); |
| SuggestionCursor expected = concat(mCorpusResult1, mCorpusResult2); |
| assertSameSuggestionsNoOrder(expected, promoted); |
| } |
| |
| private ShortcutPromoter createResultPromoter() { |
| ResultFilter results = new ResultFilter(); |
| return new ShortcutPromoter(config(), |
| new RankAwarePromoter(config(), results, null), results); |
| } |
| |
| private ListSuggestionCursor promoteShortcuts(SuggestionCursor shortcuts) { |
| ShortcutPromoter promoter = createResultPromoter(); |
| ListSuggestionCursor promoted = new ListSuggestionCursor(mQuery); |
| promoter.promoteShortcuts(shortcuts, MAX_PROMOTED_SUGGESTIONS, promoted); |
| return promoted; |
| } |
| |
| private ListSuggestionCursor promoteSuggestions(List<CorpusResult> suggestions) { |
| ResultFilter results = new ResultFilter(); |
| RankAwarePromoter promoter = new RankAwarePromoter(config(), results, null); |
| ListSuggestionCursor promoted = new ListSuggestionCursor(mQuery); |
| promoter.promoteSuggestions(suggestions, MAX_PROMOTED_SUGGESTIONS, promoted); |
| return promoted; |
| } |
| |
| private Config config() { |
| return new Config(getContext()); |
| } |
| |
| private SuggestionCursor cursor(Suggestion... suggestions) { |
| return new ListSuggestionCursor(mQuery, suggestions); |
| } |
| |
| } |