import org.junit.Test;
+import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.DROP;
import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.PRESERVE;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
public class TokenizerTest {
- @Test
- public void findTokenTerminator() throws Exception {
-
- Tokenizer tokenizer = new Tokenizer("this /* comment */ a test")
- .addTerminator("/*", "*/", PRESERVE);
-
-
-
- }
-
@Test
- public void you_can_peek() throws Exception {
+ public void testPeeking() throws Exception {
Tokenizer tokenizer = new Tokenizer("this is a N'2015-03-18 09:48:54.360' test")
- .addTerminator(" ", Terminator.TerminationStrategy.DROP)
+ .addTerminator(" ", DROP)
.addTerminator("N'", "'", PRESERVE);
tokenizer.expectAndConsumeNextToken("this");
}
@Test
- public void complexTerminator() throws Exception {
- Tokenizer tokenizer = new Tokenizer(" this((\"hello\" /* comment */ (( is a N'2015-03-18 09:48:54.360' test")
- .addTerminator(" ", Terminator.TerminationStrategy.DROP)
- .addTerminator("(", Terminator.TerminationStrategy.PRESERVE)
- .addTerminator("\"", "\"" ,Terminator.TerminationStrategy.PRESERVE)
- .addTerminator("/*", "*/" ,Terminator.TerminationStrategy.DROP)
- ;
-
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
- System.out.println(tokenizer.getNextToken().token);
-
-
-// tokenizer.expectAndConsumeNextToken("this");
-//
-// assertEquals("is", tokenizer.peekNextToken().token);
-//
-// assertEquals("is", tokenizer.peekNextToken().token);
-//
-// assertEquals(true, tokenizer.peekIsOneOf("maybe", "is", "that"));
+ public void testTokenization() throws Exception {
+ Tokenizer tokenizer = new Tokenizer("\"hello\" /** comment **/ (( is a N'2015-03-18 09:48:54.360' test")
+ .addTerminator(" ", DROP)
+ .addTerminator("(", PRESERVE)
+ .addTerminator("\"", "\"", PRESERVE)
+ .addTerminator("N'", "'", PRESERVE)
+ .addTerminator("/*", "*/", DROP);
+
+ assertTokenEquals("\"", "hello", tokenizer);
+ assertTokenEquals("(", null, tokenizer);
+ assertTokenEquals("(", null, tokenizer);
+ assertTokenEquals("is", null, tokenizer);
+ assertTokenEquals("a", null, tokenizer);
+ assertTokenEquals("N'", "2015-03-18 09:48:54.360", tokenizer);
+ assertTokenEquals("test", null, tokenizer);
+
+ assertNull(tokenizer.getNextToken());
+ assertFalse(tokenizer.hasMoreTokens());
}
+ private void assertTokenEquals(String token, String reminder, Tokenizer tokenizer) throws InvalidSyntaxException {
+ TokenizerMatch nextToken = tokenizer.getNextToken();
- @Test
- public void testComplexTerminator() throws Exception {
- Tokenizer tokenizer = new Tokenizer("this N'2015-03-18 09:48:54.360' /* thoe unto u */ test")
- .addTerminator(" ", Terminator.TerminationStrategy.DROP)
- .addTerminator("/*", "*/", PRESERVE);
+ assertEquals(token, nextToken.token);
-// tokenizer.expectAndConsumeNextToken("this");
-
-// assertEquals("2015-03-18 09:48:54.360", tokenizer.getNextToken().token);
-
- System.out.println("1st: " + tokenizer.getNextToken().token);
-
- System.out.println("2nd: " + tokenizer.getNextToken().token);
-
- System.out.println("2nd: " + tokenizer.getNextToken().token);
-
- System.out.println("2nd: " + tokenizer.getNextToken().token);
-
- System.out.println("2nd: " + tokenizer.getNextToken().token);
+ if (reminder == null)
+ assertNull(nextToken.reminder);
+ else
+ assertEquals(reminder, nextToken.reminder);
+ }
+ private void debugNextToken(Tokenizer tokenizer) throws InvalidSyntaxException {
+ TokenizerMatch nextToken = tokenizer.getNextToken();
+ if (nextToken == null)
+ System.out.println("null");
+ else
+ System.out.println("T: \"" + nextToken.token + "\", R: \"" + nextToken.reminder + "\"");
}
}
\ No newline at end of file