package org.tigris.juxy;
import org.tigris.juxy.validator.ValidationFailedException;
import org.tigris.juxy.xpath.XPathAssert;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
/**
* @author Pavel Sher
*/
public class UTestJuxyTestCase extends JuxyTestCase {
public void testContext() throws Exception {
try {
context();
} catch (IllegalStateException e) {
}
RunnerContext ctx = newContext("tests/xml/templates.xsl");
assertSame(context(), ctx);
ctx = RunnerFactory.newRunner().newRunnerContext("tests/xml/templates.xsl");
setContext(ctx);
assertSame(context(), ctx);
}
public void testCallTemplate() throws Exception {
RunnerContext ctx = newContext("tests/xml/templates.xsl");
ctx.setDocument("<root/>");
Node result = callTemplate("getRoot");
assertXMLEquals("<result><root/></result>", result);
}
public void testApplyTemplates() throws Exception {
if (TestUtil.isOracleXDK()) {
System.out.println(getName() + " skipped under Oracle XDK");
return;
}
RunnerContext ctx = newContext("tests/xml/templates.xsl");
ctx.setDocument("<root>text</root>");
Node result = applyTemplates();
assertXMLEquals("<result>text</result>", result);
result = applyTemplates(xpath("/"));
assertXMLEquals("<result>text</result>", result);
result = applyTemplates(xpath("root"), "mode");
assertXMLEquals("<result>text [with mode]</result>", result);
ctx.setDocument("<commentParent><!-- comment --></commentParent>");
result = applyTemplates();
assertXMLEquals("<result>comment</result>", result);
}
public void testPrintAndParse() throws Exception {
print(parse("<root/>"));
String docContent = "" +
"<list>" +
" <item>text1</item>" +
" <item>text2</item>" +
"</list>";
Document doc = parse(docContent);
print(xpath("//item[1]").toNode(doc));
assertXMLEquals(docContent, asString(doc));
}
public void testNormalization() {
assertEquals("bb aa cc", normalizeAll("\n\n bb\naa \n\tcc"));
assertEquals("bb\naa \n cc", normalizeSpaces("\n\n bb\naa \n\tcc"));
}
public void testXMLSchemaValidation() throws Exception {
RunnerContext ctx = newContext("tests/xml/templates.xsl");
ctx.setDocument("<root/>");
Node result = callTemplate("getRoot");
try {
validateWithSchema(result, "tests/xml/validator/schema1.xml");
fail("An exception expected");
} catch (ValidationFailedException e) {
}
}
public void testEvalXPathAssertions() throws Exception {
final XPathAssert[] asserts = new XPathAssert[]{
xpathAssert("count(//li)", 3),
xpathAssert("count(//ul)", 1),
};
evalAssertions(
parse("<ul><li/><li/><li/></ul>"),
asserts);
try {
evalAssertions(
parse("<root><ul><li/><li/><li/></ul><ul/></root>"),
asserts);
fail("An exception expected");
} catch (AssertionError e) {
}
}
public void testXPathAssertionsExceptions() throws Exception {
XPathAssert explicitlyCreated = new XPathAssert("count(tag)", 10);
XPathAssert createdByTestCase = xpathAssert("count(tag)", 10);
try {
explicitlyCreated.eval(parse("<ul><li/><li/><li/></ul>"));
fail("An exception expected");
} catch (AssertionError error) {
}
try {
createdByTestCase.eval(parse("<ul><li/><li/><li/></ul>"));
fail("An exception expected");
} catch (AssertionError error) {
}
try {
evalAssertions(parse("<ul><li/><li/><li/></ul>"), new XPathAssert[]{explicitlyCreated});
fail("An exception expected");
} catch (AssertionError error) {
}
}
}