package org.oddjob.values.types;
import java.text.ParseException;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.oddjob.Oddjob;
import org.oddjob.arooa.xml.XMLConfiguration;
import org.oddjob.state.ParentState;
import org.oddjob.tools.ConsoleCapture;
public class TokenizerTypeTest extends TestCase {
private static final Logger logger = Logger.getLogger(
TokenizerTypeTest.class);
public void testSimpleCSV() throws ParseException {
TokenizerType test = new TokenizerType();
test.setText("a, b, c");
String[] result = test.parse();
assertEquals("a", result[0]);
assertEquals("b", result[1]);
assertEquals("c", result[2]);
}
public void testTabDelimited() throws ParseException {
TokenizerType test = new TokenizerType();
test.setText("a\tb\tc");
test.setDelimiter("\t");
String[] result = test.parse();
assertEquals("a", result[0]);
assertEquals("b", result[1]);
assertEquals("c", result[2]);
}
public void testRegexpDelimited() throws ParseException {
TokenizerType test = new TokenizerType();
test.setText("a,b;c");
test.setDelimiter("(,|;)");
test.setRegexp(true);
String[] result = test.parse();
assertEquals("a", result[0]);
assertEquals("b", result[1]);
assertEquals("c", result[2]);
}
public void testQuoted() throws ParseException {
TokenizerType test = new TokenizerType();
test.setText("a,'b,c'");
test.setQuote('\'');
String[] result = test.parse();
assertEquals("a", result[0]);
assertEquals("b,c", result[1]);
}
public void testExample() {
Oddjob oddjob = new Oddjob();
oddjob.setConfiguration(new XMLConfiguration(
"org/oddjob/values/types/TokenizerExample.xml",
getClass().getClassLoader()));
ConsoleCapture console = new ConsoleCapture();
try (ConsoleCapture.Close close = console.captureConsole()) {
oddjob.run();
}
assertEquals(ParentState.COMPLETE,
oddjob.lastStateEvent().getState());
console.dump(logger);
String[] lines = console.getLines();
assertEquals("I'm 1", lines[0].trim());
assertEquals("I'm 2", lines[1].trim());
assertEquals("I'm 3", lines[2].trim());
assertEquals("I'm 4", lines[3].trim());
assertEquals(12, lines.length);
oddjob.destroy();
}
}