Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
45   104   2   45
2   61   0.04   1
1     2  
1    
 
  TestPrefixFilter       Line # 33 45 2 100% 1.0
 
  (1)
 
1    package org.apache.lucene.search;
2   
3    /**
4    * Copyright 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.store.RAMDirectory;
21    import org.apache.lucene.index.IndexWriter;
22    import org.apache.lucene.index.Term;
23    import org.apache.lucene.analysis.WhitespaceAnalyzer;
24    import org.apache.lucene.document.Document;
25    import org.apache.lucene.document.Field;
26   
27    /**
28    * Tests {@link PrefixFilter} class.
29    *
30    * @author Yura Smolsky
31    * @author yonik
32    */
 
33    public class TestPrefixFilter extends TestCase {
 
34  1 toggle public void testPrefixFilter() throws Exception {
35  1 RAMDirectory directory = new RAMDirectory();
36   
37  1 String[] categories = new String[] {"/Computers/Linux",
38    "/Computers/Mac/One",
39    "/Computers/Mac/Two",
40    "/Computers/Windows"};
41  1 IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
42  5 for (int i = 0; i < categories.length; i++) {
43  4 Document doc = new Document();
44  4 doc.add(new Field("category", categories[i], Field.Store.YES, Field.Index.UN_TOKENIZED));
45  4 writer.addDocument(doc);
46    }
47  1 writer.close();
48   
49    // PrefixFilter combined with ConstantScoreQuery
50  1 PrefixFilter filter = new PrefixFilter(new Term("category", "/Computers"));
51  1 Query query = new ConstantScoreQuery(filter);
52  1 IndexSearcher searcher = new IndexSearcher(directory);
53  1 Hits hits = searcher.search(query);
54  1 assertEquals(4, hits.length());
55   
56    // test middle of values
57  1 filter = new PrefixFilter(new Term("category", "/Computers/Mac"));
58  1 query = new ConstantScoreQuery(filter);
59  1 hits = searcher.search(query);
60  1 assertEquals(2, hits.length());
61   
62    // test start of values
63  1 filter = new PrefixFilter(new Term("category", "/Computers/Linux"));
64  1 query = new ConstantScoreQuery(filter);
65  1 hits = searcher.search(query);
66  1 assertEquals(1, hits.length());
67   
68    // test end of values
69  1 filter = new PrefixFilter(new Term("category", "/Computers/Windows"));
70  1 query = new ConstantScoreQuery(filter);
71  1 hits = searcher.search(query);
72  1 assertEquals(1, hits.length());
73   
74    // test non-existant
75  1 filter = new PrefixFilter(new Term("category", "/Computers/ObsoleteOS"));
76  1 query = new ConstantScoreQuery(filter);
77  1 hits = searcher.search(query);
78  1 assertEquals(0, hits.length());
79   
80    // test non-existant, before values
81  1 filter = new PrefixFilter(new Term("category", "/Computers/AAA"));
82  1 query = new ConstantScoreQuery(filter);
83  1 hits = searcher.search(query);
84  1 assertEquals(0, hits.length());
85   
86    // test non-existant, after values
87  1 filter = new PrefixFilter(new Term("category", "/Computers/ZZZ"));
88  1 query = new ConstantScoreQuery(filter);
89  1 hits = searcher.search(query);
90  1 assertEquals(0, hits.length());
91   
92    // test zero length prefix
93  1 filter = new PrefixFilter(new Term("category", ""));
94  1 query = new ConstantScoreQuery(filter);
95  1 hits = searcher.search(query);
96  1 assertEquals(4, hits.length());
97   
98    // test non existent field
99  1 filter = new PrefixFilter(new Term("nonexistantfield", "/Computers"));
100  1 query = new ConstantScoreQuery(filter);
101  1 hits = searcher.search(query);
102  1 assertEquals(0, hits.length());
103    }
104    }