package org.pentaho.test.platform.engine.services; import java.util.Properties; import java.util.regex.Matcher; import org.pentaho.platform.api.engine.IParameterResolver; import org.pentaho.platform.engine.services.runtime.TemplateUtil; import org.pentaho.platform.util.DateMath; import junit.framework.TestCase; @SuppressWarnings({"all"}) public class TemplateUtilTest extends TestCase implements IParameterResolver { public void testVariable() { Properties props = new Properties(); props.put( "name1", "value1" ); String template = "{name1}"; String value = TemplateUtil.applyTemplate( template, props, (IParameterResolver) null); assertEquals( value, "value1" ); } public void testPreareVariable() { Properties props = new Properties(); String template = "{PREPARE:name1}"; String value = TemplateUtil.applyTemplate( template, props, this); assertEquals( value, "value1" ); } public void testDateRegexSimple() { doCompare( "+1:MS" ); doCompare( "0:DS" ); doCompare( "-10:Y" ); } public void testDateRegexCompound() { doCompare( "+1:MS -2:DS" ); doCompare( "0:DS +12:h" ); doCompare( "-10:Y 0:MS" ); doCompare( "+1:MS -2:DS" ); doCompare( "0:DS +12:h" ); doCompare( "-10:Y 0:MS" ); } public void testDateRegexFormatted() { doCompare( "+1:MS;MM,yyyy-dd" ); doCompare( "0:DS +12:h;yyyy-MM-dd" ); doCompare( "-10:Y\t0:MS;yyyy-MM-dd" ); // doCompare( "-10:Y 0:MS;yyyy-MM-dd hh:mm:ss" ); } public void testDateRegexDateMath() { doCompare( "DATEMATH('+1:MS')", "+1:MS;yyyy-MM-dd" ); doCompare( "DATEMATH(\"0:DS +12:h\")", "0:DS +12:h;yyyy-MM-dd" ); doCompare( "DATEMATH( '-10:Y 0:MS' )", "-10:Y 0:MS;yyyy-MM-dd" ); } public void testDateRegexDateMathFormatted() { doCompare( "DATEMATH('+1:MS;MM,yyyy-dd')", "+1:MS;MM,yyyy-dd" ); doCompare( "DATEMATH(\"0:DS +12:h ; yyyy-MM-dd\")", "0:DS +12:h ; yyyy-MM-dd" ); doCompare( "DATEMATH( '-10:Y 0:MS ;yyyy-MM-dd hh:mm:ss' )", "-10:Y 0:MS ;yyyy-MM-dd hh:mm:ss" ); } private void doCompare( String exp ) { if( exp.indexOf(';') == -1 ) { doCompare( exp, exp+";yyyy-MM-dd" ); } else { doCompare( exp, exp ); } } private void doCompare( String exp, String exp2 ) { Properties props = new Properties(); // props.put( "dummy", exp ); String template = "{"+exp+"}"; String ref = DateMath.calculateDateString( null, exp2.replace('=', ':').replace('_', ' ') ); String value = TemplateUtil.applyTemplate( template, props, (IParameterResolver) null); template = "{DATEMATH:var}"; props.put("var", exp); String value2 = TemplateUtil.applyTemplate( template, props, (IParameterResolver) null); assertNotNull( "Date was null", value ); assertNotNull( "Date was null", value2 ); assertEquals( "Dates do not match", ref, value ); assertEquals( "Dates do not match", ref, value2 ); } public int resolveParameter(String template, String parameter, Matcher parameterMatcher, int copyStart, StringBuffer results) { if( parameter.equals( "PREPARE:name1" ) ) { results.append("value1"); } return template.length(); } }