/* Copyright 2004, Carnegie Mellon, All Rights Reserved */
package edu.cmu.minorthird.classify;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import edu.cmu.minorthird.classify.experiments.Evaluation;
import edu.cmu.minorthird.classify.sequential.SequenceClassifier;
/**
*
* @author William Cohen
*/
public class TestUI extends TestSuite
{
//private static Logger log = Logger.getLogger(TestUI.class);
public TestUI(String name) { super(name); }
public static TestSuite suite()
{
TestSuite suite = new TestSuite();
//
// test ui
//
suite.addTest( new UITest(new String[]{
"-data", "sample:toy.train", "-learner", "new NaiveBayes()","-splitter","k5"}) {
public void checkResult(Object result) {
assertTrue(result instanceof Evaluation);
Evaluation e = (Evaluation)result;
assertEquals( 0.92, e.f1(), 0.1 );
}
});
suite.addTest( new UITest(new String[]{
"-op", "train", "-data", "sample:toy.train", "-learner", "new NaiveBayes()", "-saveAs", "tmp.cls"}) {
public void checkResult(Object result) {
assertTrue(result instanceof Classifier);
}
});
suite.addTest( new UITest(new String[]{
"-op", "test", "-data", "sample:toy.test", "-classifierFile", "tmp.cls"}) {
public void checkResult(Object result) {
assertTrue(result instanceof Evaluation);
Evaluation e = (Evaluation)result;
assertEquals( 0.9, e.f1(), 0.2 );
}
});
suite.addTest( new UITest(new String[]{
"-op", "trainTest", "-seq", "-data", "sample:toySeq.train", "-splitter", "k5"}) {
public void checkResult(Object result) {
assertTrue(result instanceof Evaluation);
Evaluation e = (Evaluation)result;
assertEquals( 0.2, e.errorRate(), 0.2 );
}
});
suite.addTest( new UITest(new String[]{
"-op", "train", "-seq", "-data", "sample:toySeq.train", "-saveAs", "tmp.cls"}) {
public void checkResult(Object result) {
assertTrue(result instanceof SequenceClassifier);
}
});
suite.addTest( new UITest(new String[]{
"-op", "test", "-seq", "-data", "sample:toySeq.test", "-classifierFile", "tmp.cls"}) {
public void checkResult(Object result) {
assertTrue(result instanceof Evaluation);
Evaluation e = (Evaluation)result;
assertEquals( 0.25, e.errorRate(), 0.2 );
}
});
return suite;
}
// test the TrainTestClassifier package
abstract public static class UITest extends TestCase
{
private String[] args;
public UITest(String[] args)
{
super("doTest");
this.args = args;
}
public void doTest()
{
UI.DataClassificationTask m = new UI.DataClassificationTask();
m.callMain(args);
checkResult(m.getMainResult());
}
abstract public void checkResult(Object result);
}
static public void main(String[] argv) {
junit.textui.TestRunner.run(suite());
}
}