test_minidom.py
来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 650 行 · 第 1/2 页
PY
650 行
def testElementReprAndStr(): dom = Document() el = dom.appendChild(dom.createElement("abc")) string1 = repr(el) string2 = str(el) confirm(string1 == string2) dom.unlink()# commented out until Fredrick's fix is checked indef _testElementReprAndStrUnicode(): dom = Document() el = dom.appendChild(dom.createElement(u"abc")) string1 = repr(el) string2 = str(el) confirm(string1 == string2) dom.unlink()# commented out until Fredrick's fix is checked indef _testElementReprAndStrUnicodeNS(): dom = Document() el = dom.appendChild( dom.createElementNS(u"http://www.slashdot.org", u"slash:abc")) string1 = repr(el) string2 = str(el) confirm(string1 == string2) confirm(string1.find("slash:abc") != -1) dom.unlink()def testAttributeRepr(): dom = Document() el = dom.appendChild(dom.createElement(u"abc")) node = el.setAttribute("abc", "def") confirm(str(node) == repr(node)) dom.unlink()def testTextNodeRepr(): passdef testWriteXML(): str = '<?xml version="1.0" ?>\n<a b="c"/>' dom = parseString(str) domstr = dom.toxml() dom.unlink() confirm(str == domstr)def testProcessingInstruction(): passdef testProcessingInstructionRepr(): passdef testTextRepr(): passdef testWriteText(): passdef testDocumentElement(): passdef testTooManyDocumentElements(): doc = parseString("<doc/>") elem = doc.createElement("extra") try: doc.appendChild(elem) except HierarchyRequestErr: pass else: print "Failed to catch expected exception when" \ " adding extra document element." elem.unlink() doc.unlink()def testCreateElementNS(): passdef testCreateAttributeNS(): passdef testParse(): passdef testParseString(): passdef testComment(): passdef testAttrListItem(): passdef testAttrListItems(): passdef testAttrListItemNS(): passdef testAttrListKeys(): passdef testAttrListKeysNS(): passdef testAttrListValues(): passdef testAttrListLength(): passdef testAttrList__getitem__(): passdef testAttrList__setitem__(): passdef testSetAttrValueandNodeValue(): passdef testParseElement(): passdef testParseAttributes(): passdef testParseElementNamespaces(): passdef testParseAttributeNamespaces(): passdef testParseProcessingInstructions(): passdef testChildNodes(): passdef testFirstChild(): passdef testHasChildNodes(): passdef 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") dom.unlink()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") dom.unlink()def _setupCloneElement(deep): dom = parseString("<doc attr='value'><foo/></doc>") root = dom.documentElement clone = root.cloneNode(deep) _testCloneElementCopiesAttributes( root, clone, "testCloneElement" + (deep and "Deep" or "Shallow")) # mutilate the original so shared data is detected root.tagName = root.nodeName = "MODIFIED" root.setAttribute("attr", "NEW VALUE") root.setAttribute("added", "VALUE") return dom, clonedef _testCloneElementCopiesAttributes(e1, e2, test): attrs1 = e1.attributes attrs2 = e2.attributes keys1 = attrs1.keys() keys2 = attrs2.keys() keys1.sort() keys2.sort() confirm(keys1 == keys2, "clone of element has same attribute keys") for i in range(len(keys1)): a1 = attrs1.item(i) a2 = attrs2.item(i) confirm(a1 is not a2 and a1.value == a2.value and a1.nodeValue == a2.nodeValue and a1.namespaceURI == a2.namespaceURI and a1.localName == a2.localName , "clone of attribute node has proper attribute values") confirm(a2.ownerElement is e2, "clone of attribute node correctly owned")def testCloneDocumentShallow(): passdef testCloneDocumentDeep(): passdef testCloneAttributeShallow(): passdef testCloneAttributeDeep(): passdef testClonePIShallow(): passdef testClonePIDeep(): passdef testNormalize(): doc = parseString("<doc/>") root = doc.documentElement root.appendChild(doc.createTextNode("first")) root.appendChild(doc.createTextNode("second")) 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") doc.unlink() doc = parseString("<doc/>") root = doc.documentElement root.appendChild(doc.createTextNode("")) doc.normalize() confirm(len(root.childNodes) == 0 and root.childNodes.length == 0, "testNormalize -- single empty node removed") doc.unlink()def testSiblings(): doc = parseString("<doc><?pi?>text?<elm/></doc>") root = doc.documentElement (pi, text, elm) = root.childNodes confirm(pi.nextSibling is text and pi.previousSibling is None and text.nextSibling is elm and text.previousSibling is pi and elm.nextSibling is None and elm.previousSibling is text, "testSiblings") doc.unlink()def testParents(): doc = parseString("<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>") root = doc.documentElement elm1 = root.childNodes[0] (elm2a, elm2b) = elm1.childNodes elm3 = elm2b.childNodes[0] confirm(root.parentNode is doc and elm1.parentNode is root and elm2a.parentNode is elm1 and elm2b.parentNode is elm1 and elm3.parentNode is elm2b, "testParents") 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 sax2dom = pulldom.SAX2DOM() sax2dom.startDocument() sax2dom.startElement("doc", {}) sax2dom.characters("text") sax2dom.startElement("subelm", {}) sax2dom.characters("text") sax2dom.endElement("subelm") sax2dom.characters("text") sax2dom.endElement("doc") sax2dom.endDocument() doc = sax2dom.document root = doc.documentElement (text1, elm1, text2) = root.childNodes text3 = elm1.childNodes[0] confirm(text1.previousSibling is None and text1.nextSibling is elm1 and elm1.previousSibling is text1 and elm1.nextSibling is text2 and text2.previousSibling is elm1 and text2.nextSibling is None and text3.previousSibling is None and text3.nextSibling is None, "testSAX2DOM - siblings") confirm(root.parentNode is doc and text1.parentNode is root and elm1.parentNode is root and text2.parentNode is root and text3.parentNode is elm1, "testSAX2DOM - parents") doc.unlink()# --- MAIN PROGRAMnames = globals().keys()names.sort()failed = []try: Node.allnodesexcept AttributeError: # We don't actually have the minidom from the standard library, # but are picking up the PyXML version from site-packages. def check_allnodes(): passelse: def check_allnodes(): confirm(len(Node.allnodes) == 0, "assertion: len(Node.allnodes) == 0") if len(Node.allnodes): print "Garbage left over:" if verbose: print Node.allnodes.items()[0:10] else: # Don't print specific nodes if repeatable results # are needed print len(Node.allnodes) Node.allnodes = {}for name in names: if name.startswith("test"): func = globals()[name] try: func() check_allnodes() except: failed.append(name) print "Test Failed: ", name sys.stdout.flush() traceback.print_exception(*sys.exc_info()) print `sys.exc_info()[1]` Node.allnodes = {}if failed: print "\n\n\n**** Check for failures in these tests:" for name in failed: print " " + name
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?