asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYh@sddlZddlZddlZddlmZddlZddlZddlZddlm Z m Z m Z m Z ddlm Z ddlmZejdddZd Zdd d Zd d ZddZGdddejZedkredS)N)support)parseNodeDocument parseString)getDOMImplementation) ExpatErrorztest.xmlZ xmltestdata)Zsubdira ]> text cCstdd|S)Ndoc)rcreateDocument)doctyper -/usr/local/lib/python3.9/test/test_minidom.pycreate_doc_without_doctypesrcCsxtddd}g|j_g|j_tjjddd}|jj |tjj dddd}d|_ d|_ d|_ |jj ||S) Nr z my-notationz"http://xml.python.org/notations/myz my-entityz!http://xml.python.org/entities/myz1.0utf-8us-ascii)rZcreateDocumentTypeentitiesZ_seq notationsxmldomminidomZNotationappendZEntityversionencodingactualEncoding)r Znotationentityr r r create_nonempty_doctype s   rcCs.t}t|}||jd_||jd_|SNr)rrritem ownerDocumentr)r r r r r create_doc_with_doctype0s rc@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Z!d@dAZ"dBdCZ#dDdEZ$dFdGZ%dHdIZ&dJdKZ'dLdMZ(dNdOZ)dPdQZ*dRdSZ+dTdUZ,dVdWZ-dXdYZ.dZd[Z/d\d]Z0d^d_Z1d`daZ2dbdcZ3dddeZ4dfdgZ5dhdiZ6djdkZ7dldmZ8dndoZ9dpdqZ:drdsZ;dtduZdzd{Z?d|d}Z@d~dZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbddÄZcddńZdddDŽZeddɄZfdd˄Zgdd̈́ZhddτZiddфZjddӄZkddՄZlddׄZmddلZnddۄZodd݄Zpdd߄ZqddZrddZsddZtGdddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZdd Zd d Zd d ZddZddZddZddZddZddZdS( MinidomTestTestcCs|||dSN) assertTrue)selftestZtestnamer r r confirm8szMinidomTest.confirmcCs"|j}|||kd||fdS)Nzlooking for %r, found %r) wholeTextr&)r$nodestr r r checkWholeText;szMinidomTest.checkWholeTextcCs"t}||j|tjdSr")r assertFalseZasync_r$r r r r testDocumentAsyncAttr?s z!MinidomTest.testDocumentAsyncAttrcCsNttd0}t|}||t|tWdn1s@0YdS)Nrbopentstfilerunlinkr& isinstancerr$filerr r r testParseFromBinaryFileDs z#MinidomTest.testParseFromBinaryFilecCsRttddd0}t|}||t|tWdn1sD0YdS)Nrz iso-8859-1)rr0r5r r r testParseFromTextFileJsz!MinidomTest.testParseFromTextFilecCs0tt}||d|jdk|dS)NZLI)rr2r&getElementsByTagNamedocumentElementr3r$rr r r testGetElementsByTagNamePs   z$MinidomTest.testGetElementsByTagNamecCstd}|j}|jd}|d}||||t|jdko|jjdko|jd|uo|jd|uo|jd|uo|jd|uo|j |uo|j |uo| dkd|d}||d|t|jdkoJ|jjdkoJ|jd|uoJ|jd|uoJ|jd|uoJ|jd|uoJ|j |uoJ|j |uoJ| d kd|d }||||t|jd ko|jjd ko|jd|uo|jd|uo|jd|uo|jd|uo|j |uo|j |uo| d kd|dS) Nrelementzz0testInsertBefore -- node properly placed in treez%barz+)rr; childNodes createElement insertBeforer&lenlengthr firstChild lastChildtoxmlpreviousSibling nextSiblingr3)r$rrootelemZnelemZnelem2r r r testInsertBeforeVs                   zMinidomTest.testInsertBeforecCsrtd}|d}|d}|d}|d}|j||}||||||||||||fS)NZoriginalfoorCZbat)rcreateTextNoder; appendChildZcreateDocumentFragmentr$rZorigc1c2Zc3fragr 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))rZr;rGr&tuplerEr3rVr r r testInsertBeforeFragments$  z$MinidomTest.testInsertBeforeFragmentcCsVtt}|j|d||jjdjdk||jjdjdk| dS)NZHelloz#comment) rr2r;rU createCommentr&rEnodeNamedatar3r<r r r testAppendChilds zMinidomTest.testAppendChildcCsT|\}}}}}}|j||t|jj||||fkd||dS)NzappendChild())rZr;rUr&r[rEr3rVr r r testAppendChildFragments  z#MinidomTest.testAppendChildFragmentcCs\|\}}}}}}|j||||t|jj|||fkd||dS)NzreplaceChild())rZr; replaceChildr3r&r[rErVr r r testReplaceChildFragmentsz$MinidomTest.testReplaceChildFragmentcCst}|d}|d}|tjj|j||||tjj|j|||tjj|j |||j }|tjj|j ||tjj|j |||| dS)Nr?text)rrFrT assertRaisesrrHierarchyRequestErrrUrGrc attributesZ setNamedItemZsetNamedItemNSr3)r$rrPreZnodemapr r r testLegalChildrens(    zMinidomTest.testLegalChildrencCst}|d}|j}d|d<|d}||j|ud||j|ud||jdkd||jdkd| | dS) Nr?rCrSrz-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue) rrFrhrr&r ownerElementvalue nodeValuer3)r$rrPattrsar r r testNamedNodeMapSetItems&      z#MinidomTest.testNamedNodeMapSetItemcCsBtt}||||d||jdj |dS)NrSr])rr2r&rUr^rEr3r<r r r testNonZeros  zMinidomTest.testNonZerocCs,tt}||j|||jdSr")rr2r#rEr3r,r<r r r testUnlinks zMinidomTest.testUnlinkcCsDtt}||jWdn1s*0Y||jdSr")rr2r#rEr,r<r r r testContexts *zMinidomTest.testContextcCs.t}||d||j|dSNabc)rrUrFr&r;r3r<r r r testElements zMinidomTest.testElementcCsjtd}|j}|dd||dkd|d}||j|ud||j|jud|dS)Nspamjam2testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement) rr; setAttributer&rLgetAttributeNoderrjr3)r$relrnr r r rzs   zMinidomTest.testAAAcCsFtd}|j}|dd|dd||dkd|dS)NrvrwjamrxrytestAAB)rr;r{r&rLr3r$rr}r r r rs   zMinidomTest.testAABcCst}||d}|dd||ddk||jdjdk|dd||ddk||jdjdk|t|jdk|dd||ddk||jdjdk|t|jdk| dS)NrtdefghiZjklZmnor@Znewval) rrUrFr{r& getAttributerhrkrHr3r$rchildr r r testAddAttr s   zMinidomTest.testAddAttrcCsrt}||d}|t|jdk|dd|t|jdk|jd=|t|jdk|dS)NrtrrrrA)rrUrFr&rHrhr{r3rr r r testDeleteAttrs zMinidomTest.testDeleteAttrcCstt}||d}|dd|t|jdk|tj j |j d| d|t|jdk| dS)NrtrrrArSr) rrUrFr{r&rHrhrfrr NotFoundErrZremoveAttributer3rr r r testRemoveAttr*s  zMinidomTest.testRemoveAttrcCst}||dd}|ddd|ddd|tjj|jdd| t |j dk|dd| t |j d k| dS) Nhttp://www.python.org python:abchttp://www.w3.org xmlns:pythonzpython:abcattrrSr@ZabcattrrA) rrUcreateElementNSsetAttributeNSrfrrrZremoveAttributeNSr&rHrhr3rr r r testRemoveAttrNS5s  zMinidomTest.testRemoveAttrNScCst}||d}|dd|t|jdk|d}|t j j |j d| || ||t|jdko|ddut}||d}|d}|t j j |j ||dS)NrSrwr~rAr)rrUrFr{r&rHrhr|rfrrrZremoveAttributeNodeassertIsr3)r$rrr(dom2child2Znode2r r r testRemoveAttributeNodeCs&    z#MinidomTest.testRemoveAttributeNodecCs6t}||d}|dd||ddS)NrSrwr~)rrUrFr{r&Z hasAttributerr r r testHasAttributeUs zMinidomTest.testHasAttributecCstd}|j}|dd|t|jdk|dd|d|t|jdko|jdjdko|jdjdko| ddko| dj d|jd<|t|jdko|jdjdko|jdjdko| ddko|jdj |dd|t|jdkon|jdjdkon|jdjdkon| ddkon|jdjdkon|jdjdkon| ddkd |jd<|t|jdko|jdjdko|jdjdko| ddko|jdjd ko|jdjd ko| dd k| dS) Nrvrwr~rAZbamZhamZspam2r@Zbam2) rr;r{r&rHrhsetIdAttributerkrlrr|isIdr3rr r r testChangeAttr[sl              zMinidomTest.testChangeAttrcCsdSr"r r$r r r testGetAttrListszMinidomTest.testGetAttrListcCsdSr"r rr r r testGetAttrValuesszMinidomTest.testGetAttrValuescCsdSr"r rr r r testGetAttrLengthszMinidomTest.testGetAttrLengthcCs.t}||dd}||dddS)Nrrmissing)rrUr assertEqualrrr r r testGetAttributes  zMinidomTest.testGetAttributecCsvt}||dd}|ddd||ddd||ddd||d}||dd ddS) NrrrrZpythonotherrrtr)rrUrrrZgetAttributeNSrF)r$rrrr r r testGetAttributeNSs" zMinidomTest.testGetAttributeNScCsdSr"r rr r r testGetAttributeNodez MinidomTest.testGetAttributeNodecCs|d}t|}|dd}|t|dkol|djdkol|djdkol|djdkol|djdkol|djdk| dS)NzZ zhttp://pyxml.sf.net/minidomZmyelemrArrzminidom:myelem) rgetElementsByTagNameNSr&rH namespaceURI localNameprefixtagNamer_r3)r$drZelemsr r r testGetElementsByTagNameNSs"     z&MinidomTest.testGetElementsByTagNameNScCs"|||}|t|dkdSr)rr&rH)r$r ZnsuriZlnameZnodelistr r r 5get_empty_nodelist_from_elements_by_tagName_ns_helpers zAMinidomTest.get_empty_nodelist_from_elements_by_tagName_ns_helpercCshtd}||dd||dd||ddtd}||dd||dd||d d dS) NrRz"http://xml.python.org/namespaces/aZ localname*Zsplatz3zhttp://xml.python.org/splatz not-therez#http://somewhere.else.net/not-theree)rrr-r r r +testGetEmptyNodeListFromElementsByTagNameNSs(z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNScCs@t}||d}t|}t|}|||k|dSrsrrUrFreprstrr&r3r$rr}Zstring1Zstring2r r r testElementReprAndStrs z!MinidomTest.testElementReprAndStrcCs@t}||d}t|}t|}|||k|dSrsrrr r r testElementReprAndStrUnicodes z(MinidomTest.testElementReprAndStrUnicodecCsPt}||dd}t|}t|}|||k|d|v|dS)Nzhttp://www.slashdot.orgz slash:abc)rrUrrrr&r3rr r r testElementReprAndStrUnicodeNSs z*MinidomTest.testElementReprAndStrUnicodeNScCsDt}||d}|dd}|t|t|k|dS)Nrtr)rrUrFr{r&rrr3)r$rr}r(r r r testAttributeReprs  zMinidomTest.testAttributeReprcCsdSr"r rr r r testTextNodeReprrzMinidomTest.testTextNodeReprcCs.d}t|}|}||||kdS)Nz )rrLr3r&r$rrZdomstrr r r testWriteXMLs zMinidomTest.testWriteXMLcCs:d}t|}|jdd}||||ddkdS)Nz" z )Znewl )r toprettyxmlr3r&replacerr r r testAltNewlines  zMinidomTest.testAltNewlinecCsd}|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 )rrr)r$declr r r test_toprettyxml_with_text_nodess z,MinidomTest.test_toprettyxml_with_text_nodescCsVt}|d}||d||d||d}|||ddS)NrPZTEXTrz TEXT TEXT )rrFrUrTrr)r$rrPrr r r )test_toprettyxml_with_adjacent_text_nodess   z5MinidomTest.test_toprettyxml_with_adjacent_text_nodescCsVdD]L}t|}t|}||ddjd|ddjdqdS)N)rzCBr)rrrr:rErL)r$rrrr r r /test_toprettyxml_preserves_content_of_text_nodes z;MinidomTest.test_toprettyxml_preserves_content_of_text_nodecCstd}|jj}||jdko|jdko|jdko|jtj ko|j duo| ot |j dko|jduo|jduo|jduo|jtjjkdS)NzZmypizdata r)rr;rJr&targetr`r_nodeTyperPROCESSING_INSTRUCTION_NODErh hasChildNodesrHrErKrrrrEMPTY_NAMESPACE)r$rpir r r testProcessingInstructions.    z%MinidomTest.testProcessingInstructioncCsdSr"r rr r r testProcessingInstructionRepr'rz)MinidomTest.testProcessingInstructionReprcCsdSr"r rr r r testTextRepr)rzMinidomTest.testTextReprcCsdSr"r rr r r testWriteText+rzMinidomTest.testWriteTextcCsdSr"r rr r r testDocumentElement-rzMinidomTest.testDocumentElementcCs:td}|d}|tjj|j|||dS)NrRextra)rrFrfrrrgrUr3r$r rPr r r testTooManyDocumentElements/s  z'MinidomTest.testTooManyDocumentElementscCsdSr"r rr r r testCreateElementNS7rzMinidomTest.testCreateElementNScCsdSr"r rr r r testCreateAttributeNS9rz!MinidomTest.testCreateAttributeNScCsdSr"r rr r r testParse;rzMinidomTest.testParsecCsdSr"r rr r r testParseString=rzMinidomTest.testParseStringcCsdSr"r rr r r testComment?rzMinidomTest.testCommentcCsdSr"r rr r r testAttrListItemArzMinidomTest.testAttrListItemcCsdSr"r rr r r testAttrListItemsCrzMinidomTest.testAttrListItemscCsdSr"r rr r r testAttrListItemNSErzMinidomTest.testAttrListItemNScCsdSr"r rr r r testAttrListKeysGrzMinidomTest.testAttrListKeyscCsdSr"r rr r r testAttrListKeysNSIrzMinidomTest.testAttrListKeysNScCsPtd}|j}|j}|d}|d}||||tj j |jddS)Nz rn) rr;rhr|ZremoveNamedItemr& isSameNoderfrrrr$r rrma1a2r r r testRemoveNamedItemKs  zMinidomTest.testRemoveNamedItemcCsVtd}|j}|j}|dd}|dd}||||tj j |jdddS)Nz.zhttp://xml.python.org/b) rr;rhgetAttributeNodeNSZremoveNamedItemNSr&rrfrrrrr r r testRemoveNamedItemNSTs  z!MinidomTest.testRemoveNamedItemNScCsdSr"r rr r r testAttrListValues^rzMinidomTest.testAttrListValuescCsdSr"r rr r r testAttrListLength`rzMinidomTest.testAttrListLengthcCsdSr"r rr r r testAttrList__getitem__brz#MinidomTest.testAttrList__getitem__cCsdSr"r rr r r testAttrList__setitem__drz#MinidomTest.testAttrList__setitem__cCsdSr"r rr r r testSetAttrValueandNodeValuefrz(MinidomTest.testSetAttrValueandNodeValuecCsdSr"r rr r r testParseElementhrzMinidomTest.testParseElementcCsdSr"r rr r r testParseAttributesjrzMinidomTest.testParseAttributescCsdSr"r rr r r testParseElementNamespaceslrz&MinidomTest.testParseElementNamespacescCsdSr"r rr r r testParseAttributeNamespacesnrz(MinidomTest.testParseAttributeNamespacescCsdSr"r rr r r testParseProcessingInstructionsprz+MinidomTest.testParseProcessingInstructionscCsdSr"r rr r r testChildNodesrrzMinidomTest.testChildNodescCsdSr"r rr r r testFirstChildtrzMinidomTest.testFirstChildcCs<td}|j}||td}|j}||dS)Nr>rR)rr;r#rr,)r$rr rdoc2r r r testHasChildNodesvs zMinidomTest.testHasChildNodesc Cs|j}|j}t|}t|}|||||kdtt|D]j}||} ||} || | uo| j| jko| j | j ko| j | j ko| j | j kd|| j |udqPdS)Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned) rhlistkeyssortr&rangerHrrkrlrrrj) r$e1e2r%Zattrs1Zattrs2Zkeys1Zkeys2irrr r r !_testCloneElementCopiesAttributes~s.          z-MinidomTest._testCloneElementCopiesAttributescCs^td}|j}||}|||d|r*dp,dd|_|_|dd|dd ||fS) NzZtestCloneElementZDeepZShallowZMODIFIEDattrz NEW VALUEZaddedZVALUE)rr; cloneNoderrr_r{)r$deeprrOcloner r r _setupCloneElements    zMinidomTest._setupCloneElementcCsR|d\}}|t|jdko@|jjdko@|jduo@|dkd|dS)NrztestCloneElementShallowrr&rHrErI parentNoderLr3r$rrr r r rs  z#MinidomTest.testCloneElementShallowcCsR|d\}}|t|jdko@|jjdko@|jduo@|dkd|dS)NrAztestCloneElementDeeprrr r r rs  z MinidomTest.testCloneElementDeepcCs&td}|d}||duddS)N ]> rzFtestCloneDocumentShallow: shallow cloning of documents makes no sense!)rrr&r$r rr r r testCloneDocumentShallows   z$MinidomTest.testCloneDocumentShallowcCstd}|d}|||p(|| d|t|jt|jkd||jjtj kd||jj |d||j|j d|j dur||j jtj kd||j j |||j |j  dS) NrrAz4testCloneDocumentDeep: 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) rrr&rrHrEr;rrZ ELEMENT_NODErr DOCUMENT_TYPE_NODErr r r testCloneDocumentDeeps.  z!MinidomTest.testCloneDocumentDeepcCst}|d}||duo|j|jko|j|jko|j|jko|j|jkot|jt|jko|j t|jduot|j t|j ko|j t|j duot|j dkt t|jD]}|j |}|j |}|| | oX| | oX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkqt t|j D]h}|j |}|j |}|| | o| | o|j|jko|j|jko|j|jkqldS)NrAr)rrr&r_namepublicIdsystemIdrHrrrrErr notationNamerrr)r$r rrZseZceZsnZcnr r r testCloneDocumentTypeDeepOksj                         z'MinidomTest.testCloneDocumentTypeDeepOkcCs&t}|jd}||duddS)NrAtestCloneDocumentTypeDeepNotOkrr rr&r$r rr r r rs z*MinidomTest.testCloneDocumentTypeDeepNotOkcCst}|d}||duo|j|jko|j|jko|j|jko|j|jkot|jdko|j dduot|j dko|j dduot|j dkdSr) rrr&r_r r r rHrrrrE)r$r rr r r testCloneDocumentTypeShallowOks*         z*MinidomTest.testCloneDocumentTypeShallowOkcCs&t}|jd}||duddS)Nr!testCloneDocumentTypeShallowNotOkrrr r r r s z-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*td}td}|tjj|j||dS)NrR)rrfrrNotSupportedErr importNode)r$rtestNameZdoc1rr r r check_import_documentsz!MinidomTest.check_import_documentcCs|dddS)NrtestImportDocumentShallowrrr r r rsz%MinidomTest.testImportDocumentShallowcCs|dddS)NrAtestImportDocumentDeeprrr r r rsz"MinidomTest.testImportDocumentDeepcCs(t}t}|tjj|j|jddSrrrrfrrrrr r$srcrr r r testImportDocumentTypeShallows z)MinidomTest.testImportDocumentTypeShallowcCs(t}t}|tjj|j|jddSNrArrr r r testImportDocumentTypeDeep s z&MinidomTest.testImportDocumentTypeDeepcCstd}|jd}||d||}||| ||| ||jdu|d||j|j|d||j |ddS)Nzrz: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True) rr;r|ZassertNotEqualrr&rrjrZ specified)r$rrr rrr r r check_clone_attribute(s    z!MinidomTest.check_clone_attributecCs|dddS)NrtestCloneAttributeShallowr"rr r r r#6sz%MinidomTest.testCloneAttributeShallowcCs|dddS)NrAtestCloneAttributeDeepr$rr r r r%9sz"MinidomTest.testCloneAttributeDeepcCsJtd}|j}||jtj||}||j|jkoB|j |j kdS)Nz) rrJrrrrrr&rr`)r$rrr rrr r r check_clone_pi<s  zMinidomTest.check_clone_picCs|dddS)NrtestClonePIShallowr&rr r r r'DszMinidomTest.testClonePIShallowcCs|dddS)NrAtestClonePIDeepr(rr r r r)GszMinidomTest.testClonePIDeepc Cstjjd}Gddd}|}|j}|jd}|dd||r~|jdd}| |j j j d tjj j}|jjd} nNt|d d|jdd}Wdn1s0Ytjj j}|jd} | |j|| |jd| |jd||j|||j| dS) Nu ] > Don't let entities make you frown ⌣ c@seZdZddZdS)z4MinidomTest.check_clone_node_entity..HandlercSs"||_||_||_||_||_dSr") operationkeyr`rdstr$r*r+r`rr,r r r handleWs z;MinidomTest.check_clone_node_entity..Handler.handleN)__name__ __module__ __qualname__r.r r r r HandlerVsr2Zsmiler+r`T)ru%Don't let entities make you frown ☺r)rrrrstripr r setUserDatarrr;rJr'UserDataHandlerZ NODE_IMPORTEDrZ swap_attrZ NODE_CLONEDr*r+r`rrr,) r$Zclone_documentZdocumentr2handlerr rrr*r,r r r check_clone_node_entityJs,     *  z#MinidomTest.check_clone_node_entitycCs|d|ddS)NFT)r7rr r r testCloneNodeEntityys zMinidomTest.testCloneNodeEntitycCstd}|j}||d||d|t|jdkoJ|jjdkd||t|jdko|jjdko|j |j uo|j j dkd| td}|j}||d ||t|jd ko|jjd kd | dS) NrRfirstsecondr@ztestNormalize -- preparationrA firstsecondztestNormalize -- resultrrz*testNormalize -- single empty node removed) rr;rUrTr&rHrErI normalizerJrKr`r3r$r rOr r r testNormalize}s6     zMinidomTest.testNormalizecCstd}|j}||d||d||d|t|jdkoZ|jjdkd| |t|jdko|jjdko|j j dko|j |j uo|j j |j uo|j jduo|j j|j uo|j j dud |dS) NrRr9r:rrBz1testNormalizeCombineAndNextSibling -- preparationr@r;z-testNormalizeCombinedAndNextSibling -- result)rr;rUrTrFr&rHrErIr<rJr`rKrNrMr3r=r r r "testNormalizeCombineAndNextSiblings6         z.MinidomTest.testNormalizeCombineAndNextSiblingcCstd}|j}||d||d|t|jdkoJ|jjdkd||t|jdko|jjdko|j j dko|j |j uo|j j duo|j j dud|dS)NrRr9rr@z1testNormalizeDeleteWithPrevSibling -- preparationrAz,testNormalizeDeleteWithPrevSibling -- resultrr;rUrTr&rHrErIr<rJr`rKrNrMr3r=r r r "testNormalizeDeleteWithPrevSiblings,      z.MinidomTest.testNormalizeDeleteWithPrevSiblingcCstd}|j}||d||d|t|jdkoJ|jjdkd||t|jdko|jjdko|j j dko|j |j uo|j j duo|j j dud|dS)NrRrr:r@z1testNormalizeDeleteWithNextSibling -- preparationrAz,testNormalizeDeleteWithNextSibling -- resultr@r=r r r "testNormalizeDeleteWithNextSiblings,      z.MinidomTest.testNormalizeDeleteWithNextSiblingcCstd}|j}||d||d||d|t|jdkoZ|jjdkd| |t|jdko|jjdko|j |j uo|j j |j uo|j j duo|j j |j uo|j j dud|dS)NrRrrrBz1testNormalizeDeleteWithTwoSiblings -- preparationr@z,testNormalizeDeleteWithTwoSiblings -- result)rr;rUrFrTr&rHrErIr<rJrKrNrMr3r=r r r )testNormalizeDeleteWithTwoNonTextSiblingss2       z5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblingscCstd}|j}||d||d||d||d||d|t|jdkoz|jjdkd||t|jdko|jjdko|j |j uo|j j dko|j j duo|j j dud |dS) NrRrr:Zfourthz,testNormalizeDeleteAndCombine -- preparationrAZ secondfourthz'testNormalizeDeleteAndCombine -- result)rr;rUrTr&rHrErIr<rJrKr`rMrNr3r=r r r testNormalizeDeleteAndCombines2      z)MinidomTest.testNormalizeDeleteAndCombinecCs6td}|j}|jd|d|jd|d|jdjd|d|jd|d||d|t|jdko$|jjdko$t|jdjd ko$|jdjjd ko$t|jdjdko$|jdjjdko$t|jdjdjd ko$|jdjdjjd kd ||t|jd ko|jjd kot|jdjd ko|jdjjd kot|jdjd ko|jdjjd kot|jdjdjdko|jdjdjjdkd ||jdjdj d ko.|jdjdjdj dko.|jdjdj dkd||jdjdj duo$|jdjdj |jdjduo$|jdjdj duo$|jdjdj |jdjduo$|jdjdj duo$|jdjdj |jdjduo$|jdjdj duo$|jdjdj |jdjdud| dS)Nz)tt2t3rrxrAZx2Zx3rBrDr@ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers) rr;rErUrTr&rHrIr<r`rNrMr3r=r r r testNormalizeRecursions       z"MinidomTest.testNormalizeRecursioncCs8td}|jjd}||jtj||dS)Nz textr) rr;rErrr TEXT_NODEr<r3)r$r rer r r testBug07778847s  zMinidomTest.testBug0777884cCs>td}|j}d|jd_|||jdjduddS)Nz trrAr]z)Final child's .nextSibling should be None)rr;rErlr<r&rNr$r r(r r r testBug1433694?s zMinidomTest.testBug1433694cCsjtd}|j}|j\}}}||j|uoX|jduoX|j|uoX|j|uoX|jduoX|j|ud|dS)Nztext? testSiblings)rr;rEr&rNrMr3)r$r rOrreZelmr r r rLGs  zMinidomTest.testSiblingscCsrtd}|j}|jd}|j\}}|jd}||j|uo`|j|uo`|j|uo`|j|uo`|j|ud|dS)Nz3r testParents)rr;rEr&rr3)r$r rOZelm1Zelm2aZelm2bZelm3r r r rMUs"    zMinidomTest.testParentscCstd}|j}|d}||d|duo||dduo||jd|jduo||jd|jduo||jdjddud|dS)NzrrAztest NodeList.item())rrEr&rr3)r$r ZchildrenZdocelemr r r testNodeListItemds zMinidomTest.testNodeListItemcCstd}||d||dd||dd||dd||d d d tjd kr|ttd |ttd n|ttd| dS)N$rs4z iso-8859-15s8rs;zutf-16u5r@rDrDss.Comment a va ? Trs bien ?s0Comment a va ? Trs bien ?) rrrLencodepyexpat version_inforfrUnicodeDecodeErrorr3r-r r r testEncodingsps:      zMinidomTest.testEncodingscCsttd}||d||jddd||jddd||jddd||ddd |dS) NrOrP)Z standaloneTu4Fu3rsE)rrrLr3r-r r r testStandalones" zMinidomTest.testStandalonec@seZdZdZddZdS)zMinidomTest.UserDataHandlerrcCs*|||d|||ddd|_dSr )r4calledr-r r r r.sz"MinidomTest.UserDataHandler.handleN)r/r0r1rXr.r r r r r5sr5cCs(t}|d}||ddu|ddd||ddu|ddd|ddd||ddk||ddk|ddd||ddu||ddk|}|dd||d}||jo|dduo|ddk|||dS)NrrS rC rA) rrFr&Z getUserDatar4r5rrXr3)r$rnr6cr r r testUserDatas.     zMinidomTest.testUserDatacCs@|tjj|j|ddtd}|tjj|j|tjjddS)Nhttp://xml.python.org/nsz xmlns:foorRrS)rfrr NamespaceErr renameNoderZWrongDocumentErrr)r$r r(rr r r checkRenameNodeSharedConstraintssz,MinidomTest.checkRenameNodeSharedConstraintscCsbtd}|j}|j}|jd}||tjjd}||jdko|j dko|j duo|j tjjko|j duo|j dko|dduo|d|o|d|o|j|o|j|||dd}||jdkov|j dkov|j dkov|j dkov|j duov|j dkov|dduov|dduov|d|ov|dd|ov|d|ov|d|||dd }||jd koX|j d koX|j d koX|j dkoX|j d koX|j dkoX|dduoX|dduoX|dduoX|ddduoX|d |oX|dd |oX|d |oX|d |||tjjd }||jd ko.|j d ko.|j duo.|j tjjko.|j duo.|j dko.|dduo.|dduo.|dduo.|d duo.|ddduo.|d |o.|d ||tjj|j|dd||||dS)Nz rnrvr^r\)r^r\http://xml.python.org/ns2zp:drp)rcrrZxmlns)rr;rhr`rrrr&r r_rrrrkr|rrrjrrfr_rar3)r$r rPZattrmaprr r r testRenameAttributes                             zMinidomTest.testRenameAttributecCstd}|j}||tjjd}||jdkod|jdkod|j duod|j tjjkod|j duod|j |||dd}||jdko|jdko|j dko|j dko|j duo|j |||dd}||jdko|jdko|j dko|j dko|j dko|j |||tjjd }||jd kov|jd kov|j duov|j tjjkov|j duov|j |||||dS) NrRrnr^rrczp:cr\rdr)rr;r`rrrr&rr_rrrrrrar3rr r r testRenameElementsh       zMinidomTest.testRenameElementcCsLtjjtjjdd}|d}|tjj|j |tjjd| dS)NrcommentrS) rrrrr rr^rfrr`r3rJr r r testRenameOther:s   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 arrnrabr\cabrgrrFyzZcabd)rr;rErrrrHr+rUrTrGcreateCDATASectionr^rFrccreateProcessingInstruction removeChild)r$r rPresplittertext2rFr r r testWholeTextDs8                    zMinidomTest.testWholeTextcCsHtd}|j}|j}||j|ud|||||j|uddS)NzzBefore replaceChild()zAfter replaceChild())rr;rJr&rrc)r$r rPrr r r testPatch1094164hs  zMinidomTest.testPatch1094164cCsdd}|\}}}}}|d}||d||d|t|jdk|\}}}}}|d}||d||d|t|jdk|\}}}}}|d}||d||duot|jd kdS) NcSsRtd}|j}|j}|j}|j}||d|||d||||||fS)Nzadrr\)rr;rJrKrNrGrTrm)r rPtext1rqrpr r r setuprsz/MinidomTest.testReplaceWholeText..setupz new contentrrBrjrDrr@)ZreplaceWholeTextr+r&rHrE)r$rur rPrtrprqrer r r testReplaceWholeTextqs"           z MinidomTest.testReplaceWholeTextcCsvtd}|j}|j}||jduo.|jtjjkd }|D]2}| |}|j}|t |dol|jtjjkq>dS)Nal ]>z+id notid text enum ref refs ent ents nm nmsr ) rr;Z schemaTyper&r  namespacerrrsplitr|hasattr)r$r rPr*namesr rnr r r testSchemaTypes   zMinidomTest.testSchemaTypecCs@td}|j}|d}|d}||dduoB|j oB|j |d|||dop|jop|j |d|||do||do|jo|j|d}d|_ | |||dduo||do|j o|jo|j | |t j jd|||do8|jdS)Nzrrrbwan)rr;r|r&getElementByIdrrrZcreateAttributerksetAttributeNoder`rrr)r$r rrra3r r r testSetIdAttributesN      zMinidomTest.testSetIdAttributecCsrd}d}td|d|d}|j}||d}||d}||dduo^|j o^|j ||d|||do|jo|j ||d|||do||d o|jo|j||d}d|_ | ||||d ||j ||j||j ||ddu| |t j jd |||d oj|jdS Nzhttp://xml.python.org/ns1rczrrrbr|r})rr;rr&r~rZsetIdAttributeNSrcreateAttributeNSrkrr`rrrr$ZNS1ZNS2r rrrrr r r testSetIdAttributeNSsZ       z MinidomTest.testSetIdAttributeNScCsnd}d}td|d|d}|j}||d}||d}||dduo^|j o^|j |||||do|jo|j |||||do||d o|jo|j||d}d|_ | ||||d ||j ||j||j ||ddu| |t j jd |||d of|jdSr)rr;rr&r~rZsetIdAttributeNoderrrkrr`rrrrr r r testSetIdAttributeNodesZ       z"MinidomTest.testSetIdAttributeNodec Cs||fg}|r|\}}||j|j|t|jt|j||j|j|||||||jtj krt|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|||fqt t|j D]\}|j |} |j |} || j| j|| j| j|| j| j|| | fqR|jtjkr||j|||j|t t|jD] }||j||j|fqq dSr")poprrrHrEr_r,rrr rrrrr r r rrZ DOCUMENT_NODEr#r) r$r rstackZn1Zn2rZno1Zno2rrr r r assert_recursive_equalsD          z"MinidomTest.assert_recursive_equalcCsDtt}tdtjdD]&}t||}t|}|||qdS)Nr@rA)rsamplerpickleHIGHEST_PROTOCOLdumpsloadsr)r$r protor)rr r r testPickledDocument;s   zMinidomTest.testPickledDocumentcCs"tt}t|}|||dSr")rrcopydeepcopyrrr r r testDeepcopiedDocumentBs z"MinidomTest.testDeepcopiedDocumentcCs(t}||d|t|jdS)Nzfoo--bar)rrUr^rf ValueErrorrLr-r r r (testSerializeCommentNodeWithDoubleHyphenGsz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,td}t|}||jtjjkdS)Nz$ )rrLr&rrrrrr r r testEmptyXMLNSValueMs zMinidomTest.testEmptyXMLNSValuecCsTtjdkr|td}n |td}|tdWdn1sF0YdS)NrQz syntax errorzUnsupported syntaxzE)rSrTZassertRaisesRegexrrr)r$contextr r r !testExceptionOnSpacesInXMLNSValueSs   z-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsftt}|jdd}|tjj|j|t |j }||j dt |j }| ||dkdS)NZTITLErrA) rr2r;r:rfrrrrorHrEr#)r$r Z title_tagZnum_children_beforeZnum_children_afterr r r testDocRemoveChild\s  zMinidomTest.testDocRemoveChildcCstt}|dd}d|_dS)NrkrlZcrash)rr2rnrl)r$r rr r r "testProcessingInstructionNameErrores z.MinidomTest.testProcessingInstructionNameErrorcCs2d}t|}t}|||||dSNE)rioStringIOZwritexmlrgetvalue)r$xml_strr outputr r r test_minidom_attribute_orderls  z(MinidomTest.test_minidom_attribute_ordercCs d}t|}|||dSr)rrrLr$rr r r r "test_toxml_with_attributes_orderedssz.MinidomTest.test_toxml_with_attributes_orderedcCs d}t|}||ddS)NrzG rrrrr r r (test_toprettyxml_with_attributes_orderedxs  z4MinidomTest.test_toprettyxml_with_attributes_orderedcCs d}t|}||ddS)NC]]>zH ]]> rrr r r test_toprettyxml_with_cdatas  z'MinidomTest.test_toprettyxml_with_cdatacCsLd}t|}||ddjdt|}||ddjddS)Nrr(rz)rr+r:rJr)r$rZdom1rr r r test_cdata_parsings  zMinidomTest.test_cdata_parsingN)r!)r/r0r1r&r+r.r7r9r=rQrZr\rarbrdrirorprqrrrurzrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrrrr!r"r#r%r&r'r)r7r8r>r?rArBrCrErGrIrKrLrMrNrVrWr5r]rarerfrhrrrsrvr{rrrrrrrrrrrrrrrrr r r r r 7s +      &         "/? M+ $ !$$ %         r __main__)N)rrrr%rZunittestrSZxml.dom.minidomrrrrrrZxml.parsers.expatrZfindfiler2rrrrZTestCaser r/mainr r r r s:    d