Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
74   141   8   10.57
2   110   0.11   7
7     1.14  
1    
 
  TestRangeQuery       Line # 16 74 8 100% 1.0
 
  (3)
 
1    package org.apache.lucene.search;
2   
3    import org.apache.lucene.analysis.WhitespaceAnalyzer;
4    import org.apache.lucene.document.Document;
5    import org.apache.lucene.document.Field;
6    import org.apache.lucene.index.IndexWriter;
7    import org.apache.lucene.index.Term;
8    import org.apache.lucene.store.RAMDirectory;
9   
10    import junit.framework.TestCase;
11    import java.io.IOException;
12   
13    /**
14    * @author goller
15    */
 
16    public class TestRangeQuery extends TestCase {
17   
18    private int docCount = 0;
19    private RAMDirectory dir;
20   
 
21  3 toggle public void setUp() {
22  3 dir = new RAMDirectory();
23    }
24   
 
25  1 toggle public void testExclusive() throws Exception {
26  1 Query query = new RangeQuery(new Term("content", "A"),
27    new Term("content", "C"),
28    false);
29  1 initializeIndex(new String[] {"A", "B", "C", "D"});
30  1 IndexSearcher searcher = new IndexSearcher(dir);
31  1 Hits hits = searcher.search(query);
32  1 assertEquals("A,B,C,D, only B in range", 1, hits.length());
33  1 searcher.close();
34   
35  1 initializeIndex(new String[] {"A", "B", "D"});
36  1 searcher = new IndexSearcher(dir);
37  1 hits = searcher.search(query);
38  1 assertEquals("A,B,D, only B in range", 1, hits.length());
39  1 searcher.close();
40   
41  1 addDoc("C");
42  1 searcher = new IndexSearcher(dir);
43  1 hits = searcher.search(query);
44  1 assertEquals("C added, still only B in range", 1, hits.length());
45  1 searcher.close();
46    }
47   
 
48  1 toggle public void testInclusive() throws Exception {
49  1 Query query = new RangeQuery(new Term("content", "A"),
50    new Term("content", "C"),
51    true);
52   
53  1 initializeIndex(new String[]{"A", "B", "C", "D"});
54  1 IndexSearcher searcher = new IndexSearcher(dir);
55  1 Hits hits = searcher.search(query);
56  1 assertEquals("A,B,C,D - A,B,C in range", 3, hits.length());
57  1 searcher.close();
58   
59  1 initializeIndex(new String[]{"A", "B", "D"});
60  1 searcher = new IndexSearcher(dir);
61  1 hits = searcher.search(query);
62  1 assertEquals("A,B,D - A and B in range", 2, hits.length());
63  1 searcher.close();
64   
65  1 addDoc("C");
66  1 searcher = new IndexSearcher(dir);
67  1 hits = searcher.search(query);
68  1 assertEquals("C added - A, B, C in range", 3, hits.length());
69  1 searcher.close();
70    }
71   
 
72  1 toggle public void testEqualsHashcode() {
73  1 Query query = new RangeQuery(new Term("content", "A"),
74    new Term("content", "C"),
75    true);
76  1 query.setBoost(1.0f);
77  1 Query other = new RangeQuery(new Term("content", "A"),
78    new Term("content", "C"),
79    true);
80  1 other.setBoost(1.0f);
81   
82  1 assertEquals("query equals itself is true", query, query);
83  1 assertEquals("equivalent queries are equal", query, other);
84  1 assertEquals("hashcode must return same value when equals is true", query.hashCode(), other.hashCode());
85   
86  1 other.setBoost(2.0f);
87  1 assertFalse("Different boost queries are not equal", query.equals(other));
88   
89  1 other = new RangeQuery(new Term("notcontent", "A"), new Term("notcontent", "C"), true);
90  1 assertFalse("Different fields are not equal", query.equals(other));
91   
92  1 other = new RangeQuery(new Term("content", "X"), new Term("content", "C"), true);
93  1 assertFalse("Different lower terms are not equal", query.equals(other));
94   
95  1 other = new RangeQuery(new Term("content", "A"), new Term("content", "Z"), true);
96  1 assertFalse("Different upper terms are not equal", query.equals(other));
97   
98  1 query = new RangeQuery(null, new Term("content", "C"), true);
99  1 other = new RangeQuery(null, new Term("content", "C"), true);
100  1 assertEquals("equivalent queries with null lowerterms are equal()", query, other);
101  1 assertEquals("hashcode must return same value when equals is true", query.hashCode(), other.hashCode());
102   
103  1 query = new RangeQuery(new Term("content", "C"), null, true);
104  1 other = new RangeQuery(new Term("content", "C"), null, true);
105  1 assertEquals("equivalent queries with null upperterms are equal()", query, other);
106  1 assertEquals("hashcode returns same value", query.hashCode(), other.hashCode());
107   
108  1 query = new RangeQuery(null, new Term("content", "C"), true);
109  1 other = new RangeQuery(new Term("content", "C"), null, true);
110  1 assertFalse("queries with different upper and lower terms are not equal", query.equals(other));
111   
112  1 query = new RangeQuery(new Term("content", "A"), new Term("content", "C"), false);
113  1 other = new RangeQuery(new Term("content", "A"), new Term("content", "C"), true);
114  1 assertFalse("queries with different inclusive are not equal", query.equals(other));
115    }
116   
 
117  4 toggle private void initializeIndex(String[] values) throws IOException {
118  4 IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), true);
119  18 for (int i = 0; i < values.length; i++) {
120  14 insertDoc(writer, values[i]);
121    }
122  4 writer.close();
123    }
124   
 
125  2 toggle private void addDoc(String content) throws IOException {
126  2 IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), false);
127  2 insertDoc(writer, content);
128  2 writer.close();
129    }
130   
 
131  16 toggle private void insertDoc(IndexWriter writer, String content) throws IOException {
132  16 Document doc = new Document();
133   
134  16 doc.add(new Field("id", "id" + docCount, Field.Store.YES, Field.Index.UN_TOKENIZED));
135  16 doc.add(new Field("content", content, Field.Store.NO, Field.Index.TOKENIZED));
136   
137  16 writer.addDocument(doc);
138  16 docCount++;
139    }
140    }
141