Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
128   220   12   16
8   163   0.09   8
8     1.5  
1    
 
  TestSegmentTermDocs       Line # 28 128 12 99.3% 0.9930556
 
  (4)
 
1    package org.apache.lucene.index;
2   
3    /**
4    * Copyright 2004 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.store.Directory;
22    import org.apache.lucene.analysis.WhitespaceAnalyzer;
23    import org.apache.lucene.document.Document;
24    import org.apache.lucene.document.Field;
25   
26    import java.io.IOException;
27   
 
28    public class TestSegmentTermDocs extends TestCase {
29    private Document testDoc = new Document();
30    private Directory dir = new RAMDirectory();
31   
 
32  4 toggle public TestSegmentTermDocs(String s) {
33  4 super(s);
34    }
35   
 
36  4 toggle protected void setUp() throws IOException {
37  4 DocHelper.setupDoc(testDoc);
38  4 DocHelper.writeDoc(dir, testDoc);
39    }
40   
41   
 
42  4 toggle protected void tearDown() {
43   
44    }
45   
 
46  1 toggle public void test() {
47  1 assertTrue(dir != null);
48    }
49   
 
50  1 toggle public void testTermDocs() throws IOException {
51    //After adding the document, we should be able to read it back in
52  1 SegmentReader reader = SegmentReader.get(new SegmentInfo("test", 1, dir));
53  1 assertTrue(reader != null);
54  1 SegmentTermDocs segTermDocs = new SegmentTermDocs(reader);
55  1 assertTrue(segTermDocs != null);
56  1 segTermDocs.seek(new Term(DocHelper.TEXT_FIELD_2_KEY, "field"));
57  1 if (segTermDocs.next() == true)
58    {
59  1 int docId = segTermDocs.doc();
60  1 assertTrue(docId == 0);
61  1 int freq = segTermDocs.freq();
62  1 assertTrue(freq == 3);
63    }
64  1 reader.close();
65    }
66   
 
67  1 toggle public void testBadSeek() throws IOException {
68    {
69    //After adding the document, we should be able to read it back in
70  1 SegmentReader reader = SegmentReader.get(new SegmentInfo("test", 3, dir));
71  1 assertTrue(reader != null);
72  1 SegmentTermDocs segTermDocs = new SegmentTermDocs(reader);
73  1 assertTrue(segTermDocs != null);
74  1 segTermDocs.seek(new Term("textField2", "bad"));
75  1 assertTrue(segTermDocs.next() == false);
76  1 reader.close();
77    }
78    {
79    //After adding the document, we should be able to read it back in
80  1 SegmentReader reader = SegmentReader.get(new SegmentInfo("test", 3, dir));
81  1 assertTrue(reader != null);
82  1 SegmentTermDocs segTermDocs = new SegmentTermDocs(reader);
83  1 assertTrue(segTermDocs != null);
84  1 segTermDocs.seek(new Term("junk", "bad"));
85  1 assertTrue(segTermDocs.next() == false);
86  1 reader.close();
87    }
88    }
89   
 
90  1 toggle public void testSkipTo() throws IOException {
91  1 Directory dir = new RAMDirectory();
92  1 IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), true);
93   
94  1 Term ta = new Term("content","aaa");
95  11 for(int i = 0; i < 10; i++)
96  10 addDoc(writer, "aaa aaa aaa aaa");
97   
98  1 Term tb = new Term("content","bbb");
99  17 for(int i = 0; i < 16; i++)
100  16 addDoc(writer, "bbb bbb bbb bbb");
101   
102  1 Term tc = new Term("content","ccc");
103  51 for(int i = 0; i < 50; i++)
104  50 addDoc(writer, "ccc ccc ccc ccc");
105   
106    // assure that we deal with a single segment
107  1 writer.optimize();
108  1 writer.close();
109   
110  1 IndexReader reader = IndexReader.open(dir);
111  1 TermDocs tdocs = reader.termDocs();
112   
113    // without optimization (assumption skipInterval == 16)
114   
115    // with next
116  1 tdocs.seek(ta);
117  1 assertTrue(tdocs.next());
118  1 assertEquals(0, tdocs.doc());
119  1 assertEquals(4, tdocs.freq());
120  1 assertTrue(tdocs.next());
121  1 assertEquals(1, tdocs.doc());
122  1 assertEquals(4, tdocs.freq());
123  1 assertTrue(tdocs.skipTo(0));
124  1 assertEquals(2, tdocs.doc());
125  1 assertTrue(tdocs.skipTo(4));
126  1 assertEquals(4, tdocs.doc());
127  1 assertTrue(tdocs.skipTo(9));
128  1 assertEquals(9, tdocs.doc());
129  1 assertFalse(tdocs.skipTo(10));
130   
131    // without next
132  1 tdocs.seek(ta);
133  1 assertTrue(tdocs.skipTo(0));
134  1 assertEquals(0, tdocs.doc());
135  1 assertTrue(tdocs.skipTo(4));
136  1 assertEquals(4, tdocs.doc());
137  1 assertTrue(tdocs.skipTo(9));
138  1 assertEquals(9, tdocs.doc());
139  1 assertFalse(tdocs.skipTo(10));
140   
141    // exactly skipInterval documents and therefore with optimization
142   
143    // with next
144  1 tdocs.seek(tb);
145  1 assertTrue(tdocs.next());
146  1 assertEquals(10, tdocs.doc());
147  1 assertEquals(4, tdocs.freq());
148  1 assertTrue(tdocs.next());
149  1 assertEquals(11, tdocs.doc());
150  1 assertEquals(4, tdocs.freq());
151  1 assertTrue(tdocs.skipTo(5));
152  1 assertEquals(12, tdocs.doc());
153  1 assertTrue(tdocs.skipTo(15));
154  1 assertEquals(15, tdocs.doc());
155  1 assertTrue(tdocs.skipTo(24));
156  1 assertEquals(24, tdocs.doc());
157  1 assertTrue(tdocs.skipTo(25));
158  1 assertEquals(25, tdocs.doc());
159  1 assertFalse(tdocs.skipTo(26));
160   
161    // without next
162  1 tdocs.seek(tb);
163  1 assertTrue(tdocs.skipTo(5));