Update the xml.dom.minidom tests to cover the DOM-compliant parts of the
NodeList interface.
diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
index bdef6f5..2a290aa 100644
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -44,8 +44,11 @@
nelem = dom.createElement("element")
root.insertBefore(nelem, elem)
confirm(len(root.childNodes) == 2
+ and root.childNodes.length == 2
and root.childNodes[0] is nelem
+ and root.childNodes.item(0) is nelem
and root.childNodes[1] is elem
+ and root.childNodes.item(1) is elem
and root.firstChild is nelem
and root.lastChild is elem
and root.toxml() == "<doc><element/><foo/></doc>"
@@ -53,8 +56,11 @@
nelem = dom.createElement("element")
root.insertBefore(nelem, None)
confirm(len(root.childNodes) == 3
+ and root.childNodes.length == 3
and root.childNodes[1] is elem
+ and root.childNodes.item(1) is elem
and root.childNodes[2] is nelem
+ and root.childNodes.item(2) is nelem
and root.lastChild is nelem
and nelem.previousSibling is elem
and root.toxml() == "<doc><element/><foo/><element/></doc>"
@@ -62,8 +68,11 @@
nelem2 = dom.createElement("bar")
root.insertBefore(nelem2, nelem)
confirm(len(root.childNodes) == 4
+ and root.childNodes.length == 4
and root.childNodes[2] is nelem2
+ and root.childNodes.item(2) is nelem2
and root.childNodes[3] is nelem
+ and root.childNodes.item(3) is nelem
and nelem2.nextSibling is nelem
and nelem.previousSibling is nelem2
and root.toxml() == "<doc><element/><foo/><bar/><element/></doc>"
@@ -369,6 +378,7 @@
def testCloneElementShallow():
dom, clone = _setupCloneElement(0)
confirm(len(clone.childNodes) == 0
+ and clone.childNodes.length == 0
and clone.parentNode is None
and clone.toxml() == '<doc attr="value"/>'
, "testCloneElementShallow")
@@ -377,6 +387,7 @@
def testCloneElementDeep():
dom, clone = _setupCloneElement(1)
confirm(len(clone.childNodes) == 1
+ and clone.childNodes.length == 1
and clone.parentNode is None
and clone.toxml() == '<doc attr="value"><foo/></doc>'
, "testCloneElementDeep")
@@ -432,9 +443,11 @@
root = doc.documentElement
root.appendChild(doc.createTextNode("first"))
root.appendChild(doc.createTextNode("second"))
- confirm(len(root.childNodes) == 2, "testNormalize -- preparation")
+ confirm(len(root.childNodes) == 2
+ and root.childNodes.length == 2, "testNormalize -- preparation")
doc.normalize()
confirm(len(root.childNodes) == 1
+ and root.childNodes.length == 1
and root.firstChild is root.lastChild
and root.firstChild.data == "firstsecond"
, "testNormalize -- result")
@@ -444,7 +457,8 @@
root = doc.documentElement
root.appendChild(doc.createTextNode(""))
doc.normalize()
- confirm(len(root.childNodes) == 0,
+ confirm(len(root.childNodes) == 0
+ and root.childNodes.length == 0,
"testNormalize -- single empty node removed")
doc.unlink()
@@ -477,6 +491,18 @@
doc.unlink()
+def testNodeListItem():
+ doc = parseString("<doc><e/><e/></doc>")
+ children = doc.childNodes
+ docelem = children[0]
+ confirm(children[0] is children.item(0)
+ and children.item(1) is None
+ and docelem.childNodes.item(0) is docelem.childNodes[0]
+ and docelem.childNodes.item(1) is docelem.childNodes[1]
+ and docelem.childNodes.item(0).childNodes.item(0) is None,
+ "test NodeList.item()")
+ doc.unlink()
+
def testSAX2DOM():
from xml.dom import pulldom