/* Copyright (C) 2002 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. */ /** @author Andrew McCallum <a href="mailto:mccallum@cs.umass.edu">mccallum@cs.umass.edu</a> */ package cc.mallet.pipe.tests; import junit.framework.*; import java.util.ArrayList; import java.util.regex.*; import java.io.IOException; import cc.mallet.pipe.*; import cc.mallet.pipe.iterator.*; import cc.mallet.pipe.tsf.*; import cc.mallet.types.*; import cc.mallet.types.tests.TestSerializable; public class TestInstancePipe extends TestCase { public TestInstancePipe (String name) { super (name); } String[] data = new String[] { "This is the first test string", "The second test string is here", "And this is the third test string", }; public static class Array2ArrayIterator extends Pipe { public Instance pipe (Instance carrier) { carrier.setData(new ArrayIterator ((Object[])carrier.getData())); return carrier; } } public Pipe createPipe () { return new SerialPipes (new Pipe[] { new CharSequence2TokenSequence (), new TokenSequenceLowercase (), new TokenSequence2FeatureSequence (), new FeatureSequence2FeatureVector ()}); } public void testOne () { Pipe p = createPipe(); InstanceList ilist = new InstanceList (p); ilist.addThruPipe(new StringArrayIterator(data)); assertTrue (ilist.size() == 3); } public void testTwo () { Pipe p = new SerialPipes (new Pipe[] { new CharSequence2TokenSequence (), new TokenSequenceLowercase (), new RegexMatches ("vowel", Pattern.compile ("[aeiou]")), new RegexMatches ("firsthalf", Pattern.compile ("[a-m]")), new RegexMatches ("secondhalf", Pattern.compile ("[n-z]")), new RegexMatches ("length2", Pattern.compile ("..")), new RegexMatches ("length3", Pattern.compile ("...")), new PrintInput (), new TokenSequence2TokenInstances()}); InstanceList ilist = new InstanceList (p); ilist.addThruPipe (new StringArrayIterator(data)); assert (ilist.size() == 19) : "list size = "+ilist.size(); assertTrue (ilist.size() == 19); } public void testOneFromSerialized () throws IOException, ClassNotFoundException { Pipe p = createPipe (); Pipe clone = (Pipe) TestSerializable.cloneViaSerialization (p); InstanceList ilist = new InstanceList (clone); ilist.addThruPipe(new StringArrayIterator(data)); assertTrue (ilist.size() == 3); } public static Test suite () { return new TestSuite (TestInstancePipe.class); } protected void setUp () { } public static void main (String[] args) { junit.textui.TestRunner.run (suite()); } }