package org.limewire.util;
import java.util.NoSuchElementException;
import junit.framework.Test;
public class QuotedStringTokenizerTest extends BaseTestCase {
public QuotedStringTokenizerTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(QuotedStringTokenizerTest.class);
}
public void testTokenizer() {
QuotedStringTokenizer t = new QuotedStringTokenizer("a b c ");
assertEquals(t.countTokens(), 3);
assertEquals("a", t.nextToken());
assertTrue(t.hasMoreTokens());
assertEquals("b", t.nextToken());
assertEquals("c", t.nextToken());
assertFalse(t.hasMoreTokens());
assertNoSuchElementExeception(t);
}
public void testReturnSeparators() {
QuotedStringTokenizer t = new QuotedStringTokenizer("a b c ", " ",
true);
assertEquals(t.countTokens(), 8);
assertEquals("a", t.nextToken());
assertEquals(" ", t.nextToken());
assertEquals("b", t.nextToken());
assertEquals(" ", t.nextToken());
assertEquals(" ", t.nextToken());
assertEquals("c", t.nextToken());
assertEquals(" ", t.nextToken());
assertEquals(" ", t.nextToken());
assertNoSuchElementExeception(t);
}
private void assertNoSuchElementExeception(QuotedStringTokenizer t) {
try {
String s = t.nextToken();
fail("Expected NoSuchElementException, got + '" + s + "'");
} catch (NoSuchElementException ignore) {
}
}
public void testMultipleSeparators() {
QuotedStringTokenizer t = new QuotedStringTokenizer("a;b c", "; ");
assertEquals("a", t.nextToken());
assertEquals("b", t.nextToken());
assertEquals("c", t.nextToken());
}
public void testMultipleSeparatorsReturnSeparators() {
QuotedStringTokenizer t = new QuotedStringTokenizer("a;b c;;", "; ",
true);
assertEquals("a", t.nextToken());
assertEquals(";", t.nextToken());
assertEquals("b", t.nextToken());
assertEquals(" ", t.nextToken());
assertEquals("c", t.nextToken());
assertEquals(";", t.nextToken());
assertEquals(";", t.nextToken());
}
public void testQuotedTokenizer() {
QuotedStringTokenizer t = new QuotedStringTokenizer("\"a a\" b \"c d\"");
assertEquals("a a", t.nextToken());
assertEquals("b", t.nextToken());
assertEquals("c d", t.nextToken());
}
public void testOpenQuote() {
QuotedStringTokenizer t = new QuotedStringTokenizer("\"a a b \"c d\"");
assertEquals("a a b c", t.nextToken());
assertEquals("d", t.nextToken());
t = new QuotedStringTokenizer("\"a a b \" c d\"");
assertEquals("a a b ", t.nextToken());
assertEquals("c", t.nextToken());
assertEquals("d", t.nextToken());
t = new QuotedStringTokenizer("\"a");
assertEquals("a", t.nextToken());
}
}