package com.venky.swf.sql.parser;
import static com.venky.swf.sql.parser.SQLExpressionParser.digit;
import static com.venky.swf.sql.parser.SQLExpressionParser.openParen;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.venky.parse.Rule;
import com.venky.parse.composite.CharSequence;
import com.venky.parse.composite.Multiple;
import com.venky.parse.composite.Sequence;
public class ParserTest {
@Test
public void numberTest() {
Rule number = new Multiple( digit() );
boolean match = number.match("A123456A",1);
assertTrue(match);
assertEquals(number.getMatch().getText(),"123456");
}
@Test
public void charSeqTest() {
Rule charSeq = new CharSequence("ABCDE");
Rule clone = null;
clone = charSeq.createClone();
assertTrue(clone.match("ABCDEFGH", 0));
assertEquals("ABCDE", clone.getMatch().getText());
clone = charSeq.createClone();
assertTrue(clone.match("ABCDE", 0));
assertEquals("ABCDE", clone.getMatch().getText());
clone = charSeq.createClone();
assertTrue(!clone.match("ABCD", 0));
}
@Test
public void ExactZeroMatchTest(){
Rule r = new Multiple(new Sequence(openParen()),0,0);
if (r.match("( A )")){
assertEquals(0, r.getMatch().length());
}
}
}