package com.cse10.classifier;
import com.cse10.database.DatabaseConstants;
import junit.framework.TestCase;
import org.junit.*;
import org.junit.Test;
import weka.core.Instances;
import weka.core.tokenizers.NGramTokenizer;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
//get data from file
public class KeyWordClassifierHandlerTest {
private KeyWordClassifierHandler keyWordClassifierHandler;
static String previousDB;
@BeforeClass
public static void setUpClass() throws Exception {
previousDB = DatabaseConstants.DB_URL;
DatabaseConstants.DB_URL = "jdbc:mysql://localhost:3306/newsstats_test";
}
@AfterClass
public static void tearDownClass() throws Exception {
DatabaseConstants.DB_URL = previousDB;
}
@Before
public void setUp() throws Exception {
keyWordClassifierHandler = new KeyWordClassifierHandler();
}
@After
public void tearDown() throws Exception {
}
@org.junit.Test
public void testConfigure() throws Exception {
keyWordClassifierHandler.configure(1, 1, "\\W");
NGramTokenizer tokenizer = keyWordClassifierHandler.getTokenizer();
TestCase.assertEquals(1, tokenizer.getNGramMinSize());
TestCase.assertEquals(1, tokenizer.getNGramMaxSize());
TestCase.assertEquals("\\W", tokenizer.getDelimiters());
}
@Test
public void testCrossValidateClassifier() throws Exception {
Instances testTrainingData;
BufferedReader reader = new BufferedReader(
new FileReader("Classifier\\src\\main\\resources\\testData\\rawTestData"));
testTrainingData = new Instances(reader);
reader.close();
List<Double> accuracyValues = keyWordClassifierHandler.crossValidateClassifier(testTrainingData);
TestCase.assertEquals(100.0, accuracyValues.get(0));
TestCase.assertEquals(63.63636363636363, accuracyValues.get(1));
}
@Test
public void testClassifyInstance() throws Exception {
//already tested in other classes
}
}