/* Copyright (C) 2003 Univ. of Massachusetts Amherst, Computer Science Dept. This file is part of "MALLET" (MAchine Learning for LanguagE Toolkit). http://www.cs.umass.edu/~mccallum/mallet This software is provided under the terms of the Common Public License, version 1.0, as published by http://www.opensource.org. For further information, see the file `LICENSE' included with this distribution. */ package cc.mallet.pipe.tsf.tests; import junit.framework.*; import java.io.PrintWriter; import java.io.StringWriter; import cc.mallet.pipe.Pipe; import cc.mallet.pipe.SerialPipes; import cc.mallet.pipe.tsf.SequencePrintingPipe; import cc.mallet.types.*; /** * Created: Jul 8, 2005 * * @author <A HREF="mailto:casutton@cs.umass.edu>casutton@cs.umass.edu</A> * @version $Id: TestSequencePrintingPipe.java,v 1.1 2007/10/22 21:37:57 mccallum Exp $ */ public class TestSequencePrintingPipe extends TestCase { public TestSequencePrintingPipe (String name) { super (name); } public static Test suite () { return new TestSuite (TestSequencePrintingPipe.class); } public static void testPrinting () { Alphabet dict = dictOfSize (3); FeatureVector[] vecs = new FeatureVector[] { new FeatureVector (dict, new int[] { 0, 1 }), new FeatureVector (dict, new int[] { 0, 2 }), new FeatureVector (dict, new int[] { 2 }), new FeatureVector (dict, new int[] { 1, 2 }), }; LabelAlphabet ld = labelDictOfSize (3); LabelSequence lbls = new LabelSequence (ld, new int [] { 0, 2, 0, 1}); FeatureVectorSequence fvs = new FeatureVectorSequence (vecs); StringWriter sw = new StringWriter (); PrintWriter w = new PrintWriter (sw); Pipe p = new SequencePrintingPipe (w); // pipe the instance p.instanceFrom(new Instance (fvs, lbls, null, null)); // Do a second one FeatureVectorSequence fvs2 = new FeatureVectorSequence (new FeatureVector[] { new FeatureVector (dict, new int[] { 1 }), new FeatureVector (dict, new int[] { 0 }), }); LabelSequence lbls2 = new LabelSequence (ld, new int[] { 2, 1 }); p.instanceFrom(new Instance (fvs2, lbls2, null, null)); w.close(); assertEquals ("LABEL0 feature0 feature1\n" + "LABEL2 feature0 feature2\n" + "LABEL0 feature2\n" + "LABEL1 feature1 feature2\n" + "\n" + "LABEL2 feature1\n" + "LABEL1 feature0\n\n", sw.toString()); } private static Alphabet dictOfSize (int n) { Alphabet dict = new Alphabet (); for (int i = 0; i < n; i++) { dict.lookupIndex ("feature"+i); } return dict; } private static LabelAlphabet labelDictOfSize (int n) { LabelAlphabet dict = new LabelAlphabet (); for (int i = 0; i < n; i++) { dict.lookupIndex ("LABEL"+i); } return dict; } public static void main (String[] args) throws Throwable { TestSuite theSuite; if (args.length > 0) { theSuite = new TestSuite (); for (int i = 0; i < args.length; i++) { theSuite.addTest (new TestSequencePrintingPipe (args[i])); } } else { theSuite = (TestSuite) suite (); } junit.textui.TestRunner.run (theSuite); } }