Your IP : 216.73.216.196


Current Path : /opt/alt/python37/lib64/python3.7/test/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/test/__pycache__/test_minidom.cpython-37.opt-1.pyc

B

� fL�@s�ddlZddlZddlmZddlZddlZddlZddlmZm	Z	m
Z
mZddlmZddl
mZejddd�Zd	Zdd
d�Zdd
�Zdd�ZGdd�dej�Zedkr�e��dS)�N)�support)�parse�Node�Document�parseString)�getDOMImplementation)�
ExpatErrorztest.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�6/opt/alt/python37/lib64/python3.7/test/test_minidom.py�create_doc_without_doctypesrcCsxt��ddd�}g|j_g|j_tjj�ddd�}|jj�	|�tjj�
dddd�}d|_d|_d|_
|jj�	|�|S)	Nr	zmy-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)rZnotation�entityrrr
�create_nonempty_doctypesrcCs.t�}t|�}||j�d�_||j�d�_|S)Nr)rrr�item�
ownerDocumentr)rr	rrr
�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�testZtestnamerrr
�confirm7szMinidomTest.confirmcCs"|j}|�||kd||f�dS)Nzlooking for %r, found %r)�	wholeTextr")r �node�s�trrr
�checkWholeText:szMinidomTest.checkWholeTextcCs"t�}|�|j�|�tj�dS)N)r�assertFalseZasync_)r r	rrr
�testDocumentAsyncAttr>sz!MinidomTest.testDocumentAsyncAttrc	Cs:ttd��&}t|�}|��|�t|t��WdQRXdS)N�rb)�open�tstfiler�unlinkr"�
isinstancer)r �filerrrr
�testParseFromBinaryFileCsz#MinidomTest.testParseFromBinaryFilec	Cs>ttddd��&}t|�}|��|�t|t��WdQRXdS)N�rz
iso-8859-1)r)r+r,rr-r"r.r)r r/rrrr
�testParseFromTextFileIsz!MinidomTest.testParseFromTextFilecCs0tt�}|�|�d�|j�d�k�|��dS)NZLI)rr,r"�getElementsByTagName�documentElementr-)r rrrr
�testGetElementsByTagNameOs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>)rr4�
childNodes�
createElement�insertBeforer"�len�lengthr�
firstChild�	lastChild�toxml�previousSibling�nextSiblingr-)r r�root�elemZnelemZnelem2rrr
�testInsertBeforeUsR







zMinidomTest.testInsertBeforecCsrtd�}|�d�}|�d�}|�d�}|�d�}|j�|�|��}|�|�|�|�|�|�||||||fS)Nz<doc/>Zoriginal�foor:Zbat)r�createTextNoder4�appendChildZcreateDocumentFragment)r r�orig�c1�c2�c3�fragrrr
�_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))rQr4r>r"�tupler<r-)r rrLrMrNrOrPrrr
�testInsertBeforeFragment�sz$MinidomTest.testInsertBeforeFragmentcCsVtt�}|j�|�d��|�|jjdjdk�|�|jjdjdk�|�	�dS)NZHello���z#comment)
rr,r4rK�
createCommentr"r<�nodeName�datar-)r rrrr
�testAppendChild�s
zMinidomTest.testAppendChildcCsT|��\}}}}}}|j�|�|�t|jj�||||fkd�|��|��dS)NzappendChild(<fragment>))rQr4rKr"rRr<r-)r rrLrMrNrOrPrrr
�testAppendChildFragment�sz#MinidomTest.testAppendChildFragmentcCs\|��\}}}}}}|j�||�|��|�t|jj�|||fkd�|��|��dS)NzreplaceChild(<fragment>))rQr4�replaceChildr-r"rRr<)r rrLrMrNrOrPrrr
�testReplaceChildFragment�sz$MinidomTest.testReplaceChildFragmentcCs�t�}|�d�}|�d�}|�tjj|j|�|�|�|�tjj|j||�|�tjj|j	||�|j
}|�tjj|j|�|�tjj|j|�|�|�|�
�dS)Nr6�text)rr=rJ�assertRaisesrr�HierarchyRequestErrrKr>rZ�
attributesZsetNamedItemZsetNamedItemNSr-)r rrGr\Znodemaprrr
�testLegalChildren�s 



