/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.util;
import junit.framework.TestCase;
import java.util.List;
public class TestPlaceholderParser extends TestCase {
public void testParseValid() throws Exception {
Object[][] testdata = new Object[][]{
{"a a $${lib}", new Object[]{textF("a a ${lib}")}},
{"a ${lib} b", new Object[]{textF("a "), paramF("lib"), textF(" b")}},
{"${lib} b", new Object[]{paramF("lib"), textF(" b")}},
{"a${lib}", new Object[]{textF("a"), paramF("lib")}},
{"$${lib}", new Object[]{textF("${lib}")}},
{"$${lib} c", new Object[]{textF("${lib} c")}},
{"a$${lib}", new Object[]{textF("a${lib}")}},
{"sometext ${a} text $${d} ${e} text",
new Object[]{textF("sometext "), paramF("a"), textF(" text ${d} "), paramF("e"), textF(" text")}},
{"$${lib} c $${lib}", new Object[]{textF("${lib} c ${lib}")}},
{"$${lib}$${lib}", new Object[]{textF("${lib}${lib}")}},
{"${xxx}$${lib}", new Object[]{paramF("xxx"), textF("${lib}")}},
{"$${xxx}${lib}", new Object[]{textF("${xxx}"), paramF("lib")}},
{"${lib} ${lib}", new Object[]{paramF("lib"), textF(" "), paramF("lib")}},
{"${lib}${lib}", new Object[]{paramF("lib"), paramF("lib")}},
{"$${lib", new Object[]{textF("${lib")}},
{"lib}", new Object[]{textF("lib}")}}
};
for (int i = 0; i < testdata.length; i++) {
testParseValid(testdata[i]);
}
}
public void testParseValid(Object[] inputAndResults) throws Exception {
String parseString = (String) inputAndResults[0];
Object[] expected = (Object[]) inputAndResults[1];
List<PlaceholderParser.Fragment> result = PlaceholderParser.parsePlaceholder(parseString);
assertEquals("Incorrect count for '" + parseString + "'", expected.length, result.size());
for (int i = 0; i < expected.length; i++) {
assertEquals("Incorrect value for '" + parseString + "' at " + i, expected[i], result.get(i));
}
}
public void testParseInvalid() {
tryParseInvalid("${lib");
tryParseInvalid("${lib} ${aa");
}
private void tryParseInvalid(String parseString) {
try {
PlaceholderParser.parsePlaceholder(parseString);
fail();
} catch (PlaceholderParseException ex) {
// expected
}
}
private PlaceholderParser.TextFragment textF(String text) {
return new PlaceholderParser.TextFragment(text);
}
private PlaceholderParser.ParameterFragment paramF(String text) {
return new PlaceholderParser.ParameterFragment(text);
}
}