1 /* 2 * ==================================================================== 3 * 4 * The Apache Software License, Version 1.1 5 * 6 * Copyright (c) 2003 Nick Lothian. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * 3. The end-user documentation included with the redistribution, if 21 * any, must include the following acknowlegement: 22 * "This product includes software developed by the 23 * developers of Classifier4J (http://classifier4j.sf.net/)." 24 * Alternately, this acknowlegement may appear in the software itself, 25 * if and wherever such third-party acknowlegements normally appear. 26 * 27 * 4. The name "Classifier4J" must not be used to endorse or promote 28 * products derived from this software without prior written 29 * permission. For written permission, please contact 30 * http://sourceforge.net/users/nicklothian/. 31 * 32 * 5. Products derived from this software may not be called 33 * "Classifier4J", nor may "Classifier4J" appear in their names 34 * without prior written permission. For written permission, please 35 * contact http://sourceforge.net/users/nicklothian/. 36 * 37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 48 * SUCH DAMAGE. 49 * ==================================================================== 50 */ 51 package net.sf.classifier4J.bayesian; 52 53 import java.io.File; 54 55 public class JDBMWordsDataSourceTest extends AbstractWordsDataSourceSupport { 56 57 /*** 58 * @param arg0 59 */ 60 public JDBMWordsDataSourceTest(String arg0) { 61 super(arg0); 62 } 63 64 //JDBMWordsDataSource wordsDataSource = null; 65 66 /* 67 * @see TestCase#setUp() 68 */ 69 protected void setUp() throws Exception { 70 wordsDataSource = new JDBMWordsDataSource(); 71 ((JDBMWordsDataSource)wordsDataSource).open(); 72 super.setUp(); 73 } 74 75 /* 76 * @see TestCase#tearDown() 77 */ 78 protected void tearDown() throws Exception { 79 ((JDBMWordsDataSource)wordsDataSource).close(); 80 wordsDataSource = null; 81 82 File dbFile = new File(JDBMWordsDataSource.databaseName + ".db"); 83 if (dbFile.exists()) { 84 dbFile.delete(); 85 //System.out.println( "deleting " + dbFile.getAbsolutePath() ); 86 } 87 dbFile = null; 88 89 File indexFile = new File(JDBMWordsDataSource.databaseName + ".lg"); 90 if (indexFile.exists()) { 91 indexFile.delete(); 92 //System.out.println( "deleting " + indexFile.getAbsolutePath() ); 93 } 94 indexFile.delete(); 95 96 super.tearDown(); 97 } 98 99 /* 100 public void testMultipleWrites2() { 101 long startTime = System.currentTimeMillis(); 102 103 String word = "myWord"; 104 int count = 500000; 105 for (int i=0; i < count; i++) { 106 wordsDataSource.addNonMatch(word + count); 107 } 108 long endTime = System.currentTimeMillis(); 109 110 System.out.println(count + " writes took " + (endTime-startTime)/1000 + " seconds"); 111 } 112 */ 113 114 public void testMultipleCategories() throws Exception { 115 String word = "myWord"; 116 String category = "category1"; 117 ((ICategorisedWordsDataSource)wordsDataSource).addNonMatch(category, word); 118 ((ICategorisedWordsDataSource)wordsDataSource).addMatch(category, word); 119 ((ICategorisedWordsDataSource)wordsDataSource).addMatch(category, word); 120 assertNull(wordsDataSource.getWordProbability(word)); // should be null in the default category 121 122 WordProbability wp = ((ICategorisedWordsDataSource)wordsDataSource).getWordProbability(category, word); 123 assertNotNull(wp); // should not be null for the correct category 124 assertEquals(1, wp.getNonMatchingCount()); 125 assertEquals(2, wp.getMatchingCount()); 126 } 127 128 }