package ch.nerdin.generators.testdata.framework; import ch.nerdin.generators.testdata.framework.expressions.*; import ch.nerdin.generators.testdata.framework.expressions.Character; import org.junit.Test; import java.util.List; import static org.junit.Assert.*; /** * @author edewit */ public class ReverseRegularExpressionParserTest { final RegularExpressionGenerator generator = new RegularExpressionGenerator(); @Test public void isIndexSet() { //given final Range.RangeBuilder action = new Range.RangeBuilder(); action.with("aaa[a-z]"); //when final boolean found = action.containsExpression(); //then assertTrue(found); assertEquals(3, action.getStart()); } @Test public void testCharacterBuilder() { //given Character.CharacterBuilder builder = new Character.CharacterBuilder(); builder.with("\\.a"); //when boolean found = builder.containsExpression(); //then assertTrue(found); assertEquals(new Character('.').toString(), builder.getExpression().toString()); //when found = builder.containsExpression(); //then assertTrue(found); assertEquals(new Character('a').toString(), builder.getExpression().toString()); assertFalse(builder.containsExpression()); } @Test public void shouldParseSimpleCharExpression() { //when final List<Expression> expressions = generator.parse("ab"); //then assertNotNull(expressions); assertEquals(2, expressions.size()); assertEquals("[Character[a], Character[b]]", expressions.toString()); } @Test public void shouldParseRangeExpressions() { //when final List<Expression> expressions = generator.parse("[a-z][A-Z]"); //then assertNotNull(expressions); assertEquals(2, expressions.size()); assertEquals("[Range[[a,z]], Range[[A,Z]]]", expressions.toString()); } @Test public void shouldParseRangeExpressionComplex() { //when final List<Expression> expressions = generator.parse("[a-z\\-]{2,3}"); //then assertNotNull(expressions); assertEquals(2, expressions.size()); assertEquals("[Range[[a,z, -,-]], Length[2, 3]]", expressions.toString()); final Expression expression = ((Length) expressions.get(1)).getExpression(); assertTrue(expression instanceof Range); } @Test public void shouldParseRangeExpressionEval() { //when final List<Expression> expressions = generator.parse("[a-z\\-]"); final StringBuilder builder = new StringBuilder(); expressions.get(0).eval(builder); //then assertTrue(builder.toString().length() == 1); System.out.println("builder = " + builder); } @Test public void shouldParseLengthExpressions() { //when final List<Expression> expressions = generator.parse("{3}"); //then assertNotNull(expressions); assertEquals(1, expressions.size()); assertEquals("[Length[3, null]]", expressions.toString()); } @Test public void shouldParseLengthRangeExpressions() { //when final List<Expression> expressions = generator.parse("{3,5}"); //then assertNotNull(expressions); assertEquals(1, expressions.size()); assertEquals("[Length[3, 5]]", expressions.toString()); } @Test public void shouldParseCharacterExpressions() { //when final List<Expression> expressions = generator.parse("a"); //then assertNotNull(expressions); assertEquals(1, expressions.size()); assertEquals("[Character[a]]", expressions.toString()); } @Test public void shouldParseMultipleExpressions() { final List<Expression> expressions = generator.parse("aa\\(a[a-g]{2}[h-z]{3}"); //then assertNotNull(expressions); assertEquals(8, expressions.size()); assertEquals("[Character[a], Character[a], Character[(], Character[a], Range[[a,g]], " + "Length[2, null], Range[[h,z]], Length[3, null]]", expressions.toString()); } @Test public void shouldParseGreedyExpression() { final List<Expression> expressions = generator.parse("a*"); //then assertNotNull(expressions); assertEquals(2, expressions.size()); assertEquals("[Character[a], Length[0, 10]]", expressions.toString()); } }