13e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/*
23e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project
33e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
43e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
53e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * you may not use this file except in compliance with the License.
63e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * You may obtain a copy of the License at
73e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
83e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
93e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * See the License for the specific language governing permissions and
143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * limitations under the License.
153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpackage com.android.quicksearchbox;
183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.test.AndroidTestCase;
20f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringertimport android.test.MoreAsserts;
213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.test.suitebuilder.annotation.MediumTest;
223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
23f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringertimport java.util.Arrays;
243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport java.util.Collection;
253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/**
27fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * Tests for {@link SearchableCorpora}.
283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert@MediumTest
31883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringertpublic class SearchableCorporaTest extends AndroidTestCase {
323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
3396fec862c3d494aebcb4e1d93589a241385a2ba7Bjorn Bringert    protected SearchSettings mSettings;
3496fec862c3d494aebcb4e1d93589a241385a2ba7Bjorn Bringert
35fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    protected SearchableCorpora mCorpora;
363e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
37f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    private static final MockCorpus CORPUS_1 = new MockCorpus(MockSource.SOURCE_1);
38f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    private static final MockCorpus CORPUS_DISABLED = new MockCorpus(MockSource.SOURCE_2);
39f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    private static final MockCorpus CORPUS_NOT_IN_ALL = new MockCorpus(MockSource.SOURCE_3) {
40f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        @Override
41f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        public boolean includeInAll() {
42f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert            return false;
43f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        }
44f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    };
45f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    private static final MockCorpus CORPUS_WEB = new MockCorpus(MockSource.WEB_SOURCE);
46f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert
473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    @Override
483e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    protected void setUp() throws Exception {
493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        super.setUp();
503e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
51f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        mSettings = new MockSearchSettings() {
52f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert            @Override
53f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert            public boolean isCorpusEnabled(Corpus corpus) {
54f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert                return !CORPUS_DISABLED.equals(corpus);
55f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert            }
56f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        };
57883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert        MockSources sources = new MockSources();
58883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert        sources.addSource(MockSource.SOURCE_1);
59883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert        sources.addSource(MockSource.SOURCE_2);
60f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        sources.addSource(MockSource.SOURCE_3);
61f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        sources.addSource(MockSource.WEB_SOURCE);
6296fec862c3d494aebcb4e1d93589a241385a2ba7Bjorn Bringert        mCorpora = new SearchableCorpora(mContext, mSettings, sources, new MockCorpusFactory());
6321bff9bbf4286907b01d3153bff2fbd6b5ec5df8Bjorn Bringert        mCorpora.update();
643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
66883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert    public void testGetAllCorpora() {
67f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        MoreAsserts.assertContentsInAnyOrder(mCorpora.getAllCorpora(),
68f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert                CORPUS_1, CORPUS_DISABLED, CORPUS_NOT_IN_ALL, CORPUS_WEB);
69f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    }
70f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert
71f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    public void testEnabledCorpora() {
72f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        MoreAsserts.assertContentsInAnyOrder(mCorpora.getEnabledCorpora(),
73f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert                CORPUS_1, CORPUS_NOT_IN_ALL, CORPUS_WEB);
74f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    }
75f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert
76f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    public void testCorporaIncludedInAll() {
77f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        MoreAsserts.assertContentsInAnyOrder(mCorpora.getCorporaInAll(),
78f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert                CORPUS_1, CORPUS_WEB);
793e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
803e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
81f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    public void testGetWebCorpus() {
82f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        assertEquals(CORPUS_WEB, mCorpora.getWebCorpus());
83883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert    }
84883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert
85883c1bf364e38c5b133afb55f8493a14b65f4dd4Bjorn Bringert    public void testGetCorpusForSource() {
86f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        assertEquals(CORPUS_1, mCorpora.getCorpusForSource(MockSource.SOURCE_1));
87f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        assertNull(mCorpora.getCorpusForSource(new MockSource("foo")));
883e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
893e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
90f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    public void testGetCorpus() {
91f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        assertEquals(CORPUS_WEB, mCorpora.getCorpus(CORPUS_WEB.getName()));
923e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
933e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
94f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    /**
95f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert     * Mock implementation of {@link CorpusFactory}.
96f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert     */
97f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert    private static class MockCorpusFactory implements CorpusFactory {
98f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        public Collection<Corpus> createCorpora(Sources sources) {
99f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert            return Arrays.<Corpus>asList(CORPUS_1, CORPUS_DISABLED, CORPUS_NOT_IN_ALL, CORPUS_WEB);
100f3f70e5ae88f06ff6dabdec9e7c71a19ca1e7108Bjorn Bringert        }
1013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
1023e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1033e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert}
104