package org.docbag.expression.parser; import java.util.regex.Pattern; import junit.framework.Assert; import junit.framework.TestCase; import org.docbag.template.TemplatePatterns; /** * RegExpUtilTest * * @author Jakub Torbicki */ public class RegExpUtilTest extends TestCase { private static final Pattern EXPRESSION_DELIMETER_PATTERN = Pattern.compile("#\\{(.+)\\}"); private static final String PATTERN_ONE = "#{context('name')}"; private static final String PATTERN_TWO = "some text #{context('name')}"; private static final String PATTERN_THREE = "#{context('name')} some text"; private static final String PATTERN_FOUR = "#{context('name')}#{context('name')}"; private static final String PATTERN_FIVE = "some text #{context('name')}#{context('name')}"; private static final String PATTERN_SIX = "#{context('name')}some text#{context('name')}"; private static final String PATTERN_SEVEN = "some text #{context('name')}#{context('name')}some text"; private static final String PATTERN_EIGHT = "#{context('name')}#{context('name')}some text"; private static final String PATTERN_NINE = "some text#{context('name')}some text#{context('name')}some text"; public void testInclusiveSplit() throws Exception { Assert.assertEquals(1, RegExpUtil.inclusiveSplit(PATTERN_ONE, EXPRESSION_DELIMETER_PATTERN, 0).length); Assert.assertEquals(2, RegExpUtil.inclusiveSplit(PATTERN_TWO, EXPRESSION_DELIMETER_PATTERN, 0).length); Assert.assertEquals(2, RegExpUtil.inclusiveSplit(PATTERN_THREE, EXPRESSION_DELIMETER_PATTERN, 0).length); // TODO all of those will not be resolved correctly. Unfortunately for now the pattern can't be changed to // #\{(.+?)\} due to JSON being used as an expression parameter // Assert.assertEquals(2, RegExpUtil.inclusiveSplit(PATTERN_FOUR, EXPRESSION_DELIMETER_PATTERN, 0).length); // Assert.assertEquals(3, RegExpUtil.inclusiveSplit(PATTERN_FIVE, EXPRESSION_DELIMETER_PATTERN, 0).length); // Assert.assertEquals(3, RegExpUtil.inclusiveSplit(PATTERN_SIX, EXPRESSION_DELIMETER_PATTERN, 0).length); // Assert.assertEquals(4, RegExpUtil.inclusiveSplit(PATTERN_SEVEN, EXPRESSION_DELIMETER_PATTERN, 0).length); // Assert.assertEquals(3, RegExpUtil.inclusiveSplit(PATTERN_EIGHT, EXPRESSION_DELIMETER_PATTERN, 0).length); // Assert.assertEquals(5, RegExpUtil.inclusiveSplit(PATTERN_NINE, EXPRESSION_DELIMETER_PATTERN, 0).length); } }