/**
* Copyright 2011 meltmedia
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xchain.framework.jsl;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @author Christian Trimble
* @author Devon Tackett
* @author Josh Kennedy
*/
public class TemplateSourceBuilderTest
{
public static Logger log = LoggerFactory.getLogger(TemplateSourceBuilderTest.class);
@Before public void setUp()
{
}
@After public void tearDown()
{
}
@Test public void testSingleElementTemplate()
throws Exception
{
TemplateSourceBuilder sourceBuilder = new TemplateSourceBuilder();
sourceBuilder.startSource(new HashMap<String, String>(), new HashSet<String>(), true);
sourceBuilder.startVirtualChain();
sourceBuilder.appendCommandCall();
sourceBuilder.startVirtualChain();
sourceBuilder.startStartElement();
sourceBuilder.appendAttributeValueTemplate("uri", "localName", "p:localName", "{/path}");
sourceBuilder.appendStartElement("uri\r\\\t\"\'", "localName", "p:qName");
sourceBuilder.endStartElement();
sourceBuilder.startEndElement();
sourceBuilder.appendEndElement("uri", "localName", "p:qName");
sourceBuilder.endEndElement();
sourceBuilder.endVirtualChain();
sourceBuilder.endVirtualChain();
//System.out.println(sourceBuilder.endSource().getSource());
}
@Test public void testAttributeValueTemplate()
throws Exception
{
List<String> parsedExpression = TemplateSourceBuilder.parseAttributeValueTemplate("No attribute value template");
assertEquals("The number of parts parsed was incorrect.", 1, parsedExpression.size());
assertEquals("Incorrect value for fixed part.", "No attribute value template", parsedExpression.get(0));
parsedExpression = TemplateSourceBuilder.parseAttributeValueTemplate("No attribute value template{/xpath}");
assertEquals("The number of parts parsed was incorrect.", 2, parsedExpression.size());
assertEquals("Incorrect value for fixed part.", "No attribute value template", parsedExpression.get(0));
assertEquals("Incorrect value for dynamic part.", "/xpath", parsedExpression.get(1));
parsedExpression = TemplateSourceBuilder.parseAttributeValueTemplate("No attribute value template {/xpath} more template.");
assertEquals("The number of parts parsed was incorrect.", 3, parsedExpression.size());
assertEquals("Incorrect value for fixed part.", "No attribute value template ", parsedExpression.get(0));
assertEquals("Incorrect value for dynamic part.", "/xpath", parsedExpression.get(1));
assertEquals("Incorrect value for fixed part.", " more template.", parsedExpression.get(2));
parsedExpression = TemplateSourceBuilder.parseAttributeValueTemplate("No attribute {{value}} template {/xpath} more template.");
assertEquals("The number of parts parsed was incorrect.", 3, parsedExpression.size());
assertEquals("Incorrect value for fixed part.", "No attribute {value} template ", parsedExpression.get(0));
assertEquals("Incorrect value for dynamic part.", "/xpath", parsedExpression.get(1));
assertEquals("Incorrect value for fixed part.", " more template.", parsedExpression.get(2));
parsedExpression = TemplateSourceBuilder.parseAttributeValueTemplate("");
assertEquals("The number of parts parsed was incorrect.", 1, parsedExpression.size());
assertEquals("Incorrect value for fixed part.", "", parsedExpression.get(0));
parsedExpression = TemplateSourceBuilder.parseAttributeValueTemplate("{}");
assertEquals("The number of parts parsed was incorrect.", 2, parsedExpression.size());
assertEquals("Incorrect value for fixed part.", "", parsedExpression.get(0));
assertEquals("Incorrect value for dynamic part.", "", parsedExpression.get(1));
}
}