zMinidomTest.testLegalChildrencCs�t�}|�d�}|j}d|d<|�d�}|�|j|kd�|�|j|kd�|�|jdkd�|�|jdkd�|�	�|�	�dS)	Nr6r:rIrz-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
rr=r_rr"r�ownerElement�value�	nodeValuer-)r rrG�attrs�arrr
�testNamedNodeMapSetItem�s

z#MinidomTest.testNamedNodeMapSetItemcCsBtt�}|�|�|�|�d��|�|jdj�|��dS)NrIrT)rr,r"rKrUr<r-)r rrrr
�testNonZero�s

zMinidomTest.testNonZerocCs,tt�}|�|j�|��|�|j�dS)N)rr,rr<r-r()r rrrr
�
testUnlink�szMinidomTest.testUnlinkc	Cs0tt��}|�|j�WdQRX|�|j�dS)N)rr,rr<r()r rrrr
�testContext�s
zMinidomTest.testContextcCs.t�}|�|�d��|�|j�|��dS)N�abc)rrKr=r"r4r-)r rrrr
�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)	rr4�setAttributer"rC�getAttributeNoderrar-)r r�elrerrr
rn�s
zMinidomTest.testAAAcCsFtd�}|j}|�dd�|�dd�|�|��dkd�|��dS)Nz<abc/>rl�jamrmz<abc spam="jam2"/>�testAAB)rr4ror"rCr-)r rrqrrr
rsszMinidomTest.testAABcCs�t�}|�|�d��}|�dd�|�|�d�dk�|�|jdjdk�|�dd�|�|�d�dk�|�|jdjdk�|�t|j�dk�|�dd�|�|�d�dk�|�|jdjdk�|�t|j�dk�|�	�dS)Nrj�def�ghiZjklZmnor7Znewval)
rrKr=ror"�getAttributer_rbr?r-)r r�childrrr
�testAddAttr	szMinidomTest.testAddAttrcCsrt�}|�|�d��}|�t|j�dk�|�dd�|�t|j�dk�|jd=|�t|j�dk�|��dS)Nrjrrtrur8)rrKr=r"r?r_ror-)r rrwrrr
�testDeleteAttrszMinidomTest.testDeleteAttrcCstt�}|�|�d��}|�dd�|�t|j�dk�|�tj	j
|jd�|�d�|�t|j�dk�|��dS)Nrjrtrur8rIr)
rrKr=ror"r?r_r]rr�NotFoundErrZremoveAttributer-)r rrwrrr
�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:abcattrrIr7Zabcattrr8)
rrK�createElementNS�setAttributeNSr]rrrzZremoveAttributeNSr"r?r_r-)r rrwrrr
�testRemoveAttrNS4s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)NrIrlrrr8r)rrKr=ror"r?r_rpr]rrrzZremoveAttributeNoder-)r rrwr$�dom2�child2Znode2rrr
�testRemoveAttributeNodeBs 


z#MinidomTest.testRemoveAttributeNodecCs6t�}|�|�d��}|�dd�|�|�d��dS)NrIrlrr)rrKr=ror"ZhasAttribute)r rrwrrr
�testHasAttributeTs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/>rlrrr8ZbamZhamZspam2r7Zbam2)
rr4ror"r?r_�setIdAttributerbrcrvrp�isIdr-)r rrqrrr
�testChangeAttrZsD


