Clover Coverage Report
Coverage timestamp: Fri May 9 2008 10:54:27 EST
147   295   32   16.33
36   225   0.22   9
9     3.56  
1    
 
  TestTermVectors       Line # 32 147 32 90.6% 0.90625
 
  (5)
 
1    package org.apache.lucene.search;
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.analysis.SimpleAnalyzer;
21    import org.apache.lucene.document.Document;
22    import org.apache.lucene.document.Field;
23    import org.apache.lucene.index.*;
24    import org.apache.lucene.store.Directory;
25    import org.apache.lucene.store.RAMDirectory;
26    import org.apache.lucene.util.English;
27   
28    import java.io.IOException;
29    import java.util.HashMap;
30    import java.util.Map;
31   
 
32    public class TestTermVectors extends TestCase {
33    private IndexSearcher searcher;
34    private RAMDirectory directory = new RAMDirectory();
 
35  5 toggle public TestTermVectors(String s) {
36  5 super(s);
37    }
38   
 
39  5 toggle public void setUp() throws Exception {
40  5 IndexWriter writer
41    = new IndexWriter(directory, new SimpleAnalyzer(), true);
42    //writer.setUseCompoundFile(true);
43    //writer.infoStream = System.out;
44  5005 for (int i = 0; i < 1000; i++) {
45  5000 Document doc = new Document();
46  5000 Field.TermVector termVector;
47  5000 int mod3 = i % 3;
48  5000 int mod2 = i % 2;
49  5000 if (mod2 == 0 && mod3 == 0){
50  835 termVector = Field.TermVector.WITH_POSITIONS_OFFSETS;
51    }
52  4165 else if (mod2 == 0){
53  1665 termVector = Field.TermVector.WITH_POSITIONS;
54    }
55  2500 else if (mod3 == 0){
56  835 termVector = Field.TermVector.WITH_OFFSETS;
57    }
58    else {
59  1665 termVector = Field.TermVector.YES;
60    }
61  5000 doc.add(new Field("field", English.intToEnglish(i),
62    Field.Store.YES, Field.Index.TOKENIZED, termVector));
63  5000 writer.addDocument(doc);
64    }
65  5 writer.close();
66  5 searcher = new IndexSearcher(directory);
67    }
68   
 
69  5 toggle protected void tearDown() {
70   
71    }
72   
 
73  1 toggle public void test() {
74  1 assertTrue(searcher != null);
75    }
76   
 
77  1 toggle public void testTermVectors() {
78  1 Query query = new TermQuery(new Term("field", "seventy"));
79  1 try {
80  1 Hits hits = searcher.search(query);
81  1 assertEquals(100, hits.length());
82   
83  101 for (int i = 0; i < hits.length(); i++)
84    {
85  100 TermFreqVector [] vector = searcher.reader.getTermFreqVectors(hits.id(i));
86  100 assertTrue(vector != null);
87  100 assertTrue(vector.length == 1);
88    }
89    } catch (IOException e) {
90  0 assertTrue(false);
91    }
92    }
93   
 
94  1 toggle public void testTermPositionVectors() {
95  1 Query query = new TermQuery(new Term("field", "zero"));
96  1 try {
97  1 Hits hits = searcher.search(query);
98  1 assertEquals(1, hits.length());
99   
100  2 for (int i = 0; i < hits.length(); i++)
101    {
102  1 TermFreqVector [] vector = searcher.reader.getTermFreqVectors(hits.id(i));
103  1 assertTrue(vector != null);
104  1 assertTrue(vector.length == 1);
105   
106  1 boolean shouldBePosVector = (hits.id(i) % 2 == 0) ? true : false;
107  1 assertTrue((shouldBePosVector == false) || (shouldBePosVector == true && (vector[0] instanceof TermPositionVector == true)));
108   
109  1 boolean shouldBeOffVector = (hits.id(i) % 3 == 0) ? true : false;
110  1 assertTrue((shouldBeOffVector == false) || (shouldBeOffVector == true && (vector[0] instanceof TermPositionVector == true)));
111   
112  1 if(shouldBePosVector || shouldBeOffVector){
113  1 TermPositionVector posVec = (TermPositionVector)vector[0];
114  1 String [] terms = posVec.getTerms();
115  1 assertTrue(terms != null && terms.length > 0);
116   
117  2 for (int j = 0; j < terms.length; j++) {
118  1 int [] positions = posVec.getTermPositions(j);
119  1 TermVectorOffsetInfo [] offsets = posVec.getOffsets(j);
120   
121  1 if(shouldBePosVector){
122  1 assertTrue(positions != null);
123  1 assertTrue(positions.length > 0);
124    }
125    else
126  0 assertTrue(positions == null);
127   
128  1 if(shouldBeOffVector){
129  1 assertTrue(offsets != null);
130  1 assertTrue(offsets.length > 0);
131    }
132    else
133  0 assertTrue(offsets == null);
134    }
135    }
136    else{
137  0 try{
138  0 TermPositionVector posVec = (TermPositionVector)vector[0];
139  0 assertTrue(false);
140    }
141    catch(ClassCastException ignore){
142  0 TermFreqVector freqVec = vector[0];
143  0 String [] terms = freqVec.getTerms();
144  0 assertTrue(terms != null && terms.length > 0);
145    }
146   
147    }
148   
149    }
150    } catch (IOException e) {
151  0 assertTrue(false);
152    }
153    }
154   
 
155  1 toggle public void testTermOffsetVectors() {
156  1 Query query = new TermQuery(new Term("field", "fifty"));
157  1 try {
158  1 Hits hits = searcher.search(query);
159  1 assertEquals(100, hits.length());
160   
161  101 for (int i = 0; i < hits.length(); i++)
162    {
163  100 TermFreqVector [] vector = searcher.reader.getTermFreqVectors(hits.id(i));
164  100 assertTrue(vector != null);
165  100 assertTrue(vector.length == 1);
166   
167    //assertTrue();