KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > javabb > dao > lucene > IndexerTest


1 /*
2  * Copyright 2004 JavaFree.org
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.javabb.dao.lucene;
17
18 import java.io.IOException JavaDoc;
19 import java.util.Date JavaDoc;
20
21 import junit.framework.Assert;
22 import junit.framework.TestCase;
23
24 import org.apache.lucene.analysis.Analyzer;
25 import org.apache.lucene.document.DateField;
26 import org.apache.lucene.document.Document;
27 import org.apache.lucene.index.IndexReader;
28 import org.apache.lucene.store.RAMDirectory;
29
30 import org.javabb.lucene.analysis.PortugueseAnalyzer;
31 import org.javabb.lucene.index.Indexer;
32 import org.javabb.vo.Post;
33 import org.javabb.vo.Topic;
34
35
36 /**
37  *
38  * @author <a HREF="mailto:jackganzha@dev.java.net">Marcos Silva Pereira</a>
39  *
40  * @since 22/04/2005
41  *
42  * @version $Id$
43  */

44 public class IndexerTest extends TestCase {
45
46     Indexer indexer;
47     RAMDirectory directory;
48
49
50     public static void main( String JavaDoc[] args ) {
51
52         junit.swingui.TestRunner.run(IndexerTest.class);
53     }
54
55     /**
56      * Constructor for IndexerTest.
57      * @param arg0
58      */

59     public IndexerTest ( String JavaDoc name ) {
60
61         super(name);
62     }
63
64     /*
65      * @see TestCase#setUp()
66      */

67     protected void setUp() throws Exception JavaDoc {
68
69         super.setUp();
70
71
72         Analyzer analyzer = new PortugueseAnalyzer();
73         directory = new RAMDirectory();
74
75         indexer = new Indexer(analyzer, directory, true, true);
76     }
77
78     public void testIndex() throws Exception JavaDoc {
79
80         Post post = getPost();
81         indexer.index(post);
82
83         verifyDocs();
84
85     }
86
87     /**
88      * @param post
89      * @throws IOException
90      */

91     private void verifyDocs( ) throws IOException JavaDoc {
92
93         Post post = getPost();
94
95         IndexReader reader = IndexReader.open(directory);
96
97         Assert.assertTrue(reader.numDocs() > 0);
98
99         Document doc = reader.document(1);
100
101         Assert.assertNotNull(doc);
102         Assert.assertEquals(doc.get("postId"), post.getId().toString());
103         Assert.assertNotNull(doc.get("date"));
104
105         reader.close();
106     }
107
108     public void testUpdate() throws Exception JavaDoc {
109
110         Post post = getPost();
111         indexer.index(post);
112
113         verifyDocs();
114
115         long oldDate = post.getPostDate().getTime();
116         long newTime = new Date JavaDoc(System.currentTimeMillis() - 10000).getTime();
117
118         post.setPostDate(new Date JavaDoc(newTime));
119
120         indexer.update(post);
121
122         verifyDocs();
123
124         IndexReader reader = IndexReader.open(directory);
125
126         Document doc = reader.document(1);
127
128         Date JavaDoc date = DateField.stringToDate(doc.get("date"));
129
130         reader.close();
131
132         Assert.assertEquals(newTime, date.getTime());
133         Assert.assertFalse(oldDate == date.getTime());
134
135     }
136
137     /*
138      * Class under test for void delete(Post)
139      */

140     public void testDeletePost() throws Exception JavaDoc {
141
142         Post post = getPost();
143         indexer.index(post);
144
145         verifyDocs();
146
147         indexer.delete(post);
148
149         IndexReader reader = IndexReader.open(directory);
150
151         Assert.assertTrue(reader.hasDeletions());
152         Assert.assertTrue(reader.isDeleted(1));
153
154         reader.close();
155     }
156
157     /*
158      * Class under test for void delete(Long)
159      */

160     public void testDeleteLong() throws Exception JavaDoc {
161
162         Post post = getPost();
163         indexer.index(post);
164
165         verifyDocs();
166
167         indexer.delete(post.getId());
168
169         IndexReader reader = IndexReader.open(directory);
170
171         Assert.assertTrue(reader.hasDeletions());
172         Assert.assertTrue(reader.isDeleted(1));
173
174         reader.close();
175     }
176
177     private Post getPost() {
178
179         Post post = new Post();
180
181         post.setId(new Long JavaDoc(10));
182         post.setIdPost(new Long JavaDoc(10)); // ???
183
post.setPostBody("This is a simple post to test indexer class");
184         post.setPostDate(new Date JavaDoc());
185         post.setSubject("Post subject? Java, of course!");
186
187         Topic topic = new Topic();
188         topic.setTitleTopic("The Topic Title");
189
190         post.setTopic(topic);
191
192         return post;
193     }
194 }
195
Popular Tags