HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_minidom.cpython-37.opt-2.pyc
B

��gA�@s�ddlZddlZddlmZddlZddlZddlmZmZm	Z	m
Z
ddlmZejddd�Z
dZdd	d
�Zdd�Zd
d�ZGdd�dej�Zedkr�e��dS)�N)�support)�parse�Node�Document�parseString)�getDOMImplementationztest.xmlZxmltestdata)Zsubdira<?xml version='1.0' encoding='us-ascii'?>
<!DOCTYPE doc PUBLIC 'http://xml.python.org/public' 'http://xml.python.org/system' [
  <!ELEMENT e EMPTY>
  <!ENTITY ent SYSTEM 'http://xml.python.org/entity'>
]><doc attr='value'> text
<?pi sample?> <!-- comment --> <e/> </doc>cCst��dd|�S)N�doc)r�createDocument)�doctype�r�-/usr/local/lib/python3.7/test/test_minidom.py�create_doc_without_doctypesr
cCsxt��ddd�}g|j_g|j_tjj�ddd�}|jj�	|�tjj�
dddd�}d|_d|_d|_
|jj�	|�|S)	Nrzmy-notationz"http://xml.python.org/notations/myz	my-entityz!http://xml.python.org/entities/myz1.0zutf-8zus-ascii)rZcreateDocumentType�entitiesZ_seq�	notations�xml�dom�minidomZNotation�appendZEntity�version�encoding�actualEncoding)r
Znotation�entityrrr�create_nonempty_doctypesrcCs.t�}t|�}||j�d�_||j�d�_|S)Nr)rr
r�item�
ownerDocumentr)r
rrrr�create_doc_with_doctype-s
rc@sdeZdZ�ddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�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;�Zd<d=�Z d>d?�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�Z<dvdw�Z=dxdy�Z>dzd{�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�dDŽ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�ZsGd�d�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��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��dS(�MinidomTest�TestcCs|�||�dS)N)�
assertTrue)�self�testZtestnamerrr�confirm5szMinidomTest.confirmcCs"|j}|�||kd||f�dS)Nzlooking for %r, found %r)�	wholeTextr!)r�node�s�trrr�checkWholeText8szMinidomTest.checkWholeTextcCs"t�}|�|j�|�tj�dS)N)r�assertFalseZasync_)rrrrr�testDocumentAsyncAttr<sz!MinidomTest.testDocumentAsyncAttrc	Cs:ttd��&}t|�}|��|�t|t��WdQRXdS)N�rb)�open�tstfiler�unlinkr!�
isinstancer)r�filerrrr�testParseFromBinaryFileAsz#MinidomTest.testParseFromBinaryFilec	Cs>ttddd��&}t|�}|��|�t|t��WdQRXdS)N�rz
iso-8859-1)r)r*r+rr,r!r-r)rr.rrrr�testParseFromTextFileGsz!MinidomTest.testParseFromTextFilecCs0tt�}|�|�d�|j�d�k�|��dS)NZLI)rr+r!�getElementsByTagName�documentElementr,)rrrrr�testGetElementsByTagNameMsz$MinidomTest.testGetElementsByTagNamecCstd�}|j}|jd}|�d�}|�||�|�t|j�dko�|jjdko�|jd|ko�|j�d�|ko�|jd|ko�|j�d�|ko�|j	|ko�|j
|ko�|��dkd�|�d�}|�|d�|�t|j�dk�oJ|jjdk�oJ|jd|k�oJ|j�d�|k�oJ|jd|k�oJ|j�d�|k�oJ|j
|k�oJ|j|k�oJ|��d	kd�|�d
�}|�||�|�t|j�dk�o�|jjdk�o�|jd|k�o�|j�d�|k�o�|jd|k�o�|j�d�|k�o�|j
|k�o�|j|k�o�|��dkd�|��dS)
Nz<doc><foo/></doc>r�element��z<doc><element/><foo/></doc>z0testInsertBefore -- node properly placed in tree�z%<doc><element/><foo/><element/></doc>�bar�z+<doc><element/><foo/><bar/><element/></doc>)rr3�
childNodes�
createElement�insertBeforer!�len�lengthr�
firstChild�	lastChild�toxml�previousSibling�nextSiblingr,)rr�root�elemZnelemZnelem2rrr�testInsertBeforeSsR







zMinidomTest.testInsertBeforecCsrtd�}|�d�}|�d�}|�d�}|�d�}|j�|�|��}|�|�|�|�|�|�||||||fS)Nz<doc/>Zoriginal�foor9Zbat)r�createTextNoder3�appendChildZcreateDocumentFragment)rr�orig�c1�c2�c3�fragrrr�_create_fragment_test_nodes~s






z'MinidomTest._create_fragment_test_nodescCs�|��\}}}}}}|j�|d�|�t|jj�||||fkd�|��|��|��\}}}}}}|j�||�|�t|jj�||||fkd�|��|��dS)NzinsertBefore(<fragment>, None)zinsertBefore(<fragment>, orig))rPr3r=r!�tupler;r,)rrrKrLrMrNrOrrr�testInsertBeforeFragment�sz$MinidomTest.testInsertBeforeFragmentcCsVtt�}|j�|�d��|�|jjdjdk�|�|jjdjdk�|�	�dS)NZHello���z#comment)
rr+r3rJ�
createCommentr!r;�nodeName�datar,)rrrrr�testAppendChild�s
zMinidomTest.testAppendChildcCsT|��\}}}}}}|j�|�|�t|jj�||||fkd�|��|��dS)NzappendChild(<fragment>))rPr3rJr!rQr;r,)rrrKrLrMrNrOrrr�testAppendChildFragment�sz#MinidomTest.testAppendChildFragmentcCs\|��\}}}}}}|j�||�|��|�t|jj�|||fkd�|��|��dS)NzreplaceChild(<fragment>))rPr3�replaceChildr,r!rQr;)rrrKrLrMrNrOrrr�testReplaceChildFragment�sz$MinidomTest.testReplaceChildFragmentcCs�t�}|�d�}|�d�}|�tjj|j|�|�|�|�tjj|j||�|�tjj|j	||�|j
}|�tjj|j|�|�tjj|j|�|�|�|�
�dS)Nr5�text)rr<rI�assertRaisesrr�HierarchyRequestErrrJr=rY�
attributesZsetNamedItemZsetNamedItemNSr,)rrrFr[Znodemaprrr�testLegalChildren�s 



zMinidomTest.testLegalChildrencCs�t�}|�d�}|j}d|d<|�d�}|�|j|kd�|�|j|kd�|�|jdkd�|�|jdkd�|�	�|�	�dS)	Nr5r9rHrz-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
rr<r^rr!r�ownerElement�value�	nodeValuer,)rrrF�attrs�arrr�testNamedNodeMapSetItem�s