zMinidomTest.testChangeAttrcCsdS)Nr)r rrr
�testGetAttrList�szMinidomTest.testGetAttrListcCsdS)Nr)r rrr
�testGetAttrValues�szMinidomTest.testGetAttrValuescCsdS)Nr)r rrr
�testGetAttrLength�szMinidomTest.testGetAttrLengthcCs.t�}|�|�dd��}|�|�d�d�dS)Nzhttp://www.python.orgz
python:abc�missing�)rrKr|�assertEqualrv)r rrwrrr
�testGetAttribute�szMinidomTest.testGetAttributecCsvt�}|�|�dd��}|�ddd�|�|�dd�d�|�|�dd�d�|�|�d��}|�|�dd	�d�dS)
Nzhttp://www.python.orgz
python:abczhttp://www.w3.orgzxmlns:python�python�otherr�rjr�)rrKr|r}r�ZgetAttributeNSr=)r rrwr�rrr
�testGetAttributeNS�szMinidomTest.testGetAttributeNScCsdS)Nr)r rrr
�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/minidomZmyelemr8rrzminidom:myelem)
r�getElementsByTagNameNSr"r?�namespaceURI�	localName�prefix�tagNamerVr-)r �drZelemsrrr
�testGetElementsByTagNameNS�sz&MinidomTest.testGetElementsByTagNameNScCs"|�||�}|�t|�dk�dS)Nr)r�r"r?)r r	ZnsuriZlnameZnodelistr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)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�)r r	rrr
�+testGetEmptyNodeListFromElementsByTagNameNS�s




z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNScCs@t�}|�|�d��}t|�}t|�}|�||k�|��dS)Nrj)rrKr=�repr�strr"r-)r rrq�string1�string2rrr
�testElementReprAndStr�sz!MinidomTest.testElementReprAndStrcCs@t�}|�|�d��}t|�}t|�}|�||k�|��dS)Nrj)rrKr=r�r�r"r-)r rrqr�r�rrr
�testElementReprAndStrUnicode�sz(MinidomTest.testElementReprAndStrUnicodecCsPt�}|�|�dd��}t|�}t|�}|�||k�|�d|k�|��dS)Nzhttp://www.slashdot.orgz	slash:abc)rrKr|r�r�r"r-)r rrqr�r�rrr
�testElementReprAndStrUnicodeNS�sz*MinidomTest.testElementReprAndStrUnicodeNScCsDt�}|�|�d��}|�dd�}|�t|�t|�k�|��dS)Nrjrt)rrKr=ror"r�r�r-)r rrqr$rrr
�testAttributeRepr�s
zMinidomTest.testAttributeReprcCsdS)Nr)r rrr
�testTextNodeRepr�r�zMinidomTest.testTextNodeReprcCs.d}t|�}|��}|��|�||k�dS)Nz <?xml version="1.0" ?><a b="c"/>)rrCr-r")r r�r�domstrrrr
�testWriteXML�s
zMinidomTest.testWriteXMLcCs:d}t|�}|jdd�}|��|�||�dd�k�dS)Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)Znewl�
)r�toprettyxmlr-r"�replace)r r�rr�rrr
�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 �declrrr
� test_toprettyxml_with_text_nodes�s



z,MinidomTest.test_toprettyxml_with_text_nodescCsVt�}|�d�}|�|�d��|�|�d��|�|�d}|�|��|d�dS)NrGZTEXTz<?xml version="1.0" ?>
z<elem>
	TEXT
	TEXT
</elem>
)rr=rKrJr�r�)r rrGr�rrr
�)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�r3r<rC)r r�rrrrr
�/test_toprettyxml_preserves_content_of_text_nodes
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)rr4rAr"�targetrWrV�nodeTyper�PROCESSING_INSTRUCTION_NODEr_�
hasChildNodesr?r<rBr�r�rr�EMPTY_NAMESPACE)r r�pirrr
�testProcessingInstructions






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

