package com.plugtree.solradvert; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause.Occur; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.DisjunctionMaxQuery; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.junit.Test; import com.plugtree.solradvert.core.QueryFactsCollector; import com.plugtree.solradvert.fact.BooleanParentChildRelationship; import com.plugtree.solradvert.fact.DismaxParentChildRelationship; import com.plugtree.solradvert.util.AbstractAdvertTestCase; public class QueryFactsCollectorTest extends AbstractAdvertTestCase { @Test public void testBooleanQuery() throws Exception { BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term("description", "a")), Occur.SHOULD); q.add(new TermQuery(new Term("description", "b")), Occur.SHOULD); q.add(new TermQuery(new Term("description", "c")), Occur.SHOULD); List<Object> facts = new ArrayList<Object>(); QueryFactsCollector factsCollector = new QueryFactsCollector(); factsCollector.collect(q, facts); assertEquals(6, facts.size()); for(BooleanClause clause: q.getClauses()) { Query qq = clause.getQuery(); assertTrue(facts.contains(qq)); assertTrue(facts.contains(new BooleanParentChildRelationship(q, clause))); } } @Test public void testDismaxQuery() throws Exception { DisjunctionMaxQuery q = new DisjunctionMaxQuery(0); q.add(new TermQuery(new Term("description", "a"))); q.add(new TermQuery(new Term("description", "b"))); q.add(new TermQuery(new Term("description", "c"))); List<Object> facts = new ArrayList<Object>(); QueryFactsCollector factsCollector = new QueryFactsCollector(); factsCollector.collect(q, facts); assertEquals(6, facts.size()); for(Query qq: q) { assertTrue(facts.contains(qq)); assertTrue(facts.contains(new DismaxParentChildRelationship(q, qq))); } } }