1 16 package org.javabb.dao.lucene; 17 18 import java.io.IOException ; 19 import java.util.Date ; 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 44 public class IndexerTest extends TestCase { 45 46 Indexer indexer; 47 RAMDirectory directory; 48 49 50 public static void main( String [] args ) { 51 52 junit.swingui.TestRunner.run(IndexerTest.class); 53 } 54 55 59 public IndexerTest ( String name ) { 60 61 super(name); 62 } 63 64 67 protected void setUp() throws Exception { 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 { 79 80 Post post = getPost(); 81 indexer.index(post); 82 83 verifyDocs(); 84 85 } 86 87 91 private void verifyDocs( ) throws IOException { 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 { 109 110 Post post = getPost(); 111 indexer.index(post); 112 113 verifyDocs(); 114 115 long oldDate = post.getPostDate().getTime(); 116 long newTime = new Date (System.currentTimeMillis() - 10000).getTime(); 117 118 post.setPostDate(new Date (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 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 140 public void testDeletePost() throws Exception { 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 160 public void testDeleteLong() throws Exception { 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 (10)); 182 post.setIdPost(new Long (10)); post.setPostBody("This is a simple post to test indexer class"); 184 post.setPostDate(new Date ()); 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 |