z'MinidomTest.testTooManyDocumentElementscCsdS)Nr)r rrr
�testCreateElementNS6r�zMinidomTest.testCreateElementNScCsdS)Nr)r rrr
�testCreateAttributeNS8r�z!MinidomTest.testCreateAttributeNScCsdS)Nr)r rrr
�	testParse:r�zMinidomTest.testParsecCsdS)Nr)r rrr
�testParseString<r�zMinidomTest.testParseStringcCsdS)Nr)r rrr
�testComment>r�zMinidomTest.testCommentcCsdS)Nr)r rrr
�testAttrListItem@r�zMinidomTest.testAttrListItemcCsdS)Nr)r rrr
�testAttrListItemsBr�zMinidomTest.testAttrListItemscCsdS)Nr)r rrr
�testAttrListItemNSDr�zMinidomTest.testAttrListItemNScCsdS)Nr)r rrr
�testAttrListKeysFr�zMinidomTest.testAttrListKeyscCsdS)Nr)r rrr
�testAttrListKeysNSHr�zMinidomTest.testAttrListKeysNScCsPtd�}|j}|j}|�d�}|�d�}|�|�|��|�tj	j
|jd�dS)Nz<doc a=''/>re)rr4r_rpZremoveNamedItemr"�
isSameNoder]rrrz)r r	r�rd�a1�a2rrr
�testRemoveNamedItemJs

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)rr4r_�getAttributeNodeNSZremoveNamedItemNSr"r�r]rrrz)r r	r�rdr�r�rrr
�testRemoveNamedItemNSSsz!MinidomTest.testRemoveNamedItemNScCsdS)Nr)r rrr
�testAttrListValues]r�zMinidomTest.testAttrListValuescCsdS)Nr)r rrr
�testAttrListLength_r�zMinidomTest.testAttrListLengthcCsdS)Nr)r rrr
�testAttrList__getitem__ar�z#MinidomTest.testAttrList__getitem__cCsdS)Nr)r rrr
�testAttrList__setitem__cr�z#MinidomTest.testAttrList__setitem__cCsdS)Nr)r rrr
�testSetAttrValueandNodeValueer�z(MinidomTest.testSetAttrValueandNodeValuecCsdS)Nr)r rrr
�testParseElementgr�zMinidomTest.testParseElementcCsdS)Nr)r rrr
�testParseAttributesir�zMinidomTest.testParseAttributescCsdS)Nr)r rrr
�testParseElementNamespaceskr�z&MinidomTest.testParseElementNamespacescCsdS)Nr)r rrr
�testParseAttributeNamespacesmr�z(MinidomTest.testParseAttributeNamespacescCsdS)Nr)r rrr
�testParseProcessingInstructionsor�z+MinidomTest.testParseProcessingInstructionscCsdS)Nr)r rrr
�testChildNodesqr�zMinidomTest.testChildNodescCsdS)Nr)r rrr
�testFirstChildsr�zMinidomTest.testFirstChildcCs<td�}|j}|�|���td�}|j}|�|���dS)Nz<doc><foo/></doc>z<doc/>)rr4rr�r()r rr	r�doc2rrr
�testHasChildNodesus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?rrbrcr�r�ra)r �e1�e2r!Zattrs1Zattrs2Zkeys1Zkeys2�ir�r�rrr
�!_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)rr4�	cloneNoder�r�rVro)r �deeprrF�clonerrr
�_setupCloneElement�s
zMinidomTest._setupCloneElementcCsR|�d�\}}|�t|j�dko@|jjdko@|jdko@|��dkd�|��dS)Nrz<doc attr="value"/>�testCloneElementShallow)r�r"r?r<r@�
parentNoderCr-)r rr�rrr
r��s

