Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
63   147   6   10.5
0   99   0.1   6
6     1  
1    
 
  TestFilteredQuery       Line # 38 63 6 100% 1.0
 
  (3)
 
1    package org.apache.lucene.search;
2   
3    /**
4    * Copyright 2004,2006 The Apache Software Foundation
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10    * http://www.apache.org/licenses/LICENSE-2.0
11    *
12    * Unless required by applicable law or agreed to in writing, software
13    * distributed under the License is distributed on an "AS IS" BASIS,
14    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15    * See the License for the specific language governing permissions and
16    * limitations under the License.
17    */
18   
19    import junit.framework.TestCase;
20    import org.apache.lucene.analysis.WhitespaceAnalyzer;
21    import org.apache.lucene.document.Document;
22    import org.apache.lucene.document.Field;
23    import org.apache.lucene.index.IndexWriter;
24    import org.apache.lucene.index.IndexReader;
25    import org.apache.lucene.index.Term;
26    import org.apache.lucene.store.RAMDirectory;
27    import java.util.BitSet;
28   
29    /**
30    * FilteredQuery JUnit tests.
31    *
32    * <p>Created: Apr 21, 2004 1:21:46 PM
33    *
34    * @author Tim Jones
35    * @version $Id: TestFilteredQuery.java 467558 2006-10-25 04:20:34Z yonik $
36    * @since 1.4
37    */
 
38    public class TestFilteredQuery
39    extends TestCase {
40   
41    private IndexSearcher searcher;
42    private RAMDirectory directory;
43    private Query query;
44    private Filter filter;
45   
 
46  3 toggle public void setUp()
47    throws Exception {
48  3 directory = new RAMDirectory();
49  3 IndexWriter writer = new IndexWriter (directory, new WhitespaceAnalyzer(), true);
50   
51  3 Document doc = new Document();
52  3 doc.add (new Field("field", "one two three four five", Field.Store.YES, Field.Index.TOKENIZED));
53  3 doc.add (new Field("sorter", "b", Field.Store.YES, Field.Index.TOKENIZED));
54  3 writer.addDocument (doc);
55   
56  3 doc = new Document();
57  3 doc.add (new Field("field", "one two three four", Field.Store.YES, Field.Index.TOKENIZED));
58  3 doc.add (new Field("sorter", "d", Field.Store.YES, Field.Index.TOKENIZED));
59  3 writer.addDocument (doc);
60   
61  3 doc = new Document();
62  3 doc.add (new Field("field", "one two three y", Field.Store.YES, Field.Index.TOKENIZED));
63  3 doc.add (new Field("sorter", "a", Field.Store.YES, Field.Index.TOKENIZED));
64  3 writer.addDocument (doc);
65   
66  3 doc = new Document();
67  3 doc.add (new Field("field", "one two x", Field.Store.YES, Field.Index.TOKENIZED));
68  3 doc.add (new Field("sorter", "c", Field.Store.YES, Field.Index.TOKENIZED));
69  3 writer.addDocument (doc);
70   
71  3 writer.optimize ();
72  3 writer.close ();
73   
74  3 searcher = new IndexSearcher (directory);
75  3 query = new TermQuery (new Term ("field", "three"));
76  3 filter = new Filter() {
 
77  16 toggle public BitSet bits (IndexReader reader) {
78  16 BitSet bitset = new BitSet(5);
79  16 bitset.set (1);
80  16 bitset.set (3);
81  16 return bitset;
82    }
83    };
84    }
85   
 
86  3 toggle public void tearDown()
87    throws Exception {
88  3 searcher.close();
89  3 directory.close();
90    }
91   
 
92  1 toggle public void testFilteredQuery()
93    throws Exception {
94  1 Query filteredquery = new FilteredQuery (query, filter);
95  1 Hits hits = searcher.search (filteredquery);
96  1 assertEquals (1, hits.length());
97  1 assertEquals (1, hits.id(0));
98  1 QueryUtils.check(filteredquery,searcher);
99   
100  1 hits = searcher.search (filteredquery, new Sort("sorter"));
101  1 assertEquals (1, hits.length());
102  1 assertEquals (1, hits.id(0));
103   
104  1 filteredquery = new FilteredQuery (new TermQuery (new Term ("field", "one")), filter);
105  1 hits = searcher.search (filteredquery);
106  1 assertEquals (2, hits.length());
107  1 QueryUtils.check(filteredquery,searcher);
108   
109  1 filteredquery = new FilteredQuery (new TermQuery (new Term ("field", "x")), filter);
110  1 hits = searcher.search (filteredquery);
111  1 assertEquals (1, hits.length());
112  1 assertEquals (3, hits.id(0));
113  1 QueryUtils.check(filteredquery,searcher);
114   
115  1 filteredquery = new FilteredQuery (new TermQuery (new Term ("field", "y")), filter);
116  1 hits = searcher.search (filteredquery);
117  1 assertEquals (0, hits.length());
118  1 QueryUtils.check(filteredquery,searcher);
119    }
120   
121    /**
122    * This tests FilteredQuery's rewrite correctness
123    */
 
124  1 toggle public void testRangeQuery() throws Exception {
125  1 RangeQuery rq = new RangeQuery(
126    new Term("sorter", "b"), new Term("sorter", "d"), true);
127   
128  1 Query filteredquery = new FilteredQuery(rq, filter);
129  1 Hits hits = searcher.search(filteredquery);
130  1 assertEquals(2, hits.length());
131  1 QueryUtils.check(filteredquery,searcher);
132    }
133   
 
134  1 toggle public void testBoolean() throws Exception {
135  1 BooleanQuery bq = new BooleanQuery();
136  1 Query query = new FilteredQuery(new MatchAllDocsQuery(),
137    new SingleDocTestFilter(0));
138  1 bq.add(query, BooleanClause.Occur.MUST);
139  1 query = new FilteredQuery(new MatchAllDocsQuery(),
140    new SingleDocTestFilter(1));
141  1 bq.add(query, BooleanClause.Occur.MUST);
142  1 Hits hits = searcher.search(bq);
143  1 assertEquals(0, hits.length());
144  1 QueryUtils.check(query,searcher);
145    }
146    }
147