/*
* Carrot2 project.
*
* Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/
package org.carrot2.source.etools;
import java.util.List;
import java.util.Set;
import org.carrot2.core.Document;
import org.carrot2.core.test.QueryableDocumentSourceTestBase;
import org.carrot2.source.SearchEngineBase;
import org.carrot2.util.attribute.AttributeUtils;
import org.carrot2.util.tests.UsesExternalServices;
import org.fest.assertions.MapAssert;
import org.junit.Test;
import org.carrot2.shaded.guava.common.collect.Sets;
import static org.junit.Assert.*;
/**
* Test cases for {@link EToolsDocumentSource}.
*/
@UsesExternalServices
public class EToolsDocumentSourceTest extends
QueryableDocumentSourceTestBase<EToolsDocumentSource>
{
@Override
public Class<EToolsDocumentSource> getComponentClass()
{
return EToolsDocumentSource.class;
}
@Override
protected boolean hasUtfResults()
{
return true;
}
@Test
public void testDataSources() throws Exception
{
runQuery("apache", 50);
final Set<String> sources = Sets.newHashSet();
for (Document document : getDocuments())
{
final List<String> documentSources = document.getField(Document.SOURCES);
assertThat(documentSources).isNotEmpty();
sources.addAll(documentSources);
}
assertThat(sources.size()).isGreaterThanOrEqualTo(2);
}
@UsesExternalServices
@Test
@Override
public void testLargeQuery() throws Exception
{
runAndCheckMinimumResults(getLargeQueryText(), getLargeQuerySize(), 75);
}
@Test
public void testGzipCompression() throws Exception
{
runQuery("apache", 50);
assertThat(resultAttributes).includes(
MapAssert.entry(AttributeUtils.getKey(SearchEngineBase.class, "compressed"),
true));
}
@Test
public void testDataSourceResultsCount()
{
final EToolsDocumentSource source = new EToolsDocumentSource();
checkDataSourceResultsCount(source, 0, 0);
checkDataSourceResultsCount(source, 50, 20);
checkDataSourceResultsCount(source, 100, 20);
checkDataSourceResultsCount(source, 120, 30);
checkDataSourceResultsCount(source, 200, 30);
checkDataSourceResultsCount(source, 250, 40);
checkDataSourceResultsCount(source, 400, 40);
checkDataSourceResultsCount(source, 450, 40);
checkDataSourceResultsCount(source, 1000, 40);
}
private void checkDataSourceResultsCount(EToolsDocumentSource source, int results,
int expectedDataSourceResultsCount)
{
source.results = results;
assertEquals("Data source results count", expectedDataSourceResultsCount, source
.getDataSourceResultsCount());
}
}