z#MinidomTest.testCloneElementShallowcCsR|�d�\}}|�t|j�dko@|jjdko@|jdko@|��dkd�|��dS)Nr8z<doc attr="value"><foo/></doc>�testCloneElementDeep)r�r"r?r<r@r�rCr-)r rr�rrr
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")r r	r�rrr
�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'/>r8z4testCloneDocumentDeep: 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<r4r�rZELEMENT_NODErr�DOCUMENT_TYPE_NODE)r r	r�rrr
�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)Nr8r)rr�r"rV�name�publicId�systemIdr?rrrr<r�r��notationNamerrr)r rr�r�ZseZceZsnZcnrrr
�testCloneDocumentTypeDeepOk�s@
z'MinidomTest.testCloneDocumentTypeDeepOkcCs&t�}|j�d�}|�|dkd�dS)Nr8�testCloneDocumentTypeDeepNotOk)rrr�r")r r	r�rrr
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"rVr�r�r�r?rrrr<)r rr�rrr
�testCloneDocumentTypeShallowOk�s
z*MinidomTest.testCloneDocumentTypeShallowOkcCs&t�}|j�d�}|�|dkd�dS)Nr�!testCloneDocumentTypeShallowNotOk)rrr�r")r r	r�rrr
r�	sz-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*td�}td�}|�tjj|j||�dS)Nz<doc/>)rr]rr�NotSupportedErr�
importNode)r r��testNameZdoc1r�rrr
�check_import_documentsz!MinidomTest.check_import_documentcCs|�dd�dS)Nr�testImportDocumentShallow)r�)r rrr
r�sz%MinidomTest.testImportDocumentShallowcCs|�dd�dS)Nr8�testImportDocumentDeep)r�)r rrr
r�sz"MinidomTest.testImportDocumentDeepcCs(t�}t�}|�tjj|j|jd�dS)Nr)rrr]rrr�r�r)r �srcr�rrr
�testImportDocumentTypeShallowsz)MinidomTest.testImportDocumentTypeShallowcCs(t�}t�}|�tjj|j|jd�dS)Nr8)rrr]rrr�r�r)r r�r�rrr
�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)
rr4rpZassertNotEqualr�r"r�rarZ	specified)r r�r�r	r�r�rrr
�check_clone_attribute's


z!MinidomTest.check_clone_attributecCs|�dd�dS)Nr�testCloneAttributeShallow)r)r rrr
r5sz%MinidomTest.testCloneAttributeShallowcCs|�dd�dS)Nr8�testCloneAttributeDeep)r)r rrr
r8sz"MinidomTest.testCloneAttributeDeepcCsJtd�}|j}|�|jtj�|�|�}|�|j|jkoB|j	|j	k�dS)Nz<?target data?><doc/>)
rrAr�r�rr�r�r"r�rW)r r�r�r	r�r�rrr
�check_clone_pi;s
zMinidomTest.check_clone_picCs|�dd�dS)Nr�testClonePIShallow)r)r rrr
rCszMinidomTest.testClonePIShallowcCs|�dd�dS)Nr8�testClonePIDeep)r)r rrr
rFszMinidomTest.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�keyrWr��dst)r rrrWr�rrrr
�handleVs
z;MinidomTest.check_clone_node_entity.<locals>.Handler.handleN)�__name__�
__module__�__qualname__r	rrrr
�HandlerUsr
ZsmilerrWT)r�u%Don't let entities make you frown ☺r)rrrr�striprr�setUserDatar�r�r4rAr#�UserDataHandlerZ
NODE_IMPORTEDrZ	swap_attrZNODE_CLONEDrrrWZassertIsr�r)
r Zclone_documentZdocumentr
�handlerrrr�rrrrr
�check_clone_node_entityIs,