z#MinidomTest.testNamedNodeMapSetItemcCsBtt�}|�|�|�|�d��|�|jdj�|��dS)NrHrS)rr+r!rJrTr;r,)rrrrr�testNonZero�s

zMinidomTest.testNonZerocCs,tt�}|�|j�|��|�|j�dS)N)rr+rr;r,r')rrrrr�
testUnlink�szMinidomTest.testUnlinkc	Cs0tt��}|�|j�WdQRX|�|j�dS)N)rr+rr;r')rrrrr�testContext�s
zMinidomTest.testContextcCs.t�}|�|�d��|�|j�|��dS)N�abc)rrJr<r!r3r,)rrrrr�testElement�szMinidomTest.testElementcCsjtd�}|j}|�dd�|�|��dkd�|�d�}|�|j|kd�|�|j|jkd�|��dS)Nz<abc/>�spam�jam2z<abc spam="jam2"/>�testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement)	rr3�setAttributer!rB�getAttributeNoderr`r,)rr�elrdrrrrm�s
zMinidomTest.testAAAcCsFtd�}|j}|�dd�|�dd�|�|��dkd�|��dS)Nz<abc/>rk�jamrlz<abc spam="jam2"/>�testAAB)rr3rnr!rBr,)rrrprrrrr�szMinidomTest.testAABcCs�t�}|�|�d��}|�dd�|�|�d�dk�|�|jdjdk�|�dd�|�|�d�dk�|�|jdjdk�|�t|j�dk�|�dd�|�|�d�dk�|�|jdjdk�|�t|j�dk�|�	�dS)Nri�def�ghiZjklZmnor6Znewval)
rrJr<rnr!�getAttributer^rar>r,)rr�childrrr�testAddAttrszMinidomTest.testAddAttrcCsrt�}|�|�d��}|�t|j�dk�|�dd�|�t|j�dk�|jd=|�t|j�dk�|��dS)Nrirrsrtr7)rrJr<r!r>r^rnr,)rrrvrrr�testDeleteAttrszMinidomTest.testDeleteAttrcCstt�}|�|�d��}|�dd�|�t|j�dk�|�tj	j
|jd�|�d�|�t|j�dk�|��dS)Nrirsrtr7rHr)
rrJr<rnr!r>r^r\rr�NotFoundErrZremoveAttributer,)rrrvrrr�testRemoveAttr's
zMinidomTest.testRemoveAttrcCs�t�}|�|�dd��}|�ddd�|�ddd�|�tjj|jdd�|�	t
|j�dk�|�dd�|�	t
|j�d	k�|��dS)
Nzhttp://www.python.orgz
python:abczhttp://www.w3.orgzxmlns:pythonzpython:abcattrrHr6Zabcattrr7)
rrJ�createElementNS�setAttributeNSr\rrryZremoveAttributeNSr!r>r^r,)rrrvrrr�testRemoveAttrNS2szMinidomTest.testRemoveAttrNScCs�t�}|�|�d��}|�dd�|�t|j�dk�|�d�}|�t	j
j|jd�|�|�|�t|j�dko||�d�dk�t�}|�|�d��}|�d�}|�t	j
j|j|�|�
�dS)NrHrkrqr7r)rrJr<rnr!r>r^ror\rrryZremoveAttributeNoder,)rrrvr#�dom2�child2Znode2rrr�testRemoveAttributeNode@s 


z#MinidomTest.testRemoveAttributeNodecCs6t�}|�|�d��}|�dd�|�|�d��dS)NrHrkrq)rrJr<rnr!ZhasAttribute)rrrvrrr�testHasAttributeRs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)
Nz<abc/>rkrqr7ZbamZhamZspam2r6Zbam2)
rr3rnr!r>r^�setIdAttributerarbruro�isIdr,)rrrprrr�testChangeAttrXsD


zMinidomTest.testChangeAttrcCsdS)Nr)rrrr�testGetAttrList~szMinidomTest.testGetAttrListcCsdS)Nr)rrrr�testGetAttrValues�szMinidomTest.testGetAttrValuescCsdS)Nr)rrrr�testGetAttrLength�szMinidomTest.testGetAttrLengthcCs.t�}|�|�dd��}|�|�d�d�dS)Nzhttp://www.python.orgz
python:abc�missing�)rrJr{�assertEqualru)rrrvrrr�testGetAttribute�szMinidomTest.testGetAttributecCsvt�}|�|�dd��}|�ddd�|�|�dd�d�|�|�dd�d�|�|�d��}|�|�dd	�d�dS)
Nzhttp://www.python.orgz
python:abczhttp://www.w3.orgzxmlns:pythonZpython�otherr�rir�)rrJr{r|r�ZgetAttributeNSr<)rrrvrrrr�testGetAttributeNS�szMinidomTest.testGetAttributeNScCsdS)Nr)rrrr�testGetAttributeNode��z MinidomTest.testGetAttributeNodecCs|d}t|�}|�dd�}|�t|�dkol|djdkol|djdkol|djdkol|djdkol|djdk�|�	�dS)NzZ<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
        <minidom:myelem/>
        </foo>zhttp://pyxml.sf.net/minidomZmyelemr7rrzminidom:myelem)
r�getElementsByTagNameNSr!r>�namespaceURI�	localName�prefix�tagNamerUr,)r�drZelemsrrr�testGetElementsByTagNameNS�sz&MinidomTest.testGetElementsByTagNameNScCs"|�||�}|�t|�dk�dS)Nr)r�r!r>)rrZnsuriZlnameZnodelistrrr�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)Nz<doc/>z"http://xml.python.org/namespaces/aZ	localname�*Zsplatz3<doc xmlns="http://xml.python.org/splat"><e/></doc>zhttp://xml.python.org/splatz	not-therez#http://somewhere.else.net/not-there�e)rr�)rrrrr�+testGetEmptyNodeListFromElementsByTagNameNS�s




z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNScCs@t�}|�|�d��}t|�}t|�}|�||k�|��dS)Nri)rrJr<�repr�strr!r,)rrrp�string1�string2rrr�testElementReprAndStr�sz!MinidomTest.testElementReprAndStrcCs@t�}|�|�d��}t|�}t|�}|�||k�|��dS)Nri)rrJr<r�r�r!r,)rrrpr�r�rrr�testElementReprAndStrUnicode�sz(MinidomTest.testElementReprAndStrUnicodecCsPt�}|�|�dd��}t|�}t|�}|�||k�|�d|k�|��dS)Nzhttp://www.slashdot.orgz	slash:abc)rrJr{r�r�r!r,)rrrpr�r�rrr�testElementReprAndStrUnicodeNS�sz*MinidomTest.testElementReprAndStrUnicodeNScCsDt�}|�|�d��}|�dd�}|�t|�t|�k�|��dS)Nrirs)rrJr<rnr!r�r�r,)rrrpr#rrr�testAttributeRepr�s
zMinidomTest.testAttributeReprcCsdS)Nr)rrrr�testTextNodeRepr�r�zMinidomTest.testTextNodeReprcCs.d}t|�}|��}|��|�||k�dS)Nz <?xml version="1.0" ?><a b="c"/>)rrBr,r!)rr�r�domstrrrr�testWriteXML�s
zMinidomTest.testWriteXMLcCs:d}t|�}|jdd�}|��|�||�dd�k�dS)Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)Znewl�
)r�toprettyxmlr,r!�replace)rr�rr�rrr�testAltNewline�s
zMinidomTest.testAltNewlinecCs�d}|�td���|d�|�td���|d�|�td���|d�|�td���|d	�|�td
���|d�dS)Nz<?xml version="1.0" ?>
z<B>A</B>z	<B>A</B>
z<C>A<B>A</B></C>z<C>
	A
	<B>A</B>
</C>
z<C><B>A</B>A</C>z<C>
	<B>A</B>
	A
</C>
z<C><B>A</B><B>A</B></C>z<C>
	<B>A</B>
	<B>A</B>
</C>
z<C><B>A</B>A<B>A</B></C>z <C>
	<B>A</B>
	A
	<B>A</B>
</C>
)r�rr�)r�declrrr� test_toprettyxml_with_text_nodes�s



z,MinidomTest.test_toprettyxml_with_text_nodescCsVt�}|�d�}|�|�d��|�|�d��|�|�d}|�|��|d�dS)NrFZTEXTz<?xml version="1.0" ?>
z<elem>
	TEXT
	TEXT
</elem>
)rr<rJrIr�r�)rrrFr�rrr�)test_toprettyxml_with_adjacent_text_nodess


z5MinidomTest.test_toprettyxml_with_adjacent_text_nodescCsZxTdD]L}t|�}t|���}|�|�d�djd��|�d�djd���qWdS)N)z<B>A</B>z<A><B>C</B></A>�Br)rr�r�r2r;rB)rr�rr~rrr�/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
dko�|��o�t|j
�dko�|jdko�|jdko�|jdko�|jtjjk�dS)Nz<e><?mypi 	
 data 	
 ?></e>Zmypizdata 	
 r)rr3r@r!�targetrVrU�nodeTyper�PROCESSING_INSTRUCTION_NODEr^�
hasChildNodesr>r;rAr�r�rr�EMPTY_NAMESPACE)rr�pirrr�testProcessingInstructions






z%MinidomTest.testProcessingInstructioncCsdS)Nr)rrrr�testProcessingInstructionRepr$r�z)MinidomTest.testProcessingInstructionReprcCsdS)Nr)rrrr�testTextRepr&r�zMinidomTest.testTextReprcCsdS)Nr)rrrr�
testWriteText(r�zMinidomTest.testWriteTextcCsdS)Nr)rrrr�testDocumentElement*r�zMinidomTest.testDocumentElementcCs:td�}|�d�}|�tjj|j|�|��|��dS)Nz<doc/>Zextra)rr<r\rrr]rJr,)rrrFrrr�testTooManyDocumentElements,s

z'MinidomTest.testTooManyDocumentElementscCsdS)Nr)rrrr�testCreateElementNS4r�zMinidomTest.testCreateElementNScCsdS)Nr)rrrr�testCreateAttributeNS6r�z!MinidomTest.testCreateAttributeNScCsdS)Nr)rrrr�	testParse8r�zMinidomTest.testParsecCsdS)Nr)rrrr�testParseString:r�zMinidomTest.testParseStringcCsdS)Nr)rrrr�testComment<r�zMinidomTest.testCommentcCsdS)Nr)rrrr�testAttrListItem>r�zMinidomTest.testAttrListItemcCsdS)Nr)rrrr�testAttrListItems@r�zMinidomTest.testAttrListItemscCsdS)Nr)rrrr�testAttrListItemNSBr�zMinidomTest.testAttrListItemNScCsdS)Nr)rrrr�testAttrListKeysDr�zMinidomTest.testAttrListKeyscCsdS)Nr)rrrr�testAttrListKeysNSFr�zMinidomTest.testAttrListKeysNScCsPtd�}|j}|j}|�d�}|�d�}|�|�|��|�tj	j
|jd�dS)Nz<doc a=''/>rd)rr3r^roZremoveNamedItemr!�
isSameNoder\rrry)rrr�rc�a1�a2rrr�testRemoveNamedItemHs

zMinidomTest.testRemoveNamedItemcCsVtd�}|j}|j}|�dd�}|�dd�}|�|�|��|�tj	j
|jdd�dS)Nz.<doc xmlns:a='http://xml.python.org/' a:b=''/>zhttp://xml.python.org/�b)rr3r^�getAttributeNodeNSZremoveNamedItemNSr!r�r\rrry)rrr�rcr�r�rrr�testRemoveNamedItemNSQsz!MinidomTest.testRemoveNamedItemNScCsdS)Nr)rrrr�testAttrListValues[r�zMinidomTest.testAttrListValuescCsdS)Nr)rrrr�testAttrListLength]r�zMinidomTest.testAttrListLengthcCsdS)Nr)rrrr�testAttrList__getitem___r�z#MinidomTest.testAttrList__getitem__cCsdS)Nr)rrrr�testAttrList__setitem__ar�z#MinidomTest.testAttrList__setitem__cCsdS)Nr)rrrr�testSetAttrValueandNodeValuecr�z(MinidomTest.testSetAttrValueandNodeValuecCsdS)Nr)rrrr�testParseElementer�zMinidomTest.testParseElementcCsdS)Nr)rrrr�testParseAttributesgr�zMinidomTest.testParseAttributescCsdS)Nr)rrrr�testParseElementNamespacesir�z&MinidomTest.testParseElementNamespacescCsdS)Nr)rrrr�testParseAttributeNamespaceskr�z(MinidomTest.testParseAttributeNamespacescCsdS)Nr)rrrr�testParseProcessingInstructionsmr�z+MinidomTest.testParseProcessingInstructionscCsdS)Nr)rrrr�testChildNodesor�zMinidomTest.testChildNodescCsdS)Nr)rrrr�testFirstChildqr�zMinidomTest.testFirstChildcCs<td�}|j}|�|���td�}|j}|�|���dS)Nz<doc><foo/></doc>z<doc/>)rr3rr�r')rrrr~�doc2rrr�testHasChildNodessszMinidomTest.testHasChildNodescCs�|j}|j}t|���}t|���}|��|��|�||kd�xztt|��D]j}|�|�}	|�|�}
|�|	|
k	o�|	j|
jko�|	j	|
j	ko�|	j
|
j
ko�|	j|
jkd�|�|
j|kd�qRWdS)Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)
r^�list�keys�sortr!�ranger>rrarbr�r�r`)r�e1�e2r Zattrs1Zattrs2Zkeys1Zkeys2�ir�r�rrr�!_testCloneElementCopiesAttributes{s$


z-MinidomTest._testCloneElementCopiesAttributescCs^td�}|j}|�|�}|�||d|r*dp,d�d|_|_|�dd�|�dd	�||fS)
Nz<doc attr='value'><foo/></doc>ZtestCloneElementZDeepZShallowZMODIFIED�attrz	NEW VALUEZaddedZVALUE)rr3�	cloneNoder�r�rUrn)r�deeprrE�clonerrr�_setupCloneElement�s
zMinidomTest._setupCloneElementcCsR|�d�\}}|�t|j�dko@|jjdko@|jdko@|��dkd�|��dS)Nrz<doc attr="value"/>�testCloneElementShallow)r�r!r>r;r?�
parentNoderBr,)rrr�rrrr��s

