/* Copyright 2004, Carnegie Mellon, All Rights Reserved */ package edu.cmu.minorthird.ui; import junit.framework.TestCase; import junit.framework.TestSuite; import edu.cmu.minorthird.classify.experiments.Evaluation; import edu.cmu.minorthird.text.learn.experiments.ExtractionEvaluation; /** * * @author William Cohen */ public class LongTestPackage extends TestSuite{ public LongTestPackage(String name){ super(name); } public static TestSuite suite(){ TestSuite suite=new TestSuite(); // Start Test algorithms //Classification //Decision Tree/Directive suite.addTest(new LongUITest(TrainTestClassifier.class,new String[]{ "-labels","cspace.1f3","-spanType","Req","-test","cspace.2f2", "-learner","new DecisionTreeLearner()"}){ public void checkResult(Object result){ Evaluation e=(Evaluation)result; assertEquals(.2,e.errorRate(),0.02); assertEquals(.65,e.f1(),0.02); } }); suite.addTest(new LongUITest(TrainTestClassifier.class,new String[]{ "-labels","cspace.1f3","-spanType","NotReq","-test","cspace.2f2", "-learner","new DecisionTreeLearner()"}){ public void checkResult(Object result){ Evaluation e=(Evaluation)result; assertEquals(.18,e.errorRate(),0.02); assertEquals(.87,e.f1(),0.02); } }); //VotedPerceptron/Deliver suite.addTest(new LongUITest(TrainTestClassifier.class,new String[]{ "-labels","cspace.1f3","-spanType","Dlv","-test","cspace.2f2", "-learner","new VotedPerceptron()"}){ public void checkResult(Object result){ Evaluation e=(Evaluation)result; assertEquals(.18,e.errorRate(),0.02); assertEquals(.88,e.f1(),0.02); } }); suite.addTest(new LongUITest(TrainTestClassifier.class,new String[]{ "-labels","cspace.1f3","-spanType","NotDlv","-test","cspace.2f2", "-learner","new VotedPerceptron()"}){ public void checkResult(Object result){ Evaluation e=(Evaluation)result; assertEquals(.18,e.errorRate(),0.02); assertEquals(.62,e.f1(),0.02); } }); //SVM/Commit suite.addTest(new LongUITest(TrainTestClassifier.class,new String[]{ "-labels","cspace.1f3","-spanType","Cmt","-test","cspace.2f2", "-learner","new SVMLearner()"}){ public void checkResult(Object result){ Evaluation e=(Evaluation)result; assertEquals(.15,e.errorRate(),0.02); assertEquals(.31,e.f1(),0.02); } }); suite.addTest(new LongUITest(TrainTestClassifier.class,new String[]{ "-labels","cspace.1f3","-spanType","NotCmt","-test","cspace.2f2", "-learner","new SVMLearner()"}){ public void checkResult(Object result){ Evaluation e=(Evaluation)result; assertEquals(.15,e.errorRate(),0.02); assertEquals(.91,e.f1(),0.02); } }); //Extraction suite .addTest(new LongUITest( TrainTestExtractor.class, new String[]{ "-labels", "cspace.07", "-test", "cspace.09", "-spanType", "true_name", "-learner", "new SequenceAnnotatorLearner(new CollinsPerceptronLearner(1,20), new Recommended.TokenFE(), new BeginContinueEndUniqueReduction())"}){ public void checkResult(Object result){ ExtractionEvaluation e=(ExtractionEvaluation)result; assertEquals(0.82,e.tokenF1(),0.02); assertEquals(0.75,e.spanF1(),0.02); } }); suite .addTest(new LongUITest( TrainTestExtractor.class, new String[]{ "-labels", "cspace.07", "-test", "cspace.09", "-spanType", "true_name", "-learner", "new SequenceAnnotatorLearner(new CRFLearner(1,20), new Recommended.TokenFE(), new BeginContinueEndUniqueReduction())"}){ public void checkResult(Object result){ ExtractionEvaluation e=(ExtractionEvaluation)result; assertEquals(0.88,e.tokenF1(),0.02); assertEquals(0.83,e.spanF1(),0.02); } }); //Doesn't Work - ERROR /*suite.addTest( new LongUITest(TrainTestExtractor.class, new String[]{ "-labels","cspace.07", "-test","cspace.09", "-spanType","true_name", "-learner", "new SegmentAnnotatorLearner(new SegmentCollinsPerceptronLearner(20), new Recommended.MultitokenSpanFE(), 4)"}) { public void checkResult(Object result) { ExtractionEvaluation e = (ExtractionEvaluation)result; assertEquals( 0.88, e.tokenF1(), 0.02 ); assertEquals( 0.83, e.spanF1(), 0.02 ); } });*/ //End Test algorithms return suite; } abstract public static class LongUITest extends TestCase{ private String[] args; private Class<?> mainClass; public LongUITest(Class<?> mainClass,String[] args){ super("doTest"); this.mainClass=mainClass; this.args=args; } public void doTest(){ try{ UIMain m=(UIMain)mainClass.newInstance(); m.callMain(args); checkResult(m.getMainResult()); }catch(InstantiationException ex){ throw new IllegalArgumentException(ex.toString()); }catch(IllegalAccessException ex){ throw new IllegalArgumentException(ex.toString()); } } abstract public void checkResult(Object result); } static public void main(String[] argv){ junit.textui.TestRunner.run(suite()); } }