aboutsummaryrefslogtreecommitdiff
path: root/gnu/testlet/org/w3c/dom/childNodesLength.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/testlet/org/w3c/dom/childNodesLength.java')
-rw-r--r--gnu/testlet/org/w3c/dom/childNodesLength.java131
1 files changed, 131 insertions, 0 deletions
diff --git a/gnu/testlet/org/w3c/dom/childNodesLength.java b/gnu/testlet/org/w3c/dom/childNodesLength.java
new file mode 100644
index 00000000..1b9b3510
--- /dev/null
+++ b/gnu/testlet/org/w3c/dom/childNodesLength.java
@@ -0,0 +1,131 @@
+// Tags: JDK1.4
+
+// Tests some Node kinds if method .getChildNodes().getLength() return correctly.
+// By: Pedro Izecksohn & Mark Wielaard
+
+// Part of the Mauve project.
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
+// Boston, MA 02110-1301, USA.
+
+package gnu.testlet.org.w3c.dom;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.ResourceNotFoundException;
+import java.io.InputStream;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.*;
+
+public class childNodesLength implements Testlet
+{
+
+ TestHarness harness;
+
+ private void checkNode (Node node)
+ {
+ int nChilds = node.getChildNodes().getLength();
+
+ if (
+ (node instanceof CDATASection)||
+ (node instanceof Comment)||
+ (node instanceof DocumentType)||
+ (node instanceof Notation)||
+ (node instanceof ProcessingInstruction)||
+ (node instanceof Text)
+ )
+ {
+ harness.check (nChilds==0, node.getClass().getName());
+ }
+ }
+
+ private void recurse (NodeList nl)
+ {
+ for (int i=0; i<nl.getLength(); i++)
+ {
+
+ Node node = nl.item (i);
+ if (node==null) {continue;}
+
+ checkNode (node);
+
+ if (node instanceof DocumentType)
+ {
+ DocumentType dt = (DocumentType) node;
+ NamedNodeMap nnm = dt.getNotations();
+
+ for (int j=0; j<nnm.getLength(); j++)
+ {
+ checkNode((Notation)nnm.item(j));
+ }
+ }
+
+ NodeList nl2 = node.getChildNodes();
+ int nChilds = nl2.getLength();
+ if (nChilds>0) {recurse (nl2);}
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+
+ this.harness=harness;
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ DocumentBuilder db = null;
+ try
+ {
+ db = dbf.newDocumentBuilder();
+ }
+ catch (javax.xml.parsers.ParserConfigurationException pce)
+ {
+ harness.debug (pce);
+ harness.check(false);
+ return;
+ }
+
+ // I need a xml file to parse.
+ InputStream input = null;
+
+ try
+ {
+ input = harness.getResourceStream ("gnu#testlet#org#w3c#dom#test.xml");
+ }
+ catch (ResourceNotFoundException rnfe)
+ {
+ harness.debug (rnfe);
+ harness.check(false);
+ return;
+ }
+
+ Document document = null;
+ try
+ {
+ document = db.parse(input);
+ }
+ catch (Exception e)
+ {
+ harness.debug (e);
+ harness.check(false);
+ return;
+ }
+
+ recurse (document.getChildNodes());
+
+ }
+
+}