z#MinidomTest.testCloneElementShallowcCsR|�d�\}}|�t|j�dko@|jjdko@|jdko@|��dkd�|��dS)Nr7z<doc attr="value"><foo/></doc>�testCloneElementDeep)r�r!r>r;r?r�rBr,)rrr�rrrr��s

z MinidomTest.testCloneElementDeepcCs&td�}|�d�}|�|dkd�dS)Nz�<?xml version='1.0'?>
<!-- comment --><!DOCTYPE doc [
<!NOTATION notation SYSTEM 'http://xml.python.org/'>
]>
<doc attr='value'/>rzFtestCloneDocumentShallow: shallow cloning of documents makes no sense!)rr�r!)rrr�rrr�testCloneDocumentShallow�s

z$MinidomTest.testCloneDocumentShallowcCs�td�}|�d�}|�|�|�p(|�|�d�|�t|j�t|j�kd�|�|jjtj	kd�|�|jj
�|�d�|�|j�|j�d�|jdk	r�|�|jjtjkd�|�|jj
�|��|�|j�|j��dS)	Nz�<?xml version='1.0'?>
<!-- comment --><!DOCTYPE doc [
<!NOTATION notation SYSTEM 'http://xml.python.org/'>
]>
<doc attr='value'/>r7z4testCloneDocumentDeep: 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�r>r;r3r�rZELEMENT_NODErr
�DOCUMENT_TYPE_NODE)rrr�rrr�testCloneDocumentDeep�s"