z#MinidomTest.check_clone_node_entitycCs|�d�|�d�dS)NFT)r)r rrr
�testCloneNodeEntityxs
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�secondr7ztestNormalize -- preparationr8�firstsecondztestNormalize -- resultr�rz*testNormalize -- single empty node removed)
rr4rKrJr"r?r<r@�	normalizerArBrWr-)r r	rFrrr
�
testNormalize|s,


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�r9z1testNormalizeCombineAndNextSibling -- preparationr7rz-testNormalizeCombinedAndNextSibling -- result)rr4rKrJr=r"r?r<r@rrArWrBrErDr-)r r	rFrrr
�"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�r7z1testNormalizeDeleteWithPrevSibling -- preparationr8z,testNormalizeDeleteWithPrevSibling -- result)rr4rKrJr"r?r<r@rrArWrBrErDr-)r r	rFrrr
�"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�rr7z1testNormalizeDeleteWithNextSibling -- preparationr8z,testNormalizeDeleteWithNextSibling -- result)rr4rKrJr"r?r<r@rrArWrBrErDr-)r r	rFrrr
�"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�r9z1testNormalizeDeleteWithTwoSiblings -- preparationr7z,testNormalizeDeleteWithTwoSiblings -- result)rr4rKr=rJr"r?r<r@rrArBrErDr-)r r	rFrrr
�)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 -- preparationr8Zsecondfourthz'testNormalizeDeleteAndCombine -- result)rr4rKrJr"r?r<r@rrArBrWrDrEr-)r r	rFrrr
�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��xr8Zx2Zx3r9r;r7ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)
rr4r<rKrJr"r?r@rrWrErDr-)r r	rFrrr
�testNormalizeRecursion�sXz"MinidomTest.testNormalizeRecursioncCs8td�}|jjd}|�|jtj�|��|��dS)Nz<o>text</o>r)	rr4r<r�r�r�	TEXT_NODErr-)r r	r\rrr
�testBug07778846s
zMinidomTest.testBug0777884cCs>td�}|j}d|jd_|��|�|jdjdkd�dS)Nz<o><i/>t</o>r�r8rTz)Final child's .nextSibling should be None)rr4r<rcrr"rE)r r	r$rrr
�testBug1433694>szMinidomTest.testBug1433694cCsjtd�}|j}|j\}}}|�|j|koX|jdkoX|j|koX|j|koX|jdkoX|j|kd�|��dS)Nz<doc><?pi?>text?<elm/></doc>�testSiblings)rr4r<r"rErDr-)r r	rFr�r\Zelmrrr
r$Fs



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)rr4r<r"r�r-)r r	rFZelm1Zelm2aZelm2bZelm3rrr
r%Ts





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>rr8ztest NodeList.item())rr<r"rr-)r r	ZchildrenZdocelemrrr
�testNodeListItemcszMinidomTest.testNodeListItemcCs�td�}|�|��d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d	�d
�d	��tjdkr�|�ttd�|�ttd
�n|�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>)r7r;rs<fran�ais></fran�ais>s.<franais>Comment �a va ? Tr�s bien ?</franais>s0<fran�ais>Comment �a va ? Tr�s bien ?</fran�ais>)
rr�rC�encode�pyexpat�version_infor]r�UnicodeDecodeErrorr-)r r	rrr
�
testEncodingsos(

zMinidomTest.testEncodingsc@seZdZdZdd�ZdS)zMinidomTest.UserDataHandlerrcCs*|�||d|�|�|dd�d|_dS)Nr8)r�called)r rrrWr�rrrr
r	�sz"MinidomTest.UserDataHandler.handleN)r
rrr,r	rrrr
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�rI�r:�
r8)	rr=r"ZgetUserDatarrr�r,r-)r r�nr�crrr
�testUserData�s*

zMinidomTest.testUserDatacCs@|�tjj|j|dd�td�}|�tjj|j|tjjd�dS)Nzhttp://xml.python.org/nsz	xmlns:fooz<doc/>rI)r]rr�NamespaceErr�
renameNoderZWrongDocumentErrr�)r r	r$r�rrr
� 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'/>rer��vzhttp://xml.python.org/nsr0)zhttp://xml.python.org/nsr0zhttp://xml.python.org/ns2zp:dr��p)zhttp://xml.python.org/ns2r�r�Zxmlns)rr4r_r3rrr�r"r�rVr�r�r�rbrpr�rrar�r]r2r4r-)r r	rGZattrmapr�rrr
�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/>rezhttp://xml.python.org/nsr�zhttp://xml.python.org/ns2zp:cr0r6r�)rr4r3rrr�r"r�rVr�r�r�rr�r4r-)r r	rGrrr
�testRenameElement�s@






zMinidomTest.testRenameElementcCsLtjj���tjjdd�}|�d�}|�tjj|j	|tjjd�|�
�dS)Nr��commentrI)rrrrr
r�rUr]r�r3r-)r r	r$rrr
�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>rrer�Zabr0�cabr9r�r�y�zZcabd)rr4r<r�r�rr!r'rKrJr>�createCDATASectionrUr=rZ�createProcessingInstruction�removeChild)r r	rGr\�splitter�text2rrrr
�
testWholeText3s8






