a 5źdg°ć@sŖddlZddlZddlZddlmZddlZddlZddlmZm Z m Z m Z ddlm Z ej dddZdZdd d „Zd d „Zd d„ZGdd„dejƒZedkr¦e ”dS)éN)Śsupport)ŚparseŚNodeŚDocumentŚ parseString)ŚgetDOMImplementationztest.xmlZ xmltestdata)Zsubdira ]> text cCstƒ dd|”S)NŚdoc)rŚcreateDocument)Śdoctype©r ś-/usr/local/lib/python3.9/test/test_minidom.pyŚcreate_doc_without_doctypesr cCsxtƒ ddd”}g|j_g|j_tjj ddd”}|jj  |”tjj  dddd”}d|_ d|_ d|_ |jj  |”|S) Nrz my-notationz"http://xml.python.org/notations/myz my-entityz!http://xml.python.org/entities/myz1.0śutf-8śus-ascii)rZcreateDocumentTypeŚentitiesZ_seqŚ notationsŚxmlŚdomŚminidomZNotationŚappendZEntityŚversionŚencodingŚactualEncoding)r ZnotationŚentityr r r Ścreate_nonempty_doctypes  ’ žrcCs.tƒ}t|ƒ}||j d”_||j d”_|S©Nr)rr rŚitemŚ ownerDocumentr)r rr r r Ścreate_doc_with_doctype.s rc@s¬eZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Z!d@dA„Z"dBdC„Z#dDdE„Z$dFdG„Z%dHdI„Z&dJdK„Z'dLdM„Z(dNdO„Z)dPdQ„Z*dRdS„Z+dTdU„Z,dVdW„Z-dXdY„Z.dZd[„Z/d\d]„Z0d^d_„Z1d`da„Z2dbdc„Z3ddde„Z4dfdg„Z5dhdi„Z6djdk„Z7dldm„Z8dndo„Z9dpdq„Z:drds„Z;dtdu„Zdzd{„Z?d|d}„Z@d~d„ZAd€d„ZBd‚dƒ„ZCd„d…„ZDd†d‡„ZEdˆd‰„ZFdŠd‹„ZGdŒd„ZHdŽd„ZIdd‘„ZJd’d“„ZKd”d•„ZLd–d—„ZMd˜d™„ZNdšd›„ZOdœd„ZPdždŸ„ZQd d”„ZRd¢d£„ZSd¤d„„ZTd¦d§„ZUdØd©„ZVdŖd«„ZWd¬d­„ZXd®dƄZYd°d±„ZZd²d³„Z[d“dµ„Z\d¶d·„Z]død¹„Z^dŗd»„Z_d¼d½„Z`d¾dæ„ZadĄdĮ„ZbdĀdƄZcdÄdńZddĘdĒ„ZedČdɄZfdŹdĖ„ZgdĢdĶ„ZhdĪdĻ„ZidŠdфZjdŅdӄZkdŌdՄZldÖdׄZmdŲdŁ„ZndŚdŪ„ZodÜdŻ„ZpdŽd߄Zqdądį„Zrdādć„Zsdädå„ZtGdędē„dēƒZudčdé„Zvdźdė„Zwdģdķ„Zxdīdļ„Zydšdń„Zzdņdó„Z{dōdõ„Z|död÷„Z}dųdł„Z~dśdū„Zdüdż„Z€džd’„Zdd„Z‚dd„Zƒdd„Z„dd„Z…dd „Z†d d „Z‡d d „Zˆdd„Z‰dd„ZАdd„Z‹dd„ZŒdd„Zdd„ZސdS(Ś MinidomTestŚTestcCs| ||”dS©N)Ś assertTrue)ŚselfŚtestZtestnamer r r Śconfirm6szMinidomTest.confirmcCs"|j}| ||kd||f”dS)Nzlooking for %r, found %r)Ś wholeTextr%)r#ŚnodeŚsŚtr r r ŚcheckWholeText9szMinidomTest.checkWholeTextcCs"tƒ}| |j”| tj”dSr!)rŚ assertFalseZasync_©r#rr r r ŚtestDocumentAsyncAttr=s z!MinidomTest.testDocumentAsyncAttrcCsNttdƒ0}t|ƒ}| ”| t|tƒ”Wdƒn1s@0YdS)NŚrb©ŚopenŚtstfilerŚunlinkr%Ś isinstancer©r#Śfilerr r r ŚtestParseFromBinaryFileBs z#MinidomTest.testParseFromBinaryFilecCsRttddd0}t|ƒ}| ”| t|tƒ”Wdƒn1sD0YdS)NŚrz iso-8859-1)rr/r4r r r ŚtestParseFromTextFileHsz!MinidomTest.testParseFromTextFilecCs0ttƒ}| | d”|j d”k”| ”dS)NZLI)rr1r%ŚgetElementsByTagNameŚdocumentElementr2©r#rr r r ŚtestGetElementsByTagNameNs   ’z$MinidomTest.testGetElementsByTagNamecCstdƒ}|j}|jd}| d”}| ||”| t|jƒdko¦|jjdko¦|jd|uo¦|j d”|uo¦|jd|uo¦|j d”|uo¦|j |uo¦|j |uo¦|  ”dkd”| d”}| |d”| t|jƒdkoJ|jjdkoJ|jd|uoJ|j d”|uoJ|jd|uoJ|j d”|uoJ|j |uoJ|j |uoJ|  ”d kd”| d ”}| ||”| t|jƒd koī|jjd koī|jd|uoī|j d”|uoī|jd|uoī|j d”|uoī|j |uoī|j |uoī|  ”d kd”| ”dS) NśrŚelementéézz0testInsertBefore -- node properly placed in treeéz%Śbaréz+)rr:Ś childNodesŚ createElementŚ insertBeforer%ŚlenŚlengthrŚ firstChildŚ lastChildŚtoxmlŚpreviousSiblingŚ nextSiblingr2)r#rŚrootŚelemZnelemZnelem2r r r ŚtestInsertBeforeTs„    ’ žż üūśł ÷   ’ žż üūśł ÷   ’ žż üūśł’ö zMinidomTest.testInsertBeforecCsrtdƒ}| d”}| d”}| d”}| d”}|j |”| ”}| |”| |”| |”||||||fS)NśZoriginalŚfoorBZbat)rŚcreateTextNoder:Ś appendChildZcreateDocumentFragment©r#rZorigŚc1Śc2Zc3Śfragr r r Ś_create_fragment_test_nodess        z'MinidomTest._create_fragment_test_nodescCsØ| ”\}}}}}}|j |d”| t|jjƒ||||fkd”| ”| ”| ”\}}}}}}|j ||”| t|jjƒ||||fkd”| ”| ”dS)NzinsertBefore(, None)zinsertBefore(, orig))rYr:rFr%ŚtuplerDr2rUr r r ŚtestInsertBeforeFragmentŒs$ ’ž ’žz$MinidomTest.testInsertBeforeFragmentcCsVttƒ}|j | d””| |jjdjdk”| |jjdjdk”|  ”dS)NZHelloé’’’’z#comment) rr1r:rTŚ createCommentr%rDŚnodeNameŚdatar2r;r r r ŚtestAppendChilds zMinidomTest.testAppendChildcCsT| ”\}}}}}}|j |”| t|jjƒ||||fkd”| ”| ”dS)NzappendChild())rYr:rTr%rZrDr2rUr r r ŚtestAppendChildFragment¤s  ’žz#MinidomTest.testAppendChildFragmentcCs\| ”\}}}}}}|j ||”| ”| t|jjƒ|||fkd”| ”| ”dS)NzreplaceChild())rYr:Ś replaceChildr2r%rZrDrUr r r ŚtestReplaceChildFragment­s’z$MinidomTest.testReplaceChildFragmentcCsØtƒ}| d”}| d”}| tjj|j|”| |”| tjj|j||”| tjj|j ||”|j }| tjj|j |”| tjj|j |”| |”|  ”dS)Nr>Śtext)rrErSŚ assertRaisesrrŚHierarchyRequestErrrTrFrbŚ attributesZ setNamedItemZsetNamedItemNSr2)r#rrOrdZnodemapr r r ŚtestLegalChildren¶s(   ’’’’ zMinidomTest.testLegalChildrencCs„tƒ}| d”}|j}d|d<| d”}| |j|ud”| |j|ud”| |jdkd”| |jdkd”|  ”|  ”dS) Nr>rBrRrz-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue) rrErgrr%rŚ ownerElementŚvalueŚ nodeValuer2)r#rrOŚattrsŚar r r ŚtestNamedNodeMapSetItemĖs&   ’ ’ ’ ’z#MinidomTest.testNamedNodeMapSetItemcCsBttƒ}| |”| | d””| |jdj ”| ”dS)NrRr\)rr1r%rTr]rDr2r;r r r Ś testNonZeroÜs  zMinidomTest.testNonZerocCs,ttƒ}| |j”| ”| |j”dSr!)rr1r"rDr2r+r;r r r Ś testUnlinkćs zMinidomTest.testUnlinkcCsDttƒ}| |j”Wdƒn1s*0Y| |j”dSr!)rr1r"rDr+r;r r r Ś testContextés *zMinidomTest.testContextcCs.tƒ}| | d””| |j”| ”dS©NŚabc)rrTrEr%r:r2r;r r r Ś testElementīs zMinidomTest.testElementcCsjtdƒ}|j}| dd”| | ”dkd”| d”}| |j|ud”| |j|jud”| ”dS)NśŚspamŚjam2śŚtestAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement) rr:Ś setAttributer%rKŚgetAttributeNoderrir2)r#rŚelrmr r r ryōs   ’’zMinidomTest.testAAAcCsFtdƒ}|j}| dd”| dd”| | ”dkd”| ”dS)NrurvŚjamrwrxŚtestAAB)rr:rzr%rKr2©r#rr|r r r r~s   zMinidomTest.testAABcCsģtƒ}| | d””}| dd”| | d”dk”| |jdjdk”| dd”| | d”dk”| |jdjdk”| t|jƒdk”| dd”| | d”dk”| |jdjdk”| t|jƒdk”|  ”dS)NrsŚdefŚghiZjklZmnor?Znewval) rrTrErzr%Ś getAttributergrjrGr2©r#rŚchildr r r Ś testAddAttrs   zMinidomTest.testAddAttrcCsrtƒ}| | d””}| t|jƒdk”| dd”| t|jƒdk”|jd=| t|jƒdk”| ”dS)Nrsrr€rr@)rrTrEr%rGrgrzr2rƒr r r ŚtestDeleteAttrs zMinidomTest.testDeleteAttrcCsttƒ}| | d””}| dd”| t|jƒdk”| tj j |j d”|  d”| t|jƒdk”|  ”dS)Nrsr€rr@rRr) rrTrErzr%rGrgrerrŚ NotFoundErrZremoveAttributer2rƒr r r ŚtestRemoveAttr(s  zMinidomTest.testRemoveAttrcCsŠtƒ}| | dd””}| ddd”| ddd”| tjj|jdd”|  t |j ƒdk”| dd”|  t |j ƒd k”|  ”dS) Nśhttp://www.python.orgś python:abcśhttp://www.w3.orgś xmlns:pythonzpython:abcattrrRr?Zabcattrr@) rrTŚcreateElementNSŚsetAttributeNSrerrr‡ZremoveAttributeNSr%rGrgr2rƒr r r ŚtestRemoveAttrNS3s ’’’ zMinidomTest.testRemoveAttrNScCsČtƒ}| | d””}| dd”| t|jƒdk”| d”}| t j j |j d”|  ||  |””| t|jƒdko„| d”du”tƒ}| | d””}| d”}| t j j |j |”| ”dS)NrRrvr}r@r)rrTrErzr%rGrgr{rerrr‡ZremoveAttributeNodeŚassertIsr2)r#rr„r'Śdom2Śchild2Znode2r r r ŚtestRemoveAttributeNodeAs&  ’ ’ ’z#MinidomTest.testRemoveAttributeNodecCs6tƒ}| | d””}| dd”| | d””dS)NrRrvr})rrTrErzr%Z hasAttributerƒr r r ŚtestHasAttributeSs zMinidomTest.testHasAttributecCstdƒ}|j}| dd”| t|jƒdk”| dd”| d”| t|jƒdkoŽ|jdjdkoŽ|jdjdkoŽ|  d”dkoŽ|  d”j ”d|jd<| t|jƒdkoę|jdjdkoę|jdjdkoę|  d”dkoę|jdj ”| dd”| t|jƒdkon|jdjdkon|jdjdkon|  d”dkon|jdjdkon|jdjdkon|  d”dk”d |jd<| t|jƒdkoō|jdjdkoō|jdjdkoō|  d”dkoō|jdjd koō|jdjd koō|  d”d k”|  ”dS) Nrurvr}r@ZbamZhamZspam2r?Zbam2) rr:rzr%rGrgŚsetIdAttributerjrkr‚r{ŚisIdr2rr r r ŚtestChangeAttrYsl   ’ž ż ü ’ž ż ü ’ž żüū ś ’ž żüū śzMinidomTest.testChangeAttrcCsdSr!r ©r#r r r ŚtestGetAttrListszMinidomTest.testGetAttrListcCsdSr!r r˜r r r ŚtestGetAttrValues‚szMinidomTest.testGetAttrValuescCsdSr!r r˜r r r ŚtestGetAttrLength…szMinidomTest.testGetAttrLengthcCs.tƒ}| | dd””}| | d”d”dS)Nr‰rŠŚmissingŚ)rrTrŚ assertEqualr‚rƒr r r ŚtestGetAttributeˆs  ’zMinidomTest.testGetAttributecCsvtƒ}| | dd””}| ddd”| | dd”d”| | dd”d”| | d””}| | dd ”d”dS) Nr‰rŠr‹rŒZpythonŚotherrrsrœ)rrTrrŽržZgetAttributeNSrE)r#rr„r’r r r ŚtestGetAttributeNSŽs" ’’’’’zMinidomTest.testGetAttributeNScCsdSr!r r˜r r r ŚtestGetAttributeNodeœóz MinidomTest.testGetAttributeNodecCs|d}t|ƒ}| dd”}| t|ƒdkol|djdkol|djdkol|djdkol|djdkol|djdk”|  ”dS)NzZ zhttp://pyxml.sf.net/minidomZmyelemr@rrzminidom:myelem) rŚgetElementsByTagNameNSr%rGŚ namespaceURIŚ localNameŚprefixŚtagNamer^r2)r#ŚdrZelemsr r r ŚtestGetElementsByTagNameNSžs"’ ’ ž ż ü ūz&MinidomTest.testGetElementsByTagNameNScCs"| ||”}| t|ƒdk”dSr)r¤r%rG)r#rZnsuriZlnameZnodelistr r r Ś5get_empty_nodelist_from_elements_by_tagName_ns_helper­s zAMinidomTest.get_empty_nodelist_from_elements_by_tagName_ns_helpercCshtdƒ}| |dd”| |dd”| |dd”tdƒ}| |dd”| |dd”| |d d ”dS) NrQz"http://xml.python.org/namespaces/aZ localnameŚ*Zsplatz3zhttp://xml.python.org/splatz not-therez#http://somewhere.else.net/not-thereŚe)rr«r,r r r Ś+testGetEmptyNodeListFromElementsByTagNameNS²s(’’’’’’z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNScCs@tƒ}| | d””}t|ƒ}t|ƒ}| ||k”| ”dSrr©rrTrEŚreprŚstrr%r2©r#rr|Zstring1Zstring2r r r ŚtestElementReprAndStrĆs z!MinidomTest.testElementReprAndStrcCs@tƒ}| | d””}t|ƒ}t|ƒ}| ||k”| ”dSrrrÆr²r r r ŚtestElementReprAndStrUnicodeĖs z(MinidomTest.testElementReprAndStrUnicodecCsPtƒ}| | dd””}t|ƒ}t|ƒ}| ||k”| d|v”| ”dS)Nzhttp://www.slashdot.orgz slash:abc)rrTrr°r±r%r2r²r r r ŚtestElementReprAndStrUnicodeNSÓs ’z*MinidomTest.testElementReprAndStrUnicodeNScCsDtƒ}| | d””}| dd”}| t|ƒt|ƒk”| ”dS)Nrsr€)rrTrErzr%r±r°r2)r#rr|r'r r r ŚtestAttributeReprŻs  zMinidomTest.testAttributeReprcCsdSr!r r˜r r r ŚtestTextNodeReprär£zMinidomTest.testTextNodeReprcCs.d}t|ƒ}| ”}| ”| ||k”dS)Nz )rrKr2r%©r#r±rZdomstrr r r Ś testWriteXMLęs zMinidomTest.testWriteXMLcCs:d}t|ƒ}|jdd}| ”| || dd”k”dS)Nz" z )ZnewlŚ )rŚ toprettyxmlr2r%Śreplacerør r r ŚtestAltNewlineķs  zMinidomTest.testAltNewlinecCs€d}| tdƒ ”|d”| tdƒ ”|d”| tdƒ ”|d”| tdƒ ”|d ”| td ƒ ”|d ”dS) Nś śAz A zAAz A A zAAz A A zAAz A A zAAAz A A A )ržrr»)r#Śdeclr r r Ś test_toprettyxml_with_text_nodesōs ’’’’’z,MinidomTest.test_toprettyxml_with_text_nodescCsVtƒ}| d”}| | d””| | d””| |”d}| | ”|d”dS)NrOZTEXTr¾z TEXT TEXT )rrErTrSržr»)r#rrOrĄr r r Ś)test_toprettyxml_with_adjacent_text_nodess   ’z5MinidomTest.test_toprettyxml_with_adjacent_text_nodescCsVdD]L}t|ƒ}t| ”ƒ}| | d”djd ”| d”djd ””qdS)N)ræzCŚBr)rr»ržr9rDrK)r#r±rr‘r r r Ś/test_toprettyxml_preserves_content_of_text_node s žz;MinidomTest.test_toprettyxml_preserves_content_of_text_nodecCs’tdƒ}|jj}| |jdkoŠ|jdkoŠ|jdkoŠ|jtj koŠ|j duoŠ|  ” oŠt |j ƒdkoŠ|jduoŠ|jduoŠ|jduoŠ|jtjjk”dS)NzZmypizdata r)rr:rIr%Śtargetr_r^ŚnodeTyperŚPROCESSING_INSTRUCTION_NODErgŚ hasChildNodesrGrDrJr¦r„rrŚEMPTY_NAMESPACE)r#rŚpir r r ŚtestProcessingInstructions.’ž żüū śłų ÷ öz%MinidomTest.testProcessingInstructioncCsdSr!r r˜r r r ŚtestProcessingInstructionRepr%r£z)MinidomTest.testProcessingInstructionReprcCsdSr!r r˜r r r Ś testTextRepr'r£zMinidomTest.testTextReprcCsdSr!r r˜r r r Ś testWriteText)r£zMinidomTest.testWriteTextcCsdSr!r r˜r r r ŚtestDocumentElement+r£zMinidomTest.testDocumentElementcCs:tdƒ}| d”}| tjj|j|”| ”| ”dS)NrQŚextra)rrErerrrfrTr2©r#rrOr r r ŚtestTooManyDocumentElements-s  z'MinidomTest.testTooManyDocumentElementscCsdSr!r r˜r r r ŚtestCreateElementNS5r£zMinidomTest.testCreateElementNScCsdSr!r r˜r r r ŚtestCreateAttributeNS7r£z!MinidomTest.testCreateAttributeNScCsdSr!r r˜r r r Ś testParse9r£zMinidomTest.testParsecCsdSr!r r˜r r r ŚtestParseString;r£zMinidomTest.testParseStringcCsdSr!r r˜r r r Ś testComment=r£zMinidomTest.testCommentcCsdSr!r r˜r r r ŚtestAttrListItem?r£zMinidomTest.testAttrListItemcCsdSr!r r˜r r r ŚtestAttrListItemsAr£zMinidomTest.testAttrListItemscCsdSr!r r˜r r r ŚtestAttrListItemNSCr£zMinidomTest.testAttrListItemNScCsdSr!r r˜r r r ŚtestAttrListKeysEr£zMinidomTest.testAttrListKeyscCsdSr!r r˜r r r ŚtestAttrListKeysNSGr£zMinidomTest.testAttrListKeysNScCsPtdƒ}|j}|j}| d”}| d”}| | |””| tj j |jd”dS)Nz rm) rr:rgr{ZremoveNamedItemr%Ś isSameNodererrr‡©r#rr­rlŚa1Śa2r r r ŚtestRemoveNamedItemIs  zMinidomTest.testRemoveNamedItemcCsVtdƒ}|j}|j}| dd”}| dd”}| | |””| tj j |jdd”dS)Nz.zhttp://xml.python.org/Śb) rr:rgŚgetAttributeNodeNSZremoveNamedItemNSr%rŻrerrr‡rŽr r r ŚtestRemoveNamedItemNSRs  ’z!MinidomTest.testRemoveNamedItemNScCsdSr!r r˜r r r ŚtestAttrListValues\r£zMinidomTest.testAttrListValuescCsdSr!r r˜r r r ŚtestAttrListLength^r£zMinidomTest.testAttrListLengthcCsdSr!r r˜r r r ŚtestAttrList__getitem__`r£z#MinidomTest.testAttrList__getitem__cCsdSr!r r˜r r r ŚtestAttrList__setitem__br£z#MinidomTest.testAttrList__setitem__cCsdSr!r r˜r r r ŚtestSetAttrValueandNodeValuedr£z(MinidomTest.testSetAttrValueandNodeValuecCsdSr!r r˜r r r ŚtestParseElementfr£zMinidomTest.testParseElementcCsdSr!r r˜r r r ŚtestParseAttributeshr£zMinidomTest.testParseAttributescCsdSr!r r˜r r r ŚtestParseElementNamespacesjr£z&MinidomTest.testParseElementNamespacescCsdSr!r r˜r r r ŚtestParseAttributeNamespaceslr£z(MinidomTest.testParseAttributeNamespacescCsdSr!r r˜r r r ŚtestParseProcessingInstructionsnr£z+MinidomTest.testParseProcessingInstructionscCsdSr!r r˜r r r ŚtestChildNodespr£zMinidomTest.testChildNodescCsdSr!r r˜r r r ŚtestFirstChildrr£zMinidomTest.testFirstChildcCs<tdƒ}|j}| | ””tdƒ}|j}| | ””dS)Nr=rQ)rr:r"rČr+)r#rrr‘Śdoc2r r r ŚtestHasChildNodests zMinidomTest.testHasChildNodesc CsĄ|j}|j}t| ”ƒ}t| ”ƒ}| ”| ”| ||kd”tt|ƒƒD]j}| |”} | |”} | | | uo¢| j| jko¢| j | j ko¢| j | j ko¢| j | j kd”| | j |ud”qPdS)Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned) rgŚlistŚkeysŚsortr%ŚrangerGrrjrkr„r¦ri) r#Śe1Śe2r$Zattrs1Zattrs2Zkeys1Zkeys2Śirßrąr r r Ś!_testCloneElementCopiesAttributes|s.      ’ ž ż ū ’z-MinidomTest._testCloneElementCopiesAttributescCs^tdƒ}|j}| |”}| ||d|r*dp,d”d|_|_| dd”| dd ”||fS) NzZtestCloneElementZDeepZShallowZMODIFIEDŚattrz NEW VALUEZaddedZVALUE)rr:Ś cloneNoderśrØr^rz)r#ŚdeeprrNŚcloner r r Ś_setupCloneElements ’   zMinidomTest._setupCloneElementcCsR| d”\}}| t|jƒdko@|jjdko@|jduo@| ”dkd”| ”dS)NrzŚtestCloneElementShallow©r’r%rGrDrHŚ parentNoderKr2©r#rržr r r rœs ’ž üz#MinidomTest.testCloneElementShallowcCsR| d”\}}| t|jƒdko@|jjdko@|jduo@| ”dkd”| ”dS)Nr@zŚtestCloneElementDeeprrr r r r„s ’ž üz MinidomTest.testCloneElementDeepcCs&tdƒ}| d”}| |dud”dS)Nś ]> rzFtestCloneDocumentShallow: shallow cloning of documents makes no sense!)rrür%©r#rrńr r r ŚtestCloneDocumentShallow®s   ’z$MinidomTest.testCloneDocumentShallowcCsŽtdƒ}| d”}| | |”p(| |” d”| t|jƒt|jƒkd”| |jjtj kd”| |jj  |”d”| |j |j” d”|j durŚ| |j jtj kd”| |j j  |””| |j  |j ” ”dS) Nrr@z4testCloneDocumentDeep: document objects not distinctz8testCloneDocumentDeep: wrong number of Document childrenz:testCloneDocumentDeep: documentElement not an ELEMENT_NODEz@testCloneDocumentDeep: documentElement owner is not new documentz;testCloneDocumentDeep: documentElement should not be sharedz7testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE) rrür%rŻrGrDr:rĘrZ ELEMENT_NODErr ŚDOCUMENT_TYPE_NODErr r r ŚtestCloneDocumentDeepŗs. ’’’’’ ’z!MinidomTest.testCloneDocumentDeepcCsŚtƒ}| d”}| |duo¬|j|jko¬|j|jko¬|j|jko¬|j|jko¬t|jƒt|jƒko¬|j  t|jƒ”duo¬t|j ƒt|j ƒko¬|j   t|j ƒ”duo¬t|j ƒdk”t t|jƒƒD]ž}|j  |”}|j  |”}| |  |” oX|  |” oX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jk”q¾t t|j ƒƒD]h}|j   |”}|j   |”}| |  |” oĪ|  |” oĪ|j|jkoĪ|j|jkoĪ|j|jk”qldS)Nr@r)rrür%r^ŚnameŚpublicIdŚsystemIdrGrrrrDrörŻŚ notationNamerrr)r#r ržrłZseZceZsnZcnr r r ŚtestCloneDocumentTypeDeepOkÓsj   ’ ž ż üūśłų ÷    ’ ž ż ü ū ś ł ų    ’ ž ż üz'MinidomTest.testCloneDocumentTypeDeepOkcCs&tƒ}|j d”}| |dud”dS)Nr@ŚtestCloneDocumentTypeDeepNotOk©rr rür%©r#rržr r r rõs z*MinidomTest.testCloneDocumentTypeDeepNotOkcCsœtƒ}| d”}| |duo”|j|jko”|j|jko”|j|jko”|j|jko”t|jƒdko”|j  d”duo”t|j ƒdko”|j   d”duo”t|j ƒdk”dSr) rrür%r^r r r rGrrrrD)r#r ržr r r ŚtestCloneDocumentTypeShallowOkśs*   ’ ž ż ü ūś łų ÷z*MinidomTest.testCloneDocumentTypeShallowOkcCs&tƒ}|j d”}| |dud”dS)NrŚ!testCloneDocumentTypeShallowNotOkrrr r r rs z-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*tdƒ}tdƒ}| tjj|j||”dS)NrQ)rrerrŚNotSupportedErrŚ importNode)r#rżŚtestNameZdoc1rńr r r Ścheck_import_document sz!MinidomTest.check_import_documentcCs| dd”dS)NrŚtestImportDocumentShallow©rr˜r r r rsz%MinidomTest.testImportDocumentShallowcCs| dd”dS)Nr@ŚtestImportDocumentDeeprr˜r r r rsz"MinidomTest.testImportDocumentDeepcCs(tƒ}tƒ}| tjj|j|jd”dSr©rr rerrrrr ©r#ŚsrcrÅr r r ŚtestImportDocumentTypeShallows ’z)MinidomTest.testImportDocumentTypeShallowcCs(tƒ}tƒ}| tjj|j|jd”dS©Nr@rrr r r ŚtestImportDocumentTypeDeeps ’z&MinidomTest.testImportDocumentTypeDeepcCs”tdƒ}|j d”}| |d”| |”}| | |” ”| | |” ”| |jdu|d”| |j |j”|d”| |j |d”dS)Nzrūz: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True) rr:r{ZassertNotEqualrür%rŻrirZ specified)r#rżrrrūržr r r Ścheck_clone_attribute&s    ’’’z!MinidomTest.check_clone_attributecCs| dd”dS)NrŚtestCloneAttributeShallow©r!r˜r r r r"4sz%MinidomTest.testCloneAttributeShallowcCs| dd”dS)Nr@ŚtestCloneAttributeDeepr#r˜r r r r$7sz"MinidomTest.testCloneAttributeDeepcCsJtdƒ}|j}| |jtj”| |”}| |j|jkoB|j |j k”dS)Nz) rrIržrĘrrĒrür%rÅr_)r#rżrrrŹržr r r Ścheck_clone_pi:s  ’zMinidomTest.check_clone_picCs| dd”dS)NrŚtestClonePIShallow©r%r˜r r r r&BszMinidomTest.testClonePIShallowcCs| dd”dS)Nr@ŚtestClonePIDeepr'r˜r r r r(EszMinidomTest.testClonePIDeepc Cstjj d ””}Gdd„dƒ}|ƒ}|j}|jd}| dd|”|r~|jdd}|  |j j j d ”tjj j}|jjd} nNt |d d”|jdd}Wdƒn1s®0Ytjj j}|jd} |  |j|”|  |jd”|  |jd”| |j|”| |j| ”dS) Nu ] > Don't let entities make you frown ⌣ c@seZdZdd„ZdS)z4MinidomTest.check_clone_node_entity..HandlercSs"||_||_||_||_||_dSr!)Ś operationŚkeyr_rŚdst©r#r)r*r_rr+r r r ŚhandleUs z;MinidomTest.check_clone_node_entity..Handler.handleN)Ś__name__Ś __module__Ś __qualname__r-r r r r ŚHandlerTsr1Zsmiler*r_T)rżu%Don't let entities make you frown ☺r)rrrrŚstripr rŚ setUserDatarüržr:rIr&ŚUserDataHandlerZ NODE_IMPORTEDrZ swap_attrZ NODE_CLONEDr)r*r_rrr+) r#Zclone_documentZdocumentr1Śhandlerr rržr)r+r r r Ścheck_clone_node_entityHs,    ’ *  z#MinidomTest.check_clone_node_entitycCs| d”| d”dS)NFT)r6r˜r r r ŚtestCloneNodeEntityws zMinidomTest.testCloneNodeEntitycCsītdƒ}|j}| | d””| | d””| t|jƒdkoJ|jjdkd”| ”| t|jƒdkoŒ|jjdkoŒ|j |j uoŒ|j j dkd”|  ”tdƒ}|j}| | d ””| ”| t|jƒd koÜ|jjd kd ”|  ”dS) NrQŚfirstŚsecondr?ztestNormalize -- preparationr@Ś firstsecondztestNormalize -- resultrrz*testNormalize -- single empty node removed) rr:rTrSr%rGrDrHŚ normalizerIrJr_r2©r#rrNr r r Ś testNormalize{s6 ž ’ ž ü žzMinidomTest.testNormalizecCsātdƒ}|j}| | d””| | d””| | d””| t|jƒdkoZ|jjdkd”|  ”| t|jƒdkoŠ|jjdkoŠ|j j dkoŠ|j |j uoŠ|j j |j uoŠ|j jduoŠ|j j|j uoŠ|j j dud ”| ”dS) NrQr8r9rłrAz1testNormalizeCombineAndNextSibling -- preparationr?r:z-testNormalizeCombinedAndNextSibling -- result)rr:rTrSrEr%rGrDrHr;rIr_rJrMrLr2r<r r r Ś"testNormalizeCombineAndNextSibling”s6 ž ’ ž ż ü ū ś ų z.MinidomTest.testNormalizeCombineAndNextSiblingcCs¶tdƒ}|j}| | d””| | d””| t|jƒdkoJ|jjdkd”| ”| t|jƒdko¤|jjdko¤|j j dko¤|j |j uo¤|j j duo¤|j j dud”| ”dS)NrQr8rr?z1testNormalizeDeleteWithPrevSibling -- preparationr@z,testNormalizeDeleteWithPrevSibling -- result©rr:rTrSr%rGrDrHr;rIr_rJrMrLr2r<r r r Ś"testNormalizeDeleteWithPrevSibling©s, ž ’ ž ż ü śz.MinidomTest.testNormalizeDeleteWithPrevSiblingcCs¶tdƒ}|j}| | d””| | d””| t|jƒdkoJ|jjdkd”| ”| t|jƒdko¤|jjdko¤|j j dko¤|j |j uo¤|j j duo¤|j j dud”| ”dS)NrQrr9r?z1testNormalizeDeleteWithNextSibling -- preparationr@z,testNormalizeDeleteWithNextSibling -- resultr?r<r r r Ś"testNormalizeDeleteWithNextSibling»s, ž ’ ž ż ü śz.MinidomTest.testNormalizeDeleteWithNextSiblingcCsÖtdƒ}|j}| | d””| | d””| | d””| t|jƒdkoZ|jjdkd”|  ”| t|jƒdkoÄ|jjdkoÄ|j |j uoÄ|j j |j uoÄ|j j duoÄ|j j |j uoÄ|j j dud”| ”dS)NrQrłrrAz1testNormalizeDeleteWithTwoSiblings -- preparationr?z,testNormalizeDeleteWithTwoSiblings -- result)rr:rTrErSr%rGrDrHr;rIrJrMrLr2r<r r r Ś)testNormalizeDeleteWithTwoNonTextSiblingsĶs2 ž ’ ž ż ü ū łz5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblingscCsętdƒ}|j}| | d””| | d””| | d””| | d””| | d””| t|jƒdkoz|jjdkd”| ”| t|jƒdkoŌ|jjdkoŌ|j |j uoŌ|j j dkoŌ|j j duoŌ|j j dud ”| ”dS) NrQrr9Zfourthéz,testNormalizeDeleteAndCombine -- preparationr@Z secondfourthz'testNormalizeDeleteAndCombine -- result)rr:rTrSr%rGrDrHr;rIrJr_rLrMr2r<r r r ŚtestNormalizeDeleteAndCombineįs2 ž ’ ž ż ü śz)MinidomTest.testNormalizeDeleteAndCombinecCs6tdƒ}|j}|jd | d””|jd | d””|jdjd | d””|jd | d””| | d””| t|jƒdko$|jjdko$t|jdjƒd ko$|jdjjd ko$t|jdjƒdko$|jdjjdko$t|jdjdjƒd ko$|jdjdjjd kd ”| ”| t|jƒd koŚ|jjd koŚt|jdjƒd koŚ|jdjjd koŚt|jdjƒd koŚ|jdjjd koŚt|jdjdjƒdkoŚ|jdjdjjdkd ”| |jdjdj d ko.|jdjdjdj dko.|jdjdj dkd”| |jdjdj duo$|jdjdj |jdjduo$|jdjdj duo$|jdjdj |jdjduo$|jdjdj duo$|jdjdj |jdjduo$|jdjdj duo$|jdjdj |jdjdud”|  ”dS)Nz)tt2t3rrŚxr@Zx2Zx3rArCr?ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers) rr:rDrTrSr%rGrHr;r_rMrLr2r<r r r ŚtestNormalizeRecursionösŽ ’žżüūśų  ’žżüūśų ’ż’’ż’üś’ł ÷ ’ō z"MinidomTest.testNormalizeRecursioncCs8tdƒ}|jjd}| |jtj”| ”| ”dS)Nz textr) rr:rDržrĘrŚ TEXT_NODEr;r2)r#rrdr r r ŚtestBug07778845s  zMinidomTest.testBug0777884cCs>tdƒ}|j}d|jd_| ”| |jdjdud”dS)Nz trr@r\z)Final child's .nextSibling should be None)rr:rDrkr;r%rM©r#rr'r r r ŚtestBug1433694=s ’zMinidomTest.testBug1433694cCsjtdƒ}|j}|j\}}}| |j|uoX|jduoX|j|uoX|j|uoX|jduoX|j|ud”| ”dS)Nztext?Ś testSiblings)rr:rDr%rMrLr2)r#rrNrŹrdZelmr r r rKEs ’žżü ūzMinidomTest.testSiblingscCsrtdƒ}|j}|jd}|j\}}|jd}| |j|uo`|j|uo`|j|uo`|j|uo`|j|ud”| ”dS)Nz3rŚ testParents)rr:rDr%rr2)r#rrNZelm1Zelm2aZelm2bZelm3r r r rLSs"’   ’žż üzMinidomTest.testParentscCsŽtdƒ}|j}|d}| |d| d”uo|| d”duo||j d”|jduo||j d”|jduo||j d”j d”dud”| ”dS)Nzrr@ztest NodeList.item())rrDr%rr2)r#rZchildrenZdocelemr r r ŚtestNodeListItembs ’žżūzMinidomTest.testNodeListItemcCs€tdƒ}| | ”d”| | d”d”| | d”d”| | d”d”| | d ”d  d ””| ttd ”| ”dS) Nśõ$€rs4€z iso-8859-15s8¤rs;zutf-16u5€s0Comment ēa va ? Trčs bien ?)rržrKŚencodereŚUnicodeDecodeErrorr2r,r r r Ś testEncodingsns, ’ ’ ’ ’ ’’’zMinidomTest.testEncodingscCsttdƒ}| | ”d”| |jddd”| |jddd”| |jddd”| | dd”d ”| ”dS) NrNrO)Z standaloneTu4€Fu3€rsE€)rržrKr2r,r r r ŚtestStandaloneƒs" ’’’’’zMinidomTest.testStandalonec@seZdZdZdd„ZdS)zMinidomTest.UserDataHandlerrcCs*| ||d|”| |dd”d|_dSr)r3Ścalledr,r r r r-•sz"MinidomTest.UserDataHandler.handleN)r.r/r0rTr-r r r r r4“sr4cCs(tƒ}| d”}| | d”du”| ddd”| | d”du”| ddd”| ddd”| | d”dk”| | d”dk”| ddd”| | d”du”| | d”dk”| ”}| dd|”| d”}| |jo| d”duo| d”dk”| ”| ”| ”dS)Nr­rRé rBé r@) rrEr%Z getUserDatar3r4rürTr2)r#rŚnr5Ścr r r Ś testUserDatašs.    ’ žzMinidomTest.testUserDatacCs@| tjj|j|dd”tdƒ}| tjj|j|tjjd”dS)Nśhttp://xml.python.org/nsz xmlns:foorQrR)rerrŚ NamespaceErrŚ renameNoderZWrongDocumentErrrÉ)r#rr'rńr r r Ś checkRenameNodeSharedConstraints²s’’z,MinidomTest.checkRenameNodeSharedConstraintscCsbtdƒ}|j}|j}|jd}| |tjjd”}| |jdko¶|j dko¶|j duo¶|j tjjko¶|j duo¶|j dko¶| d”duo¶| d” |”o¶|d |”o¶|j |”o¶|j |””| |dd”}| |jdkov|j dkov|j dkov|j dkov|j duov|j dkov| d”duov| d”duov| d” |”ov| dd” |”ov|d |”ov|d |””| |dd ”}| |jd koX|j d koX|j d koX|j dkoX|j d koX|j dkoX| d”duoX| d”duoX| d”duoX| dd”duoX| d ” |”oX| dd ” |”oX|d  |”oX|d  |””| |tjjd ”}| |jd ko.|j d ko.|j duo.|j tjjko.|j duo.|j dko.| d”duo.| d”duo.| d”duo.| d ”duo.| dd”duo.| d ” |”o.|d  |””| tjj|j|dd”| ||”| ”dS)Nz rmrāŚvrZrX)rZrXśhttp://xml.python.org/ns2zp:dr©Śp)r_r©r­Zxmlns)rr:rgr\rrrÉr%r r^r¦r„r§rjr{rŻrrirćrer[r]r2)r#rrOZattrmaprūr r r ŚtestRenameAttributeŗsś ’ž żüū śł ų ÷ ö ’žżüū ś łų ’’÷ õ ō’žżüū ś ł ų ’’÷ õ ’’ō ņ ń’ž żüū ś ł ų ÷ ’’ö ō ó’ zMinidomTest.testRenameAttributecCs’tdƒ}|j}| |tjjd”}| |jdkod|jdkod|j duod|j tjjkod|j duod|j   |””| |dd”}| |jdko¶|jdko¶|j dko¶|j dko¶|j duo¶|j   |””| |dd”}| |jdko|jdko|j dko|j dko|j dko|j   |””| |tjjd ”}| |jd kov|jd kov|j duov|j tjjkov|j duov|j   |””| ||”| ”dS) NrQrmrZrār_zp:crXr`r©)rr:r\rrrÉr%rØr^r¦r„r§rrŻr]r2rŃr r r ŚtestRenameElementsh’ž żü ū’žżü ū’žżü ū’ž żü ū zMinidomTest.testRenameElementcCsLtjj ” tjjdd”}| d”}| tjj|j |tjjd”|  ”dS)Nr­ŚcommentrR) rrrrr rÉr]rerr\r2rIr r r ŚtestRenameOther2s  ’ ’zMinidomTest.testRenameOthercCs:tdƒ}|j}|jd}| |jtj”| |d”| |  d””| |d”|  |  d”|”| |d”|  d”}| |”|  d ”}| |”| |d”| |d ”|  d ”}| ||”|}| |d”| |d ”| d d ”}| ||”|}| |d”| |d ”| |”| |d ”| |d ”dS)Nz arrmrāŚabrXŚcabrcr©rEŚyŚzZcabd)rr:rDržrĘrrGr*rTrSrFŚcreateCDATASectionr]rErbŚcreateProcessingInstructionŚ removeChild)r#rrOrdŚsplitterŚtext2rEr r r Ś testWholeText<s8                    zMinidomTest.testWholeTextcCsHtdƒ}|j}|j}| |j|ud”| ||”| |j|ud”dS)NzzBefore replaceChild()zAfter replaceChild())rr:rIr%rrb)r#rrOr­r r r ŚtestPatch1094164`s  zMinidomTest.testPatch1094164cCsŚdd„}|ƒ\}}}}}| d”}| |d”| |d”| t|jƒdk”|ƒ\}}}}}| d”}| |d”| |d”| t|jƒdk”|ƒ\}}}}}| d”}| |d”| |duoŅt|jƒd k”dS) NcSsRtdƒ}|j}|j}|j}|j}| | d”|”| | d”|”|||||fS)NzadrārX)rr:rIrJrMrFrSri)rrOŚtext1rmrlr r r Śsetupjsz/MinidomTest.testReplaceWholeText..setupz new contentr©rArfrCrr?)ZreplaceWholeTextr*r%rGrD)r#rqrrOrprlrmrdr r r ŚtestReplaceWholeTextis"           ’z MinidomTest.testReplaceWholeTextcCsvtdƒ}|j}|j}| |jduo.|jtjjk”d  ”}|D]2}|  |”}|j}| t |dƒol|jtjjk”q>dS)Nal ]>z+id notid text enum ref refs ent ents nm nmsr ) rr:Z schemaTyper%r Ś namespacerrrÉŚsplitr{Śhasattr)r#rrOr)Śnamesr rmr r r ŚtestSchemaType†s’ ’  ’zMinidomTest.testSchemaTypecCs@tdƒ}|j}| d”}| d”}| | d”duoB|j oB|j ”| d”| | | d””op|jop|j ”| d”| | | d””o¬| | d””o¬|jo¬|j”| d”}d|_ |  |”| | d”duo| | d””o|j o|jo|j ”|  |t j jd”| | | d””o8|j”dS)Nzrßrąr^ŚwŚan)rr:r{r%ŚgetElementByIdr–r•rŻZcreateAttributerjŚsetAttributeNoder\rrrÉ)r#rr­rßrąŚa3r r r ŚtestSetIdAttribute§sN  ’ž ’ž ’žż  ’žżü’zMinidomTest.testSetIdAttributecCsrd}d}td|d|dƒ}|j}| |d”}| |d”}| | d”duo^|j o^|j ”| |d”| | | d””oŽ|joŽ|j ”| |d”| | | d””oĢ| | d ””oĢ|joĢ|j”| |d”}d|_ |  |”| | | d ”””| |j ”| |j”| |j ”| | d”du”|  |t j jd ”| | | d ””oj|j”dS© Nzhttp://xml.python.org/ns1r_zrßrąr^rxry)rr:rćr%rzr–ZsetIdAttributeNSrŻŚcreateAttributeNSrjr{r\rrrÉ©r#ZNS1ZNS2rr­rßrąr|r r r ŚtestSetIdAttributeNSĘsZ’’žž  ’ž ’ž ’žż   ’z MinidomTest.testSetIdAttributeNScCsnd}d}td|d|dƒ}|j}| |d”}| |d”}| | d”duo^|j o^|j ”| |”| | | d””oŒ|joŒ|j ”| |”| | | d””oČ| | d ””oČ|joČ|j”| |d”}d|_ |  |”| | | d ”””| |j ”| |j”| |j ”| | d”du”|  |t j jd ”| | | d ””of|j”dSr~)rr:rćr%rzr–ZsetIdAttributeNoderŻrrjr{r\rrrÉr€r r r ŚtestSetIdAttributeNodeźsZ’’žž  ’ž ’ž ’žż   ’z"MinidomTest.testSetIdAttributeNodec Cs||fg}|r| ”\}}| |j|j”| t|jƒt|jƒ”| |j|j”| | |””| | |””|jtj kr°t|j ƒt|j ƒt|j ƒt|j ƒ| t|j ƒt|j ƒ”| t|j ƒt|j ƒ”t t|j ƒƒD]Z}|j   |”}|j   |”}| |j|j”| |j|j”| |j|j”| ||f”qčt t|j ƒƒD]\}|j   |”} |j   |”} | | j| j”| | j| j”| | j| j”| | | f”qR|jtjkrā| |j |””| |j |””t t|jƒƒD] }| |j||j|f”qšq dSr!)ŚpopržrĘrGrDr^r+rŻrrrrrörr r r rr Z DOCUMENT_NODEr"r) r#rrńŚstackZn1Zn2rłZno1Zno2r÷rųr r r Śassert_recursive_equalsD          z"MinidomTest.assert_recursive_equalcCsDttƒ}tdtjdƒD]&}t ||”}t |”}| ||”qdS)Nr?r@)rŚsampleröŚpickleŚHIGHEST_PROTOCOLŚdumpsŚloadsr…)r#rŚprotor(rńr r r ŚtestPickledDocument3s   zMinidomTest.testPickledDocumentcCs"ttƒ}t |”}| ||”dSr!)rr†ŚcopyŚdeepcopyr…rr r r ŚtestDeepcopiedDocument:s z"MinidomTest.testDeepcopiedDocumentcCs(tƒ}| | d””| t|j”dS)Nzfoo--bar)r rTr]reŚ ValueErrorrKr,r r r Ś(testSerializeCommentNodeWithDoubleHyphen?sz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,tdƒ}t| ”ƒ}| |jtjjk”dS)Nz$ )rrKr%r„rrrÉrr r r ŚtestEmptyXMLNSValueEs zMinidomTest.testEmptyXMLNSValuecCs8| td”tdƒWdƒn1s*0YdS)NzUnsupported syntaxzE)ZassertRaisesRegexrrr˜r r r Ś!testExceptionOnSpacesInXMLNSValueKsz-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsfttƒ}|j d”d}| tjj|j|”t |j ƒ}| |j d”t |j ƒ}|  ||dk”dS)NZTITLErr@) rr1r:r9rerrr‡rkrGrDr")r#rZ title_tagZnum_children_beforeZnum_children_afterr r r ŚtestDocRemoveChildOs  zMinidomTest.testDocRemoveChildcCsttƒ}| dd”}d|_dS)NrgrhZcrash)rr1rjrk)r#rrŹr r r Ś"testProcessingInstructionNameErrorXs z.MinidomTest.testProcessingInstructionNameErrorcCs2d}t|ƒ}t ”}| |”| | ”|”dS©NśE)rŚioŚStringIOZwritexmlržŚgetvalue)r#Śxml_strrŚoutputr r r Śtest_minidom_attribute_order_s  z(MinidomTest.test_minidom_attribute_ordercCs d}t|ƒ}| | ”|”dSr–)rržrK©r#r›rr r r Ś"test_toxml_with_attributes_orderedfsz.MinidomTest.test_toxml_with_attributes_orderedcCs d}t|ƒ}| | ”d”dS)Nr—zG ©rržr»ržr r r Ś(test_toprettyxml_with_attributes_orderedks  ’z4MinidomTest.test_toprettyxml_with_attributes_orderedcCs d}t|ƒ}| | ”d”dS)NśC]]>zH ]]> r ržr r r Śtest_toprettyxml_with_cdatars  ’z'MinidomTest.test_toprettyxml_with_cdatacCsLd}t|ƒ}| | d”djd”t| ”ƒ}| | d”djd”dS)Nr¢r'rz)rr*r9rIr»)r#r›Zdom1r‘r r r Śtest_cdata_parsing{s  zMinidomTest.test_cdata_parsingN)r )r.r/r0r%r*r-r6r8r<rPrYr[r`rarcrhrnrorprqrtryr~r…r†rˆrr“r”r—r™ršr›rŸr”r¢rŖr«r®r³r“rµr¶r·r¹r½rĮrĀrÄrĖrĢrĶrĪrĻrŅrÓrŌrÕrÖr×rŲrŁrŚrŪrÜrįräråręrērčrérźrėrģrķrīrļršrņrśr’rrrr rrrrrrrrr r!r"r$r%r&r(r6r7r=r>r@rArBrDrFrHrJrKrLrMrRrSr4rYr]rarbrdrnrorrrwr}rr‚r…rŒrr‘r’r“r”r•rrŸr”r£r¤r r r r r5s +      &         "/? M+ $ !$$ %          rŚ__main__)N)rr‡r˜r$rZunittestZxml.dom.minidomrrrrrrZfindfiler1r†r rrZTestCaserr.Śmainr r r r Śs6   Y