z!MinidomTest.testCloneDocumentDeepcCs�t�}|�d�}|�|dk	o�|j|jko�|j|jko�|j|jko�|j|jko�t|j�t|j�ko�|j�	t|j��dko�t|j
�t|j
�ko�|j
�	t|j
��dko�t|j�dk�x�tt|j��D]�}|j�	|�}|j�	|�}|�|�
|��oZ|�
|��oZ|j|jk�oZ|j|jk�oZ|j|jk�oZ|j|jk�oZ|j|jk�oZ|j|jk�oZ|j|jk�q�Wxztt|j
��D]h}|j
�	|�}|j
�	|�}|�|�
|��o�|�
|��o�|j|jk�o�|j|jk�o�|j|jk��qrWdS)Nr7r)rr�r!rU�name�publicId�systemIdr>rrrr;r�r��notationNamerrr)rr
r�r�ZseZceZsnZcnrrr�testCloneDocumentTypeDeepOk�s@
z'MinidomTest.testCloneDocumentTypeDeepOkcCs&t�}|j�d�}|�|dkd�dS)Nr7�testCloneDocumentTypeDeepNotOk)rr
r�r!)rrr�rrrr��sz*MinidomTest.testCloneDocumentTypeDeepNotOkcCs�t�}|�d�}|�|dk	o�|j|jko�|j|jko�|j|jko�|j|jko�t|j�dko�|j�	d�dko�t|j
�dko�|j
�	d�dko�t|j�dk�dS)Nr)rr�r!rUr�r�r�r>rrrr;)rr
r�rrr�testCloneDocumentTypeShallowOk�s
z*MinidomTest.testCloneDocumentTypeShallowOkcCs&t�}|j�d�}|�|dkd�dS)Nr�!testCloneDocumentTypeShallowNotOk)rr
r�r!)rrr�rrrr�sz-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*td�}td�}|�tjj|j||�dS)Nz<doc/>)rr\rr�NotSupportedErr�
importNode)rr��testNameZdoc1r�rrr�check_import_documentsz!MinidomTest.check_import_documentcCs|�dd�dS)Nr�testImportDocumentShallow)r�)rrrrr�sz%MinidomTest.testImportDocumentShallowcCs|�dd�dS)Nr7�testImportDocumentDeep)r�)rrrrr�sz"MinidomTest.testImportDocumentDeepcCs(t�}t�}|�tjj|j|jd�dS)Nr)rr
r\rrr�r�r
)r�srcr�rrr�testImportDocumentTypeShallowsz)MinidomTest.testImportDocumentTypeShallowcCs(t�}t�}|�tjj|j|jd�dS)Nr7)rr
r\rrr�r�r
)rr�r�rrr�testImportDocumentTypeDeepsz&MinidomTest.testImportDocumentTypeDeepcCs�td�}|j�d�}|�|d�|�|�}|�|�|��|�|�|��|�|jdk|d�|�|j�|j�|d�|�|j	|d�dS)Nz<doc attr='value'/>r�z: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
rr3roZassertNotEqualr�r!r�r`rZ	specified)rr�r�rr�r�rrr�check_clone_attribute%s


z!MinidomTest.check_clone_attributecCs|�dd�dS)Nr�testCloneAttributeShallow)r�)rrrrr�3sz%MinidomTest.testCloneAttributeShallowcCs|�dd�dS)Nr7�testCloneAttributeDeep)r�)rrrrr6sz"MinidomTest.testCloneAttributeDeepcCsJtd�}|j}|�|jtj�|�|�}|�|j|jkoB|j	|j	k�dS)Nz<?target data?><doc/>)
rr@r�r�rr�r�r!r�rV)rr�r�rr�r�rrr�check_clone_pi9s
zMinidomTest.check_clone_picCs|�dd�dS)Nr�testClonePIShallow)r)rrrrrAszMinidomTest.testClonePIShallowcCs|�dd�dS)Nr7�testClonePIDeep)r)rrrrrDszMinidomTest.testClonePIDeepc
	Cstjj�d���}Gdd�d�}|�}|j}|jd}|�dd|�|r~|jdd�}|�	|j
jjd	�tjj
j}|jjd}	n:t�|d
d��|jdd�}WdQRXtjj
j}|jd}	|�	|j|�|�	|jd�|�	|jd�|�|j|�|�|j|	�dS)Nu
            <?xml version="1.0" ?>
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                "http://www.w3.org/TR/html4/strict.dtd"
                [ <!ENTITY smile "☺"> ]
            >
            <doc>Don't let entities make you frown &smile;</doc>
        c@seZdZdd�ZdS)z4MinidomTest.check_clone_node_entity.<locals>.HandlercSs"||_||_||_||_||_dS)N)�	operation�keyrVr��dst)rrrrVr�rrrr�handleTs
z;MinidomTest.check_clone_node_entity.<locals>.Handler.handleN)�__name__�
__module__�__qualname__rrrrr�HandlerSsrZsmilerrVT)r�u%Don't let entities make you frown ☺r)rrrr�stripr
r�setUserDatar�r�r3r@r"�UserDataHandlerZ
NODE_IMPORTEDrZ	swap_attrZNODE_CLONEDrrrVZassertIsr�r)
rZclone_documentZdocumentr�handlerr
rr�rrrrr�check_clone_node_entityGs,




z#MinidomTest.check_clone_node_entitycCs|�d�|�d�dS)NFT)r)rrrr�testCloneNodeEntityvs
zMinidomTest.testCloneNodeEntitycCs�td�}|j}|�|�d��|�|�d��|�t|j�dkoJ|jjdkd�|��|�t|j�dko�|jjdko�|j	|j
ko�|j	jdkd�|��td�}|j}|�|�d	��|��|�t|j�d
ko�|jjd
kd�|��dS)Nz<doc/>�first�secondr6ztestNormalize -- preparationr7�firstsecondztestNormalize -- resultr�rz*testNormalize -- single empty node removed)
rr3rJrIr!r>r;r?�	normalizer@rArVr,)rrrErrr�
testNormalizezs,


zMinidomTest.testNormalizecCs�td�}|j}|�|�d��|�|�d��|�|�d��|�t|j�dkoZ|jjdkd�|�	�|�t|j�dko�|jjdko�|j
jdko�|j
|jk	o�|j
j
|jko�|j
jdko�|jj|j
ko�|jj
dkd	�|��dS)
Nz<doc/>rrr�r8z1testNormalizeCombineAndNextSibling -- preparationr6rz-testNormalizeCombinedAndNextSibling -- result)rr3rJrIr<r!r>r;r?rr@rVrArDrCr,)rrrErrr�"testNormalizeCombineAndNextSibling�s&

z.MinidomTest.testNormalizeCombineAndNextSiblingcCs�td�}|j}|�|�d��|�|�d��|�t|j�dkoJ|jjdkd�|��|�t|j�dko�|jjdko�|j	j
dko�|j	|jko�|j	jdko�|j	j
dkd�|��dS)Nz<doc/>rr�r6z1testNormalizeDeleteWithPrevSibling -- preparationr7z,testNormalizeDeleteWithPrevSibling -- result)rr3rJrIr!r>r;r?rr@rVrArDrCr,)rrrErrr�"testNormalizeDeleteWithPrevSibling�s 

z.MinidomTest.testNormalizeDeleteWithPrevSiblingcCs�td�}|j}|�|�d��|�|�d��|�t|j�dkoJ|jjdkd�|��|�t|j�dko�|jjdko�|j	j
dko�|j	|jko�|j	jdko�|j	j
dkd�|��dS)Nz<doc/>r�rr6z1testNormalizeDeleteWithNextSibling -- preparationr7z,testNormalizeDeleteWithNextSibling -- result)rr3rJrIr!r>r;r?rr@rVrArDrCr,)rrrErrr�"testNormalizeDeleteWithNextSibling�s 

z.MinidomTest.testNormalizeDeleteWithNextSiblingcCs�td�}|j}|�|�d��|�|�d��|�|�d��|�t|j�dkoZ|jjdkd�|�	�|�t|j�dko�|jjdko�|j
|jk	o�|j
j|jko�|j
j
dko�|jj
|j
ko�|jjdkd�|��dS)Nz<doc/>r�r�r8z1testNormalizeDeleteWithTwoSiblings -- preparationr6z,testNormalizeDeleteWithTwoSiblings -- result)rr3rJr<rIr!r>r;r?rr@rArDrCr,)rrrErrr�)testNormalizeDeleteWithTwoNonTextSiblings�s$

z5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblingscCs�td�}|j}|�|�d��|�|�d��|�|�d��|�|�d��|�|�d��|�t|j�dkoz|jjdkd�|��|�t|j�dko�|jjdko�|j	|j
ko�|j	jdko�|j	jdko�|j	j
dkd	�|��dS)
Nz<doc/>r�rZfourth�z,testNormalizeDeleteAndCombine -- preparationr7Zsecondfourthz'testNormalizeDeleteAndCombine -- result)rr3rJrIr!r>r;r?rr@rArVrCrDr,)rrrErrr�testNormalizeDeleteAndCombine�s&

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
dk�o$|jdjdj|jdjdk�o$|jdjdjdk�o$|jdjdj
|jdjdk�o$|jdjdj
dk�o$|jdjdj|jdjdk�o$|jdjdjdk�o$|jdjdj
|jdjdkd�|��dS)Nz)<doc><o><i/>t</o><o><o>t2</o>t3</o></doc>rr��xr7Zx2Zx3r8r:r6ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)
rr3r;rJrIr!r>r?rrVrDrCr,)rrrErrr�testNormalizeRecursion�sXz"MinidomTest.testNormalizeRecursioncCs8td�}|jjd}|�|jtj�|��|��dS)Nz<o>text</o>r)	rr3r;r�r�r�	TEXT_NODErr,)rrr[rrr�testBug07778844s
zMinidomTest.testBug0777884cCs>td�}|j}d|jd_|��|�|jdjdkd�dS)Nz<o><i/>t</o>r�r7rSz)Final child's .nextSibling should be None)rr3r;rbrr!rD)rrr#rrr�testBug1433694<szMinidomTest.testBug1433694cCsjtd�}|j}|j\}}}|�|j|koX|jdkoX|j|koX|j|koX|jdkoX|j|kd�|��dS)Nz<doc><?pi?>text?<elm/></doc>�testSiblings)rr3r;r!rDrCr,)rrrEr�r[Zelmrrrr"Ds



zMinidomTest.testSiblingscCsrtd�}|j}|jd}|j\}}|jd}|�|j|ko`|j|ko`|j|ko`|j|ko`|j|kd�|��dS)Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r�testParents)rr3r;r!r�r,)rrrEZelm1Zelm2aZelm2bZelm3rrrr#Rs





zMinidomTest.testParentscCs�td�}|j}|d}|�|d|�d�ko||�d�dko||j�d�|jdko||j�d�|jdko||j�d�j�d�dkd�|��dS)Nz<doc><e/><e/></doc>rr7ztest NodeList.item())rr;r!rr,)rrZchildrenZdocelemrrr�testNodeListItemaszMinidomTest.testNodeListItemcCs�td�}|�|��d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d	�d
�d	��|�ttd�|��dS)Nz<foo>&#x20ac;</foo>u$<?xml version="1.0" ?><foo>€</foo>zutf-8s4<?xml version="1.0" encoding="utf-8"?><foo>€</foo>ziso-8859-15s8<?xml version="1.0" encoding="iso-8859-15"?><foo>�</foo>zus-asciis;<?xml version="1.0" encoding="us-ascii"?><foo>&#8364;</foo>zutf-16u5<?xml version="1.0" encoding="utf-16"?><foo>€</foo>s0<fran�ais>Comment �a va ? Tr�s bien ?</fran�ais>)rr�rB�encoder\�UnicodeDecodeErrorr,)rrrrr�
testEncodingsms
zMinidomTest.testEncodingsc@seZdZdZdd�ZdS)zMinidomTest.UserDataHandlerrcCs*|�||d|�|�|dd�d|_dS)Nr7)r
�called)rrrrVr�rrrrr�sz"MinidomTest.UserDataHandler.handleN)rr	r
r(rrrrrr�srcCs(t�}|�d�}|�|�d�dk�|�ddd�|�|�d�dk�|�ddd�|�ddd�|�|�d�dk�|�|�d�dk�|�ddd�|�|�d�dk�|�|�d�dk�|��}|�dd|�|�d�}|�|j�o|�d�dk�o|�d�dk�|��|��|��dS)Nr�rH�r9�
r7)	rr<r!ZgetUserDatar
rr�r(r,)rr�nr�crrr�testUserData�s*

zMinidomTest.testUserDatacCs@|�tjj|j|dd�td�}|�tjj|j|tjjd�dS)Nzhttp://xml.python.org/nsz	xmlns:fooz<doc/>rH)r\rr�NamespaceErr�
renameNoderZWrongDocumentErrr�)rrr#r�rrr� checkRenameNodeSharedConstraints�s
z,MinidomTest.checkRenameNodeSharedConstraintscCsbtd�}|j}|j}|jd}|�|tjjd�}|�|jdko�|j	dko�|j
dko�|jtjjko�|jdko�|j
dko�|�d�dko�|�d��|�o�|d�|�o�|j�|�o�|j�|��|�|dd�}|�|jdk�ov|j	dk�ov|j
dk�ov|jdk�ov|jdk�ov|j
dk�ov|�d�dk�ov|�d�dk�ov|�d��|��ov|�dd��|��ov|d�|��ov|d�|��|�|dd	�}|�|jd	k�oX|j	d	k�oX|j
d
k�oX|jdk�oX|jdk�oX|j
dk�oX|�d�dk�oX|�d�dk�oX|�d�dk�oX|�dd�dk�oX|�d	��|��oX|�dd
��|��oX|d	�|��oX|d�|��|�|tjjd
�}|�|jd
k�o.|j	d
k�o.|j
dk�o.|jtjjk�o.|jdk�o.|j
dk�o.|�d�dk�o.|�d�dk�o.|�d�dk�o.|�d	�dk�o.|�dd�dk�o.|�d
��|��o.|d
�|��|�tjj|j|dd�|�||�|��dS)Nz<doc a='v'/>rdr��vzhttp://xml.python.org/nsr,)zhttp://xml.python.org/nsr,zhttp://xml.python.org/ns2zp:dr��p)zhttp://xml.python.org/ns2r�r�Zxmlns)rr3r^r/rrr�r!r�rUr�r�r�raror�rr`r�r\r.r0r,)rrrFZattrmapr�rrr�testRenameAttribute�s�




