]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Adding new eval check for simpler checks and more informative error messages.
authorJeremias Maerki <jeremias@apache.org>
Thu, 6 Jan 2005 08:39:19 +0000 (08:39 +0000)
committerJeremias Maerki <jeremias@apache.org>
Thu, 6 Jan 2005 08:39:19 +0000 (08:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198229 13f79535-47bb-0310-9956-ffa450edef68

test/java/org/apache/fop/layoutengine/EvalCheck.java [new file with mode: 0644]
test/java/org/apache/fop/layoutengine/LayoutEngineTester.java

diff --git a/test/java/org/apache/fop/layoutengine/EvalCheck.java b/test/java/org/apache/fop/layoutengine/EvalCheck.java
new file mode 100644 (file)
index 0000000..d34dd00
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.layoutengine;
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.xpath.XPathAPI;
+import org.apache.xpath.objects.XBoolean;
+import org.apache.xpath.objects.XObject;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+/**
+ * Simple check that requires an XPath expression to evaluate to true.
+ */
+public class EvalCheck implements LayoutEngineCheck {
+
+    private String expected;
+    private String xpath;
+    
+    /**
+     * Creates a new instance
+     * @param expected expected value
+     * @param xpath XPath statement that needs to be evaluated
+     */
+    public EvalCheck(String expected, String xpath) {
+        this.expected = expected;
+        this.xpath = xpath;
+    }
+    
+    /**
+     * Creates a new instance from a DOM node.
+     * @param node DOM node that defines this check
+     */
+    public EvalCheck(Node node) {
+        this.expected = node.getAttributes().getNamedItem("expected").getNodeValue();
+        this.xpath = node.getAttributes().getNamedItem("xpath").getNodeValue();
+    }
+    
+    /**
+     * @see org.apache.fop.layoutengine.LayoutEngineCheck#check(org.w3c.dom.Document)
+     */
+    public void check(Document doc) {
+        XObject res;
+        try {
+            res = XPathAPI.eval(doc, xpath);
+        } catch (TransformerException e) {
+            throw new RuntimeException("XPath evaluation failed: " + e.getMessage());
+        }
+        if (!expected.equals(res.str())) {
+            throw new RuntimeException(
+                    "Expected XPath expression to evaluate to '" + expected + "', but got '" 
+                    + res + "' (" + this + ")");
+        }
+
+    }
+
+    /** @see java.lang.Object#toString() */
+    public String toString() {
+        return "XPath: " + xpath;
+    }
+    
+}
index 05967d413b3eb040a2e2cb05ff124e6fe0349292..a6e5aaa43f3a0d51221a23119055afa085f19cba 100644 (file)
@@ -65,6 +65,7 @@ public class LayoutEngineTester {
     
     static {
         CHECK_CLASSES.put("true", TrueCheck.class);
+        CHECK_CLASSES.put("eval", EvalCheck.class);
     }
     
     /**