zMinidomTest.testWholeTextcCsHtd�}|j}|j}|�|j|kd�|�||�|�|j|kd�dS)Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())rr4rAr"r�rZ)r r	rGr�rrr
�testPatch1094164Ws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�r0)rr4rArBrEr>rJr>)r	rG�text1rBrArrr
�setupasz/MinidomTest.testReplaceWholeText.<locals>.setupznew contentr�r9r;rr�r7)ZreplaceWholeTextr'r"r?r<)r rFr	rGrErArBr\rrr
�testReplaceWholeText`s 



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�)rr4Z
schemaTyper"r��	namespacerrr��splitrp�hasattr)r r	rGr&�namesr�rerrr
�testSchemaType}s

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�r5�w�an)rr4rpr"�getElementByIdr�r�r�ZcreateAttributerb�setAttributeNoder3rrr�)r r	r�r�r��a3rrr
�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�r5rMrN)rr4r�r"rOr�ZsetIdAttributeNSr��createAttributeNSrbrPr3rrr�)r �NS1�NS2r	r�r�r�rQrrr
�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�r5rMrN)rr4r�r"rOr�ZsetIdAttributeNoder�rSrbrPr3rrr�)r rTrUr	r�r�r�rQrrr
�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<rVr(r�rr�rrr�rr�r�r�rr�Z
DOCUMENT_NODErr)r r	r��stackZn1Zn2r�Zno1Zno2r�r�rrr
�assert_recursive_equalsD





z"MinidomTest.assert_recursive_equalcCsHtt�}x:tdtjd�D]&}t�||�}t�|�}|�||�qWdS)Nr7r8)r�sampler��pickleZHIGHEST_PROTOCOL�dumps�loadsrZ)r r	�protor%r�rrr
�testPickledDocument*s

zMinidomTest.testPickledDocumentcCs"tt�}t�|�}|�||�dS)N)rr[�copyZdeepcopyrZ)r r	r�rrr
�testDeepcopiedDocument1s
z"MinidomTest.testDeepcopiedDocumentcCs(t�}|�|�d��|�t|j�dS)Nzfoo--bar)rrKrUr]�
ValueErrorrC)r r	rrr
�(testSerializeCommentNodeWithDoubleHyphen6sz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,td�}t|���}|�|jtjjk�dS)Nz$<element xmlns=''>
<foo/>
</element>)rrCr"r�rrr�)r r	r�rrr
�testEmptyXMLNSValue<szMinidomTest.testEmptyXMLNSValuec	Cs@tjdkr|�td�}n|�td�}|�td�WdQRXdS)N)r7r;rzsyntax errorzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)r(r)ZassertRaisesRegexrrcr)r �contextrrr
�!testExceptionOnSpacesInXMLNSValueBs

z-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsftt�}|j�d�d}|�tjj|j|�t	|j
�}|�|j
d�t	|j
�}|�||dk�dS)NZTITLErr8)rr,r4r3r]rrrzr@r?r<r)r r	Z	title_tagZnum_children_beforeZnum_children_afterrrr
�testDocRemoveChildKs

zMinidomTest.testDocRemoveChildcCstt�}|�dd�}d|_dS)Nr<r=Zcrash)rr,r?rc)r r	r�rrr
�"testProcessingInstructionNameErrorTsz.MinidomTest.testProcessingInstructionNameErrorN)r)�r
rrr"r'r)r0r2r5rHrQrSrXrYr[r`rfrgrhrirkrnrsrxryr{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�rrrrrrrrrrrrrrr r"r#r$r%r&r+rr1r4r7r8r:rCrDrGrLrRrVrWrZr`rbrdrergrhrirrrr
r6s+
		&
		
		"/?M+
$	!$$%		r�__main__)N)rar\r!rZunittestr(Zxml.dom.minidomrrrrrrZxml.parsers.expatrZfindfiler,r[rrrZTestCaserr
�mainrrrr
�<module>s8
1