zMinidomTest.testRenameAttributecCs�td�}|j}|�|tjjd�}|�|jdkod|jdkod|j	dkod|j
tjjkod|jdkod|j�
|��|�|dd�}|�|jdko�|jdko�|j	dko�|j
dko�|jdko�|j�
|��|�|dd�}|�|jdk�o|jdk�o|j	dk�o|j
dk�o|jdk�o|j�
|��|�|tjjd	�}|�|jd	k�ov|jd	k�ov|j	dk�ov|j
tjjk�ov|jdk�ov|j�
|��|�||�|��dS)
Nz<doc/>rdzhttp://xml.python.org/nsr�zhttp://xml.python.org/ns2zp:cr,r2r�)rr3r/rrr�r!r�rUr�r�r�rr�r0r,)rrrFrrr�testRenameElement�s@






zMinidomTest.testRenameElementcCsLtjj���tjjdd�}|�d�}|�tjj|j	|tjjd�|�
�dS)Nr��commentrH)rrrrr	r�rTr\r�r/r,)rrr#rrr�testRenameOther!s
zMinidomTest.testRenameOthercCs:td�}|j}|jd}|�|jtj�|�|d�|�|�	d��|�|d�|�
|�d�|�|�|d�|�d�}|�|�|�	d	�}|�|�|�|d�|�|d	�|�
d
�}|�||�|}|�|d�|�|d	�|�dd�}|�||�|}|�|d�|�|d	�|�|�|�|d
�|�|d
�dS)Nz<doc>a</doc>rrdr�Zabr,�cabr5r�r�y�zZcabd)rr3r;r�r�rrr&rJrIr=�createCDATASectionrTr<rY�createProcessingInstruction�removeChild)rrrFr[�splitter�text2rrrr�
testWholeText+s8






zMinidomTest.testWholeTextcCsHtd�}|j}|j}|�|j|kd�|�||�|�|j|kd�dS)Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())rr3r@r!r�rY)rrrFr�rrr�testPatch1094164OszMinidomTest.testPatch1094164cCs�dd�}|�\}}}}}|�d�}|�|d�|�|d�|�t|j�dk�|�\}}}}}|�d�}|�|d�|�|d�|�t|j�dk�|�\}}}}}|�d�}|�|d�|�|dko�t|j�d	k�dS)
NcSsRtd�}|j}|j}|j}|j}|�|�d�|�|�|�d�|�|||||fS)Nz<doc>a<e/>d</doc>r�r,)rr3r@rArDr=rIr:)rrF�text1r>r=rrr�setupYsz/MinidomTest.testReplaceWholeText.<locals>.setupznew contentr�r8r7rr�r6)ZreplaceWholeTextr&r!r>r;)rrBrrFrAr=r>r[rrr�testReplaceWholeTextXs 



z MinidomTest.testReplaceWholeTextcCsztd�}|j}|j}|�|jdko.|jtjjk�d�	�}x:|D]2}|�
|�}|j}|�t|d�on|jtjjk�q@WdS)Nal<!DOCTYPE doc [
  <!ENTITY e1 SYSTEM 'http://xml.python.org/e1'>
  <!ENTITY e2 SYSTEM 'http://xml.python.org/e2'>
  <!ATTLIST doc id   ID       #IMPLIED 
                ref  IDREF    #IMPLIED 
                refs IDREFS   #IMPLIED 
                enum (a|b)    #IMPLIED 
                ent  ENTITY   #IMPLIED 
                ents ENTITIES #IMPLIED 
                nm   NMTOKEN  #IMPLIED 
                nms  NMTOKENS #IMPLIED 
                text CDATA    #IMPLIED 
    >
]><doc id='name' notid='name' text='splat!' enum='b'       ref='name' refs='name name' ent='e1' ents='e1 e2'       nm='123' nms='123 abc' />z+id notid text enum ref refs ent ents nm nmsr�)rr3Z
schemaTyper!r��	namespacerrr��splitro�hasattr)rrrFr%�namesr�rdrrr�testSchemaTypeus

