franta-hg@70: /** franta-hg@70: * Alt2XML franta-hg@70: * Copyright © 2014 František Kučera (frantovo.cz) franta-hg@70: * franta-hg@70: * This program is free software: you can redistribute it and/or modify franta-hg@70: * it under the terms of the GNU General Public License as published by franta-hg@70: * the Free Software Foundation, either version 3 of the License, or franta-hg@70: * (at your option) any later version. franta-hg@70: * franta-hg@70: * This program is distributed in the hope that it will be useful, franta-hg@70: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@70: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@70: * GNU General Public License for more details. franta-hg@70: * franta-hg@70: * You should have received a copy of the GNU General Public License franta-hg@70: * along with this program. If not, see . franta-hg@70: */ franta-hg@70: package cz.frantovo.alt2xml.out.xpath; franta-hg@70: franta-hg@70: import cz.frantovo.alt2xml.out.ActionContext; franta-hg@70: import java.io.ByteArrayOutputStream; franta-hg@70: import java.util.ArrayList; franta-hg@70: import java.util.List; franta-hg@70: import java.util.Properties; franta-hg@70: import javax.xml.parsers.DocumentBuilder; franta-hg@70: import javax.xml.parsers.DocumentBuilderFactory; franta-hg@70: import javax.xml.parsers.ParserConfigurationException; franta-hg@70: import javax.xml.transform.dom.DOMResult; franta-hg@70: import static org.testng.Assert.*; franta-hg@70: import org.testng.annotations.BeforeMethod; franta-hg@70: import org.testng.annotations.Test; franta-hg@70: franta-hg@70: /** franta-hg@70: * franta-hg@70: * @author Ing. František Kučera (frantovo.cz) franta-hg@70: */ franta-hg@70: public class XPathActionNGTest { franta-hg@70: franta-hg@70: private final DocumentBuilderFactory documentBuilderFactory; franta-hg@70: private final DocumentBuilder documentBuilder; franta-hg@70: private Properties actionProperties; franta-hg@70: private List actionData; franta-hg@70: franta-hg@70: public XPathActionNGTest() throws ParserConfigurationException { franta-hg@70: documentBuilderFactory = DocumentBuilderFactory.newInstance(); franta-hg@70: documentBuilder = documentBuilderFactory.newDocumentBuilder(); franta-hg@70: } franta-hg@70: franta-hg@70: private DOMResult generateEmptyResult() { franta-hg@70: return new DOMResult(documentBuilder.newDocument()); franta-hg@70: } franta-hg@70: franta-hg@70: private static byte[] generateStringResult(String value) { franta-hg@70: return (value + "\n").getBytes(); franta-hg@70: } franta-hg@70: franta-hg@70: @BeforeMethod franta-hg@70: public void setupMethod() { franta-hg@70: actionProperties = new Properties(); franta-hg@70: actionData = new ArrayList<>(); franta-hg@70: System.out.println("\n--- Output: --------"); franta-hg@70: } franta-hg@70: franta-hg@70: @Test franta-hg@70: public void testRun_simple() throws Exception { franta-hg@70: actionData.add("1+1"); franta-hg@70: franta-hg@70: doTest(generateEmptyResult(), actionData, actionProperties, generateStringResult("2")); franta-hg@70: } franta-hg@70: franta-hg@70: @Test franta-hg@70: public void testRun_simpleParameters() throws Exception { franta-hg@70: actionProperties.put(XPathAction.PARAMETER_TYPED_PARAMETERS, Boolean.FALSE); franta-hg@70: franta-hg@70: actionData.add("1+$a"); franta-hg@70: actionData.add("a"); franta-hg@70: actionData.add("2"); franta-hg@70: franta-hg@70: doTest(generateEmptyResult(), actionData, actionProperties, generateStringResult("3")); franta-hg@70: } franta-hg@70: franta-hg@70: private void doTest(DOMResult domResult, List actionData, Properties actionProperties, byte[] expectedResult) throws Exception { franta-hg@70: franta-hg@70: ByteArrayOutputStream baos = new ByteArrayOutputStream(); franta-hg@70: ActionContext actionContext = new ActionContext(baos); franta-hg@70: franta-hg@70: actionContext.setActionProperties(actionProperties); franta-hg@70: actionContext.setActionData(actionData); franta-hg@70: franta-hg@70: XPathAction instance = new XPathAction(actionContext); franta-hg@70: instance.run(domResult); franta-hg@70: System.out.write(baos.toByteArray()); franta-hg@70: franta-hg@70: assertEquals(baos.toByteArray(), expectedResult); franta-hg@70: } franta-hg@70: }