package com.fulmicoton.multiregexp;
import org.junit.Assert;
import org.junit.Test;
import java.util.Iterator;
/**
* Created by pmasurel on 4/28/16.
*/
public class LexerTest {
public enum TokenType {
WORD,
SYMBOL,
NUMBER,
WHITESPACE
}
public static Lexer<TokenType> lexer() {
final Lexer<TokenType> lexer = new Lexer<>();
lexer.addRule(TokenType.WHITESPACE, "[ \t\n]+");
lexer.addRule(TokenType.NUMBER, "[0-9][0-9,\\.]+");
lexer.addRule(TokenType.WORD, "[a-zA-Z0-9]+");
lexer.addRule(TokenType.SYMBOL, ".");
return lexer;
}
@Test
public void testLexer() {
final Lexer<TokenType> lexer = lexer();
final Iterator<Token<TokenType>> tokens = lexer.scan("100k").iterator();
{
final Token token = tokens.next();
Assert.assertEquals(token.str, "100");
Assert.assertEquals(token.type, TokenType.NUMBER);
}
{
final Token token = tokens.next();
Assert.assertEquals(token.str, "k");
Assert.assertEquals(token.type, TokenType.WORD);
}
Assert.assertFalse(tokens.hasNext());
}
}