zMinidomTest.testSchemaTypecCs@td�}|j}|�d�}|�d�}|�|�d�dkoB|joB|j�|�d�|�|�|�d��op|jop|j�|�d�|�|�|�d��o�|�|�d��o�|jo�|j�|�d�}d|_	|�
|�|�|�d�dk�o|�|�d���o|j�o|j�o|j�|�|tj
jd�|�|�|�d���o8|j�dS)Nz<doc a1='v' a2='w'/>r�r�r1�w�an)rr3ror!�getElementByIdr�r�r�ZcreateAttributera�setAttributeNoder/rrr�)rrr�r�r��a3rrr�testSetIdAttribute�s6









zMinidomTest.testSetIdAttributecCsrd}d}td|d|d�}|j}|�|d�}|�|d�}|�|�d�dko^|jo^|j�|�|d�|�|�|�d��o�|jo�|j�|�|d�|�|�|�d��o�|�|�d	��o�|jo�|j�|�|d�}d|_	|�
|�|�|�|�d	���|�|j�|�|j�|�|j�|�|�d�dk�|�|tj
jd
�|�|�|�d	���oj|j�dS)Nzhttp://xml.python.org/ns1zhttp://xml.python.org/ns2z<doc xmlns:ns1='z
' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>r�r�r1rIrJ)rr3r�r!rKr�ZsetIdAttributeNSr��createAttributeNSrarLr/rrr�)r�NS1�NS2rr�r�r�rMrrr�testSetIdAttributeNS�s<


