package org.tigris.juxy; import junit.framework.TestCase; import org.tigris.juxy.util.DOMUtil; import org.tigris.juxy.xpath.XPathExpr; import org.tigris.juxy.xpath.XPathFactory; import org.w3c.dom.Document; import org.xml.sax.SAXException; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamSource; import java.io.File; public class UTestRunnerContext extends TestCase { private RunnerContextImpl ctx = null; public void setUp() { ctx = new RunnerContextImpl("somefile.xsl"); } public void testSetDocument() throws SAXException { try { ctx.setDocument((String) null); fail("An exception expected"); } catch (IllegalArgumentException ex) { } try { ctx.setDocument(" "); fail("An exception expected"); } catch (IllegalArgumentException ex) { } ctx.setDocument("<root/>"); assertTrue(ctx.getSourceDocument() instanceof SAXSource); ctx.setDocument(DOMUtil.parse("<root/>")); assertTrue(ctx.getSourceDocument() instanceof DOMSource); ctx.setDocument(new File("xml/document.xml")); assertTrue(ctx.getSourceDocument() instanceof StreamSource); } public void testSetCurrentNode() { XPathExpr xpathExpr = XPathFactory.newXPath("/"); ctx.setCurrentNode(xpathExpr); assertSame(xpathExpr, ctx.getCurrentNodeSelector()); } public void testSetGlobalParam() { assertEquals(0, ctx.getGlobalParams().size()); Object value = new Object(); ctx.setGlobalParamValue("param", value); assertEquals(1, ctx.getGlobalParams().size()); assertTrue(ctx.getGlobalParams().contains(new GlobalParam("param", value))); ctx.setGlobalParamValue("param2", value); assertEquals(2, ctx.getGlobalParams().size()); assertTrue(ctx.getGlobalParams().contains(new GlobalParam("param2", value))); } public void testSetGlobalVariable() throws SAXException { assertEquals(0, ctx.getGlobalVariables().size()); ctx.setGlobalVariableValue("var1", "value1"); ctx.setGlobalVariableValue("var2", XPathFactory.newXPath("/")); Document varContent = DOMUtil.parse("<root/>"); ctx.setGlobalVariableValue("var3", varContent); assertEquals(3, ctx.getGlobalVariables().size()); assertTrue(ctx.getGlobalVariables().contains(new GlobalVariable("var1", "value1"))); assertTrue(ctx.getGlobalVariables().contains(new GlobalVariable("var2", XPathFactory.newXPath("/")))); assertTrue(ctx.getGlobalVariables().contains(new GlobalVariable("var3", varContent))); } public void testSetTemplateParam() throws SAXException { assertEquals(0, ctx.getTemplateParams().size()); ctx.setTemplateParamValue("var1", "value1"); ctx.setTemplateParamValue("var2", XPathFactory.newXPath("/")); Document paramContent = DOMUtil.parse("<root/>"); ctx.setTemplateParamValue("var3", paramContent); assertEquals(3, ctx.getTemplateParams().size()); assertTrue(ctx.getTemplateParams().contains(new InvokeParam("var1", "value1"))); assertTrue(ctx.getTemplateParams().contains(new InvokeParam("var2", XPathFactory.newXPath("/")))); assertTrue(ctx.getTemplateParams().contains(new InvokeParam("var3", paramContent))); } public void testClearParamsAndVariables() { ctx.setGlobalParamValue("aname", "avalue"); assertEquals(1, ctx.getGlobalParams().size()); ctx.clearGlobalParams(); assertEquals(0, ctx.getGlobalParams().size()); ctx.setGlobalVariableValue("aname", "avalue"); assertEquals(1, ctx.getGlobalVariables().size()); ctx.clearGlobalVariables(); assertEquals(0, ctx.getGlobalVariables().size()); ctx.setTemplateParamValue("aname", "avalue"); assertEquals(1, ctx.getTemplateParams().size()); ctx.clearTemplateParams(); assertEquals(0, ctx.getTemplateParams().size()); } public void testParamsAndVariablesRewriting() { ctx.setGlobalParamValue("aname", "avalue1"); ctx.setGlobalParamValue("aname", "avalue2"); assertEquals(1, ctx.getGlobalParams().size()); GlobalParam par = (GlobalParam) ctx.getGlobalParams().toArray(new GlobalParam[0])[0]; assertEquals("avalue2", par.getValue()); ctx.setGlobalVariableValue("aname", "avalue1"); ctx.setGlobalVariableValue("aname", "avalue2"); assertEquals(1, ctx.getGlobalVariables().size()); VariableBase var = (VariableBase) ctx.getGlobalVariables().toArray(new VariableBase[0])[0]; assertEquals("avalue2", var.getStringValue()); ctx.setTemplateParamValue("aname", "avalue1"); ctx.setTemplateParamValue("aname", "avalue2"); assertEquals(1, ctx.getTemplateParams().size()); VariableBase p = (VariableBase) ctx.getTemplateParams().toArray(new VariableBase[0])[0]; assertEquals("avalue2", p.getStringValue()); } public void testRegisterNamespaces() { ctx.registerNamespace("", "http://ns1.net"); assertEquals(1, ctx.getNamespaces().size()); assertEquals("", ctx.getNamespaces().get("http://ns1.net")); ctx.registerNamespace("prefix", "http://ns1.net"); assertEquals(1, ctx.getNamespaces().size()); assertEquals("prefix", ctx.getNamespaces().get("http://ns1.net")); ctx.registerNamespace("prefix", "http://ns2.net"); assertEquals(2, ctx.getNamespaces().size()); assertEquals("prefix", ctx.getNamespaces().get("http://ns2.net")); ctx.registerNamespace("prefix2", "http://ns2.net"); assertEquals(2, ctx.getNamespaces().size()); assertEquals("prefix", ctx.getNamespaces().get("http://ns1.net")); assertEquals("prefix2", ctx.getNamespaces().get("http://ns2.net")); ctx.clearNamespaces(); assertEquals(0, ctx.getNamespaces().size()); } }