a ze@sddlZddlZddlZddlmZddlZddlZddlmZm Z m Z m Z ddlm Z ej dddZdZdd d Zd d Zd dZGdddejZedkredS)N)support)parseNodeDocument parseString)getDOMImplementationztest.xmlZ xmltestdata)Zsubdira ]> text cCstdd|S)Ndoc)rcreateDocument)doctyper E/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_minidom.pycreate_doc_without_doctypesr cCsxtddd}g|j_g|j_tjjddd}|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.0utf-8us-ascii)rZcreateDocumentTypeentitiesZ_seq notationsxmldomminidomZNotationappendZEntityversionencodingactualEncoding)r Znotationentityr r r create_nonempty_doctypes   rcCs.t}t|}||jd_||jd_|SNr)rr ritem ownerDocumentr)r rr r r create_doc_with_doctype.s 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 confirm6szMinidomTest.confirmcCs"|j}|||kd||fdS)Nzlooking for %r, found %r) wholeTextr%)r#nodestr r r checkWholeText9szMinidomTest.checkWholeTextcCs"t}||j|tjdSr!)r assertFalseZasync_r#rr r r testDocumentAsyncAttr=s z!MinidomTest.testDocumentAsyncAttrcCsNttd0}t|}||t|tWdn1s@0YdS)Nrbopentstfilerunlinkr% isinstancerr#filerr r r testParseFromBinaryFileBs z#MinidomTest.testParseFromBinaryFilecCsRttddd0}t|}||t|tWdn1sD0YdS)Nrz iso-8859-1)rr/r4r r r testParseFromTextFileHsz!MinidomTest.testParseFromTextFilecCs0tt}||d|jdk|dS)NZLI)rr1r%getElementsByTagNamedocumentElementr2r#rr r r testGetElementsByTagNameNs   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 nextSiblingr2)r#rrootelemZnelemZnelem2r r r testInsertBeforeTs                   zMinidomTest.testInsertBeforecCsrtd}|d}|d}|d}|d}|j||}||||||||||||fS)NZoriginalfoorBZbat)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))rYr:rFr%tuplerDr2rUr r r testInsertBeforeFragments$  z$MinidomTest.testInsertBeforeFragmentcCsVtt}|j|d||jjdjdk||jjdjdk| dS)NZHelloz#comment) rr1r:rT createCommentr%rDnodeNamedatar2r;r r r testAppendChilds zMinidomTest.testAppendChildcCsT|\}}}}}}|j||t|jj||||fkd||dS)NzappendChild())rYr:rTr%rZrDr2rUr r r testAppendChildFragments  z#MinidomTest.testAppendChildFragmentcCs\|\}}}}}}|j||||t|jj|||fkd||dS)NzreplaceChild())rYr: replaceChildr2r%rZrDrUr r r testReplaceChildFragmentsz$MinidomTest.testReplaceChildFragmentcCst}|d}|d}|tjj|j||||tjj|j|||tjj|j |||j }|tjj|j ||tjj|j |||| dS)Nr>text)rrErS assertRaisesrrHierarchyRequestErrrTrFrb attributesZ setNamedItemZsetNamedItemNSr2)r#rrOrdZnodemapr r r testLegalChildrens(    zMinidomTest.testLegalChildrencCst}|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 ownerElementvalue nodeValuer2)r#rrOattrsar r r testNamedNodeMapSetItems&      z#MinidomTest.testNamedNodeMapSetItemcCsBtt}||||d||jdj |dS)NrRr\)rr1r%rTr]rDr2r;r r r testNonZeros  zMinidomTest.testNonZerocCs,tt}||j|||jdSr!)rr1r"rDr2r+r;r r r testUnlinks zMinidomTest.testUnlinkcCsDtt}||jWdn1s*0Y||jdSr!)rr1r"rDr+r;r r r testContexts *zMinidomTest.testContextcCs.t}||d||j|dSNabc)rrTrEr%r:r2r;r r r testElements zMinidomTest.testElementcCsjtd}|j}|dd||dkd|d}||j|ud||j|jud|dS)Nspamjam2testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement) rr: setAttributer%rKgetAttributeNoderrir2)r#relrmr r r rys   zMinidomTest.testAAAcCsFtd}|j}|dd|dd||dkd|dS)NrurvjamrwrxtestAAB)rr:rzr%rKr2r#rr|r r r r~s   zMinidomTest.testAABcCst}||d}|dd||ddk||jdjdk|dd||ddk||jdjdk|t|jdk|dd||ddk||jdjdk|t|jdk| dS)NrsdefghiZjklZmnor?Znewval) rrTrErzr% getAttributergrjrGr2r#rchildr r r testAddAttrs   zMinidomTest.testAddAttrcCsrt}||d}|t|jdk|dd|t|jdk|jd=|t|jdk|dS)Nrsrrrr@)rrTrEr%rGrgrzr2rr r r testDeleteAttrs zMinidomTest.testDeleteAttrcCstt}||d}|dd|t|jdk|tj j |j d| d|t|jdk| dS)Nrsrrr@rRr) rrTrErzr%rGrgrerr NotFoundErrZremoveAttributer2rr 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:abcattrrRr?Zabcattrr@) rrTcreateElementNSsetAttributeNSrerrrZremoveAttributeNSr%rGrgr2rr r r testRemoveAttrNS3s  zMinidomTest.testRemoveAttrNScCst}||d}|dd|t|jdk|d}|t j j |j d| || ||t|jdko|ddut}||d}|d}|t j j |j ||dS)NrRrvr}r@r)rrTrErzr%rGrgr{rerrrZremoveAttributeNodeassertIsr2)r#rrr'dom2child2Znode2r r r testRemoveAttributeNodeAs&    z#MinidomTest.testRemoveAttributeNodecCs6t}||d}|dd||ddS)NrRrvr})rrTrErzr%Z hasAttributerr r r testHasAttributeSs 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) Nrurvr}r@ZbamZhamZspam2r?Zbam2) rr:rzr%rGrgsetIdAttributerjrkrr{isIdr2rr r r testChangeAttrYsl              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)rrTr assertEqualrrr r r testGetAttributes  zMinidomTest.testGetAttributecCsvt}||dd}|ddd||ddd||ddd||d}||dd ddS) NrrrrZpythonotherrrsr)rrTrrrZgetAttributeNSrE)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/minidomZmyelemr@rrzminidom:myelem) rgetElementsByTagNameNSr%rG namespaceURI localNameprefixtagNamer^r2)r#drZelemsr r r testGetElementsByTagNameNSs"     z&MinidomTest.testGetElementsByTagNameNScCs"|||}|t|dkdSr)rr%rG)r#rZnsuriZlnameZnodelistr 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) NrQz"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|dSrrrrTrEreprstrr%r2r#rr|Zstring1Zstring2r r r testElementReprAndStrs z!MinidomTest.testElementReprAndStrcCs@t}||d}t|}t|}|||k|dSrrrrr r r testElementReprAndStrUnicodes z(MinidomTest.testElementReprAndStrUnicodecCsPt}||dd}t|}t|}|||k|d|v|dS)Nzhttp://www.slashdot.orgz slash:abc)rrTrrrr%r2rr r r testElementReprAndStrUnicodeNSs z*MinidomTest.testElementReprAndStrUnicodeNScCsDt}||d}|dd}|t|t|k|dS)Nrsr)rrTrErzr%rrr2)r#rr|r'r r r testAttributeReprs  zMinidomTest.testAttributeReprcCsdSr!r rr r r testTextNodeReprrzMinidomTest.testTextNodeReprcCs.d}t|}|}||||kdS)Nz )rrKr2r%r#rrZdomstrr r r testWriteXMLs zMinidomTest.testWriteXMLcCs:d}t|}|jdd}||||ddkdS)Nz" z )Znewl )r toprettyxmlr2r%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)NrOZTEXTrz TEXT TEXT )rrErTrSrr)r#rrOrr r r )test_toprettyxml_with_adjacent_text_nodess   z5MinidomTest.test_toprettyxml_with_adjacent_text_nodescCsVdD]L}t|}t|}||ddjd|ddjdqdS)N)rzCBr)rrrr9rDrK)r#rrrr r r /test_toprettyxml_preserves_content_of_text_node s 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:rIr%targetr_r^nodeTyperPROCESSING_INSTRUCTION_NODErg hasChildNodesrGrDrJrrrrEMPTY_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)NrQextra)rrErerrrfrTr2r#rrOr r r testTooManyDocumentElements-s  z'MinidomTest.testTooManyDocumentElementscCsdSr!r rr r r testCreateElementNS5rzMinidomTest.testCreateElementNScCsdSr!r rr r r testCreateAttributeNS7rz!MinidomTest.testCreateAttributeNScCsdSr!r rr r r testParse9rzMinidomTest.testParsecCsdSr!r rr r r testParseString;rzMinidomTest.testParseStringcCsdSr!r rr r r testComment=rzMinidomTest.testCommentcCsdSr!r rr r r testAttrListItem?rzMinidomTest.testAttrListItemcCsdSr!r rr r r testAttrListItemsArzMinidomTest.testAttrListItemscCsdSr!r rr r r testAttrListItemNSCrzMinidomTest.testAttrListItemNScCsdSr!r rr r r testAttrListKeysErzMinidomTest.testAttrListKeyscCsdSr!r rr r r testAttrListKeysNSGrzMinidomTest.testAttrListKeysNScCsPtd}|j}|j}|d}|d}||||tj j |jddS)Nz rm) rr:rgr{ZremoveNamedItemr% isSameNodererrrr#rrrla1a2r r r testRemoveNamedItemIs  zMinidomTest.testRemoveNamedItemcCsVtd}|j}|j}|dd}|dd}||||tj j |jdddS)Nz.zhttp://xml.python.org/b) rr:rggetAttributeNodeNSZremoveNamedItemNSr%rrerrrrr r r testRemoveNamedItemNSRs  z!MinidomTest.testRemoveNamedItemNScCsdSr!r rr r r testAttrListValues\rzMinidomTest.testAttrListValuescCsdSr!r rr r r testAttrListLength^rzMinidomTest.testAttrListLengthcCsdSr!r rr r r testAttrList__getitem__`rz#MinidomTest.testAttrList__getitem__cCsdSr!r rr r r testAttrList__setitem__brz#MinidomTest.testAttrList__setitem__cCsdSr!r rr r r testSetAttrValueandNodeValuedrz(MinidomTest.testSetAttrValueandNodeValuecCsdSr!r rr r r testParseElementfrzMinidomTest.testParseElementcCsdSr!r rr r r testParseAttributeshrzMinidomTest.testParseAttributescCsdSr!r rr r r testParseElementNamespacesjrz&MinidomTest.testParseElementNamespacescCsdSr!r rr r r testParseAttributeNamespaceslrz(MinidomTest.testParseAttributeNamespacescCsdSr!r rr r r testParseProcessingInstructionsnrz+MinidomTest.testParseProcessingInstructionscCsdSr!r rr r r testChildNodesprzMinidomTest.testChildNodescCsdSr!r rr r r testFirstChildrrzMinidomTest.testFirstChildcCs<td}|j}||td}|j}||dS)Nr=rQ)rr:r"rr+)r#rrrdoc2r r r testHasChildNodests 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) rglistkeyssortr%rangerGrrjrkrrri) r#e1e2r$Zattrs1Zattrs2Zkeys1Zkeys2irrr r r !_testCloneElementCopiesAttributes|s.          z-MinidomTest._testCloneElementCopiesAttributescCs^td}|j}||}|||d|r*dp,dd|_|_|dd|dd ||fS) NzZtestCloneElementZDeepZShallowZMODIFIEDattrz NEW VALUEZaddedZVALUE)rr: cloneNoderrr^rz)r#deeprrNcloner r r _setupCloneElements    zMinidomTest._setupCloneElementcCsR|d\}}|t|jdko@|jjdko@|jduo@|dkd|dS)NrztestCloneElementShallowrr%rGrDrH parentNoderKr2r#rrr r r rs  z#MinidomTest.testCloneElementShallowcCsR|d\}}|t|jdko@|jjdko@|jduo@|dkd|dS)Nr@ztestCloneElementDeeprrr r r rs  z MinidomTest.testCloneElementDeepcCs&td}|d}||duddS)N ]> rzFtestCloneDocumentShallow: shallow cloning of documents makes no sense!)rrr%r#rrr 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) 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) rrr%rrGrDr: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)Nr@r)rrr%r^namepublicIdsystemIdrGrrrrDrr notationNamerrr)r#r rrZseZceZsnZcnr r r testCloneDocumentTypeDeepOksj                         z'MinidomTest.testCloneDocumentTypeDeepOkcCs&t}|jd}||duddS)Nr@testCloneDocumentTypeDeepNotOkrr rr%r#rrr 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 rGrrrrD)r#r rr r r testCloneDocumentTypeShallowOks*         z*MinidomTest.testCloneDocumentTypeShallowOkcCs&t}|jd}||duddS)Nr!testCloneDocumentTypeShallowNotOkrrr r r rs z-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*td}td}|tjj|j||dS)NrQ)rrerrNotSupportedErr importNode)r#rtestNameZdoc1rr r r check_import_document sz!MinidomTest.check_import_documentcCs|dddS)NrtestImportDocumentShallowrrr r r rsz%MinidomTest.testImportDocumentShallowcCs|dddS)Nr@testImportDocumentDeeprrr r r rsz"MinidomTest.testImportDocumentDeepcCs(t}t}|tjj|j|jddSrrr rerrrrr r#srcrr r r testImportDocumentTypeShallows z)MinidomTest.testImportDocumentTypeShallowcCs(t}t}|tjj|j|jddSNr@rrr r r testImportDocumentTypeDeeps 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%rrirZ specified)r#rrrrrr r r check_clone_attribute&s    z!MinidomTest.check_clone_attributecCs|dddS)NrtestCloneAttributeShallowr!rr r r r"4sz%MinidomTest.testCloneAttributeShallowcCs|dddS)Nr@testCloneAttributeDeepr#rr r r r$7sz"MinidomTest.testCloneAttributeDeepcCsJtd}|j}||jtj||}||j|jkoB|j |j kdS)Nz) rrIrrrrrr%rr_)r#rrrrrr r r check_clone_pi:s  zMinidomTest.check_clone_picCs|dddS)NrtestClonePIShallowr%rr r r r&BszMinidomTest.testClonePIShallowcCs|dddS)Nr@testClonePIDeepr'rr r r r(EszMinidomTest.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 handleUs z;MinidomTest.check_clone_node_entity..Handler.handleN)__name__ __module__ __qualname__r-r r r r HandlerTsr1Zsmiler*r_T)ru%Don't let entities make you frown ☺r)rrrrstripr r setUserDatarrr:rIr&UserDataHandlerZ NODE_IMPORTEDrZ swap_attrZ NODE_CLONEDr)r*r_rrr+) r#Zclone_documentZdocumentr1handlerr rrr)r+r r r check_clone_node_entityHs,     *  z#MinidomTest.check_clone_node_entitycCs|d|ddS)NFT)r6rr r r testCloneNodeEntityws 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) NrQfirstsecondr?ztestNormalize -- preparationr@ firstsecondztestNormalize -- resultrrz*testNormalize -- single empty node removed) rr:rTrSr%rGrDrH normalizerIrJr_r2r#rrNr 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) NrQr8r9rrAz1testNormalizeCombineAndNextSibling -- preparationr?r:z-testNormalizeCombinedAndNextSibling -- result)rr:rTrSrEr%rGrDrHr;rIr_rJrMrLr2r<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)NrQr8rr?z1testNormalizeDeleteWithPrevSibling -- preparationr@z,testNormalizeDeleteWithPrevSibling -- resultrr:rTrSr%rGrDrHr;rIr_rJrMrLr2r<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)NrQrr9r?z1testNormalizeDeleteWithNextSibling -- preparationr@z,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)NrQrrrAz1testNormalizeDeleteWithTwoSiblings -- preparationr?z,testNormalizeDeleteWithTwoSiblings -- result)rr:rTrErSr%rGrDrHr;rIrJrMrLr2r<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) NrQrr9Zfourthz,testNormalizeDeleteAndCombine -- preparationr@Z secondfourthz'testNormalizeDeleteAndCombine -- result)rr:rTrSr%rGrDrHr;rIrJr_rLrMr2r<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)tt2t3rrxr@Zx2Zx3rArCr?ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers) rr:rDrTrSr%rGrHr;r_rMrLr2r<r r r testNormalizeRecursions       z"MinidomTest.testNormalizeRecursioncCs8td}|jjd}||jtj||dS)Nz textr) rr:rDrrr TEXT_NODEr;r2)r#rrdr r r testBug07778845s  zMinidomTest.testBug0777884cCs>td}|j}d|jd_|||jdjduddS)Nz trr@r\z)Final child's .nextSibling should be None)rr:rDrkr;r%rMr#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#rrNrrdZelmr 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.testParentscCstd}|j}|d}||d|duo||dduo||jd|jduo||jd|jduo||jdjddud|dS)Nzrr@ztest NodeList.item())rrDr%rr2)r#rZchildrenZdocelemr r r testNodeListItembs zMinidomTest.testNodeListItemcCstd}||d||dd||dd||dd||d d d |ttd |dS) N$rs4z iso-8859-15s8rs;zutf-16u5s0Comment a va ? Trs bien ?)rrrKencodereUnicodeDecodeErrorr2r,r r r testEncodingsns,     zMinidomTest.testEncodingscCsttd}||d||jddd||jddd||jddd||ddd |dS) NrNrO)Z standaloneTu4Fu3rsE)rrrKr2r,r r r testStandalones" zMinidomTest.testStandalonec@seZdZdZddZdS)zMinidomTest.UserDataHandlerrcCs*|||d|||ddd|_dSr)r3calledr,r r r r-sz"MinidomTest.UserDataHandler.handleN)r.r/r0rTr-r r r r r4sr4cCs(t}|d}||ddu|ddd||ddu|ddd|ddd||ddk||ddk|ddd||ddu||ddk|}|dd||d}||jo|dduo|ddk|||dS)NrrR rB r@) rrEr%Z getUserDatar3r4rrTr2)r#rnr5cr r r testUserDatas.     zMinidomTest.testUserDatacCs@|tjj|j|ddtd}|tjj|j|tjjddS)Nhttp://xml.python.org/nsz xmlns:foorQrR)rerr NamespaceErr renameNoderZWrongDocumentErrr)r#rr'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 rmrvrZrX)rZrXhttp://xml.python.org/ns2zp:drp)r_rrZxmlns)rr:rgr\rrrr%r r^rrrrjr{rrrirrer[r]r2)r#rrOZattrmaprr 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) NrQrmrZrr_zp:crXr`r)rr:r\rrrr%rr^rrrrrr]r2rr r r testRenameElementsh       zMinidomTest.testRenameElementcCsLtjjtjjdd}|d}|tjj|j |tjjd| dS)NrcommentrR) rrrrr rr]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 arrmrabrXcabrcrrEyzZcabd)rr:rDrrrrGr*rTrSrFcreateCDATASectionr]rErbcreateProcessingInstruction removeChild)r#rrOrdsplittertext2rEr r r testWholeText<s8                    zMinidomTest.testWholeTextcCsHtd}|j}|j}||j|ud|||||j|uddS)NzzBefore replaceChild()zAfter replaceChild())rr:rIr%rrb)r#rrOrr r r testPatch1094164`s  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)NzadrrX)rr:rIrJrMrFrSri)rrOtext1rmrlr r r setupjsz/MinidomTest.testReplaceWholeText..setupz new contentrrArfrCrr?)ZreplaceWholeTextr*r%rGrD)r#rqrrOrprlrmrdr r r testReplaceWholeTextis"           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#rrOr)namesr rmr 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)Nzrrr^wan)rr:r{r%getElementByIdrrrZcreateAttributerjsetAttributeNoder\rrr)r#rrrra3r 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/ns1r_zrrr^rxry)rr:rr%rzrZsetIdAttributeNSrcreateAttributeNSrjr{r\rrrr#ZNS1ZNS2rrrrr|r 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%rzrZsetIdAttributeNoderrrjr{r\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!)poprrrGrDr^r+rrrrrrrr r r rr Z DOCUMENT_NODEr"r) r#rrstackZn1Zn2rZno1Zno2rrr r r assert_recursive_equalsD          z"MinidomTest.assert_recursive_equalcCsDtt}tdtjdD]&}t||}t|}|||qdS)Nr?r@)rsamplerpickleHIGHEST_PROTOCOLdumpsloadsr)r#rprotor(rr r r testPickledDocument3s   zMinidomTest.testPickledDocumentcCs"tt}t|}|||dSr!)rrcopydeepcopyrrr r r testDeepcopiedDocument:s z"MinidomTest.testDeepcopiedDocumentcCs(t}||d|t|jdS)Nzfoo--bar)r rTr]re ValueErrorrKr,r r r (testSerializeCommentNodeWithDoubleHyphen?sz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,td}t|}||jtjjkdS)Nz$ )rrKr%rrrrrr r r testEmptyXMLNSValueEs zMinidomTest.testEmptyXMLNSValuecCs8|tdtdWdn1s*0YdS)NzUnsupported syntaxzE)ZassertRaisesRegexrrrr r r !testExceptionOnSpacesInXMLNSValueKsz-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsftt}|jdd}|tjj|j|t |j }||j dt |j }| ||dkdS)NZTITLErr@) rr1r:r9rerrrrkrGrDr")r#rZ title_tagZnum_children_beforeZnum_children_afterr r r testDocRemoveChildOs  zMinidomTest.testDocRemoveChildcCstt}|dd}d|_dS)NrgrhZcrash)rr1rjrk)r#rrr r r "testProcessingInstructionNameErrorXs z.MinidomTest.testProcessingInstructionNameErrorcCs2d}t|}t}|||||dSNE)rioStringIOZwritexmlrgetvalue)r#xml_strroutputr r r test_minidom_attribute_order_s  z(MinidomTest.test_minidom_attribute_ordercCs d}t|}|||dSr)rrrKr#rrr r r "test_toxml_with_attributes_orderedfsz.MinidomTest.test_toxml_with_attributes_orderedcCs d}t|}||ddS)NrzG rrrrr r r (test_toprettyxml_with_attributes_orderedks  z4MinidomTest.test_toprettyxml_with_attributes_orderedcCs d}t|}||ddS)NC]]>zH ]]> rrr r r test_toprettyxml_with_cdatars  z'MinidomTest.test_toprettyxml_with_cdatacCsLd}t|}||ddjdt|}||ddjddS)Nrr'rz)rr*r9rIr)r#rZdom1rr r r test_cdata_parsing{s  zMinidomTest.test_cdata_parsingN)r )r.r/r0r%r*r-r6r8r<rPrYr[r`rarcrhrnrorprqrtryr~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrrrr r!r"r$r%r&r(r6r7r=r>r@rArBrDrFrHrJrKrLrMrRrSr4rYr]rarbrdrnrorrrwr}rrrrrrrrrrrrrrrr r r r r5s +      &         "/? M+ $ !$$ %          r__main__)N)rrrr$rZunittestZxml.dom.minidomrrrrrrZfindfiler1rr rrZTestCaserr.mainr r r r s6   Y