z MinidomTest.testSetIdAttributeNScCsnd}d}td|d|d�}|j}|�|d�}|�|d�}|�|�d�dko^|jo^|j�|�|�|�|�|�d��o�|jo�|j�|�|�|�|�|�d��o�|�|�d	��o�|jo�|j�|�|d�}d|_	|�
|�|�|�|�d	���|�|j�|�|j�|�|j�|�|�d�dk�|�|tj
jd
�|�|�|�d	���of|j�dS)Nzhttp://xml.python.org/ns1zhttp://xml.python.org/ns2z<doc xmlns:ns1='z
' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>r�r�r1rIrJ)rr3r�r!rKr�ZsetIdAttributeNoder�rOrarLr/rrr�)rrPrQrr�r�r�rMrrr�testSetIdAttributeNode�s<




z"MinidomTest.testSetIdAttributeNodecCs*||fg}�x|�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��xltt|j��D]Z}|j�
|�}|j�
|�}|�|j|j�|�|j|j�|�|j|j�|�||f�q�Wxntt|j
��D]\}|j
�
|�}	|j
�
|�}
|�|	j|
j�|�|	j|
j�|�|	j|
j�|�|	|
f��q\W|jtjk�r�|�|j�|��|�|j�|��x2tt|j��D] }|�|j||j|f��q�WqWdS)N)�popr�r�r>r;rUr'r�rr�rrr�rr�r�r�rr�Z
DOCUMENT_NODErr)rrr��stackZn1Zn2r�Zno1Zno2r�r�rrr�assert_recursive_equal�sD





