package org.tigris.juxy.xpath;
import junit.framework.TestCase;
import org.tigris.juxy.XSLTKeys;
import org.tigris.juxy.util.DOMUtil;
import org.xml.sax.SAXException;
public class UTestJaxenXPathExpr extends TestCase {
public void testAddNamespace() throws XPathExpressionException {
new JaxenXPathExpr("/xsl:template[ax:root]").addNamespace("xsl", XSLTKeys.XSLT_NS)
.addNamespace("ss", "http://juxy.tigris.org");
}
public void testEmptyDocument() throws XPathExpressionException {
try {
new JaxenXPathExpr("true()").toBoolean(null);
fail("An exception expected");
}
catch (IllegalArgumentException ex) {
}
try {
new JaxenXPathExpr("true()").toBoolean(DOMUtil.newDocument());
}
catch (IllegalArgumentException ex) {
}
}
public void testToBoolean() throws XPathExpressionException, SAXException {
assertTrue(new JaxenXPathExpr("true()").toBoolean(DOMUtil.parse("<source/>")));
assertFalse(new JaxenXPathExpr("false()").toBoolean(DOMUtil.parse("<source/>")));
assertTrue(new JaxenXPathExpr("source").toBoolean(DOMUtil.parse("<source/>")));
assertFalse(new JaxenXPathExpr("root").toBoolean(DOMUtil.parse("<source/>")));
assertTrue(new JaxenXPathExpr("source/text()").toBoolean(DOMUtil.parse("<source>aaa<root/></source>")));
assertFalse(new JaxenXPathExpr("//root/text()").toBoolean(DOMUtil.parse("<source>aaa<root/></source>")));
}
public void testToString() throws XPathExpressionException, SAXException {
assertEquals("", new JaxenXPathExpr("source").toString(DOMUtil.parse("<source/>")));
assertEquals("ggg", new JaxenXPathExpr("'ggg'").toString(DOMUtil.parse("<source/>")));
assertEquals("aaa", new JaxenXPathExpr("source").toString(DOMUtil.parse("<source>aaa</source>")));
assertEquals("aaa", new JaxenXPathExpr("string('aaa')").toString(DOMUtil.parse("<source/>")));
}
public void testToNumber() throws XPathExpressionException, SAXException {
assertEquals(3, new JaxenXPathExpr("1 + 2").toInt(DOMUtil.parse("<source/>")));
assertEquals(1, new JaxenXPathExpr("count(source)").toInt(DOMUtil.parse("<source/>")));
assertEquals(3.5, new JaxenXPathExpr("1 + 2.5").toDouble(DOMUtil.parse("<source/>")), 0.001);
}
public void testToNodeList() throws XPathExpressionException, SAXException {
assertEquals(0, new JaxenXPathExpr("root").toNodeList(DOMUtil.parse("<source/>")).size());
assertEquals(1, new JaxenXPathExpr("source").toNodeList(DOMUtil.parse("<source/>")).size());
assertEquals(2, new JaxenXPathExpr("//source").toNodeList(DOMUtil.parse("<root><source/><source/></root>")).size());
}
public void testToNode() throws XPathExpressionException, SAXException {
assertNull(new JaxenXPathExpr("root").toNode(DOMUtil.parse("<source/>")));
assertEquals("source", new JaxenXPathExpr("source").toNode(DOMUtil.parse("<source/>")).getNodeName());
}
}