z"MinidomTest.assert_recursive_equalcCsHtt�}x:tdtjd�D]&}t�||�}t�|�}|�||�qWdS)Nr6r7)r�sampler��pickleZHIGHEST_PROTOCOL�dumps�loadsrV)rr�protor$r�rrr�testPickledDocument"s

zMinidomTest.testPickledDocumentcCs"tt�}t�|�}|�||�dS)N)rrW�copyZdeepcopyrV)rrr�rrr�testDeepcopiedDocument)s
z"MinidomTest.testDeepcopiedDocumentcCs(t�}|�|�d��|�t|j�dS)Nzfoo--bar)r
rJrTr\�
ValueErrorrB)rrrrr�(testSerializeCommentNodeWithDoubleHyphen.sz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,td�}t|���}|�|jtjjk�dS)Nz$<element xmlns=''>
<foo/>
</element>)rrBr!r�rrr�)rrr�rrr�testEmptyXMLNSValue4szMinidomTest.testEmptyXMLNSValuec	Cs$|�td��td�WdQRXdS)NzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)ZassertRaisesRegexr_r)rrrr�!testExceptionOnSpacesInXMLNSValue:sz-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsftt�}|j�d�d}|�tjj|j|�t	|j
�}|�|j
d�t	|j
�}|�||dk�dS)NZTITLErr7)rr+r3r2r\rrryr<r>r;r)rrZ	title_tagZnum_children_beforeZnum_children_afterrrr�testDocRemoveChild>s

zMinidomTest.testDocRemoveChildcCstt�}|�dd�}d|_dS)Nr8r9Zcrash)rr+r;rb)rrr�rrr�"testProcessingInstructionNameErrorGsz.MinidomTest.testProcessingInstructionNameErrorN)r)�rr	r
r!r&r(r/r1r4rGrPrRrWrXrZr_rerfrgrhrjrmrrrwrxrzr}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�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrrrrr r!r"r#r$r'rr-r0r3r4r6r?r@rCrHrNrRrSrVr\r^r`rarbrcrdrrrrr4s+
		&
		
		"/?M+
$	!$$%	r�__main__)N)r]rXr rZunittestZxml.dom.minidomrrrrrrZfindfiler+rWr
rrZTestCaserr�mainrrrr�<module>s4
&