Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_minidom.cpython-39.opt-2.pyc

a

��g��@s�ddlZddlZddlZddlmZddlZddlZddlZddlm	Z	m
Z
mZmZddlm
Z
ddlmZejddd�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�-/usr/local/lib/python3.9/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.0�utf-8�us-ascii)rZcreateDocumentType�entitiesZ_seq�	notations�xml�dom�minidomZNotation�appendZEntity�version�encoding�actualEncoding)rZnotation�entityrrr
�create_nonempty_doctype s ��rcCs.t�}t|�}||j�d�_||j�d�_|S�Nr)rrr�item�
ownerDocumentr)rr	rrr
�create_doc_with_doctype0s
rc@s�eZdZ�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�Zsd�d�ZtGd�d�d�Zud�d�Zvd�d�Zwd�d�Zxd�d�Zyd�d�Zzd�d�Z{d�d��Z|d�d��Z}d�d��Z~d�d��Zd�d��Z�d�d��Z��d�d�Z��d�d�Z��d�d�Z��d�d�Z��d�d	�Z��d
�d�Z��d�d
�Z��d�d�Z��d�d�Z��d�d�Z��d�d�Z��d�d�Z��d�d�Z��dS(�MinidomTest�TestcCs|�||�dS�N)�
assertTrue)�self�testZtestnamerrr
�confirm8szMinidomTest.confirmcCs"|j}|�||kd||f�dS)Nzlooking for %r, found %r)�	wholeTextr&)r$�node�s�trrr
�checkWholeText;szMinidomTest.checkWholeTextcCs"t�}|�|j�|�tj�dSr")r�assertFalseZasync_�r$r	rrr
�testDocumentAsyncAttr?sz!MinidomTest.testDocumentAsyncAttrcCsNttd��0}t|�}|��|�t|t��Wd�n1s@0YdS)N�rb��open�tstfiler�unlinkr&�
isinstancer�r$�filerrrr
�testParseFromBinaryFileDsz#MinidomTest.testParseFromBinaryFilecCsRttddd��0}t|�}|��|�t|t��Wd�n1sD0YdS)N�rz
iso-8859-1)rr0r5rrr
�testParseFromTextFileJsz!MinidomTest.testParseFromTextFilecCs0tt�}|�|�d�|j�d�k�|��dS)NZLI)rr2r&�getElementsByTagName�documentElementr3�r$rrrr
�testGetElementsByTagNamePs

�z$MinidomTest.testGetElementsByTagNamecCstd�}|j}|jd}|�d�}|�||�|�t|j�dko�|jjdko�|jd|uo�|j�d�|uo�|jd|uo�|j�d�|uo�|j	|uo�|j
|uo�|��dkd�|�d�}|�|d�|�t|j�dk�oJ|jjdk�oJ|jd|u�oJ|j�d�|u�oJ|jd|u�oJ|j�d�|u�oJ|j
|u�oJ|j|u�oJ|��d	kd�|�d
�}|�||�|�t|j�dk�o�|jjdk�o�|jd|u�o�|j�d�|u�o�|jd|u�o�|j�d�|u�o�|j
|u�o�|j|u�o�|��dkd�|��dS)
N�<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>)rr;�
childNodes�
createElement�insertBeforer&�len�lengthr�
firstChild�	lastChild�toxml�previousSibling�nextSiblingr3)r$r�root�elemZnelemZnelem2rrr
�testInsertBeforeVs�


�������
�


�������
�


���������zMinidomTest.testInsertBeforecCsrtd�}|�d�}|�d�}|�d�}|�d�}|j�|�|��}|�|�|�|�|�|�||||||fS)N�<doc/>Zoriginal�foorCZbat)r�createTextNoder;�appendChildZcreateDocumentFragment�r$rZorig�c1�c2Zc3�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))rZr;rGr&�tuplerEr3rVrrr
�testInsertBeforeFragment�s$
��
��z$MinidomTest.testInsertBeforeFragmentcCsVtt�}|j�|�d��|�|jjdjdk�|�|jjdjdk�|�	�dS)NZHello���z#comment)
rr2r;rU�
createCommentr&rE�nodeName�datar3r<rrr
�testAppendChild�s
zMinidomTest.testAppendChildcCsT|��\}}}}}}|j�|�|�t|jj�||||fkd�|��|��dS)NzappendChild(<fragment>))rZr;rUr&r[rEr3rVrrr
�testAppendChildFragment�s
��z#MinidomTest.testAppendChildFragmentcCs\|��\}}}}}}|j�||�|��|�t|jj�|||fkd�|��|��dS)NzreplaceChild(<fragment>))rZr;�replaceChildr3r&r[rErVrrr
�testReplaceChildFragment�s�z$MinidomTest.testReplaceChildFragmentcCs�t�}|�d�}|�d�}|�tjj|j|�|�|�|�tjj|j||�|�tjj|j	||�|j
}|�tjj|j|�|�tjj|j|�|�|�|�
�dS)Nr?�text)rrFrT�assertRaisesrr�HierarchyRequestErrrUrGrc�
attributesZsetNamedItemZsetNamedItemNSr3)r$rrPreZnodemaprrr
�testLegalChildren�s(


����
zMinidomTest.testLegalChildrencCs�t�}|�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�ownerElement�value�	nodeValuer3)r$rrP�attrs�arrr
�testNamedNodeMapSetItem�s&

����z#MinidomTest.testNamedNodeMapSetItemcCsBtt�}|�|�|�|�d��|�|jdj�|��dS)NrSr])rr2r&rUr^rEr3r<rrr
�testNonZero�s

zMinidomTest.testNonZerocCs,tt�}|�|j�|��|�|j�dSr")rr2r#rEr3r,r<rrr
�
testUnlink�szMinidomTest.testUnlinkcCsDtt��}|�|j�Wd�n1s*0Y|�|j�dSr")rr2r#rEr,r<rrr
�testContext�s
*zMinidomTest.testContextcCs.t�}|�|�d��|�|j�|��dS�N�abc)rrUrFr&r;r3r<rrr
�testElement�szMinidomTest.testElementcCsjtd�}|j}|�dd�|�|��dkd�|�d�}|�|j|ud�|�|j|jud�|��dS)N�<abc/>�spam�jam2�<abc spam="jam2"/>�testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement)	rr;�setAttributer&rL�getAttributeNoderrjr3)r$r�elrnrrr
rz�s
��zMinidomTest.testAAAcCsFtd�}|j}|�dd�|�dd�|�|��dkd�|��dS)Nrvrw�jamrxry�testAAB)rr;r{r&rLr3�r$rr}rrr
rszMinidomTest.testAABcCs�t�}|�|�d��}|�dd�|�|�d�dk�|�|jdjdk�|�dd�|�|�d�dk�|�|jdjdk�|�t|j�dk�|�dd�|�|�d�dk�|�|jdjdk�|�t|j�dk�|�	�dS)Nrt�def�ghiZjklZmnor@Znewval)
rrUrFr{r&�getAttributerhrkrHr3�r$r�childrrr
�testAddAttr
szMinidomTest.testAddAttrcCsrt�}|�|�d��}|�t|j�dk�|�dd�|�t|j�dk�|jd=|�t|j�dk�|��dS)Nrtrr�r�rA)rrUrFr&rHrhr{r3r�rrr
�testDeleteAttrszMinidomTest.testDeleteAttrcCstt�}|�|�d��}|�dd�|�t|j�dk�|�tj	j
|jd�|�d�|�t|j�dk�|��dS)Nrtr�r�rArSr)
rrUrFr{r&rHrhrfrr�NotFoundErrZremoveAttributer3r�rrr
�testRemoveAttr*s
zMinidomTest.testRemoveAttrcCs�t�}|�|�dd��}|�ddd�|�ddd�|�tjj|jdd�|�	t
|j�dk�|�dd�|�	t
|j�d	k�|��dS)
N�http://www.python.org�
python:abc�http://www.w3.org�xmlns:pythonzpython:abcattrrSr@ZabcattrrA)
rrU�createElementNS�setAttributeNSrfrrr�ZremoveAttributeNSr&rHrhr3r�rrr
�testRemoveAttrNS5s
���zMinidomTest.testRemoveAttrNScCs�t�}|�|�d��}|�dd�|�t|j�dk�|�d�}|�t	j
j|jd�|�
||�|��|�t|j�dko�|�d�du�t�}|�|�d��}|�d�}|�t	j
j|j|�|��dS)NrSrwr~rAr)rrUrFr{r&rHrhr|rfrrr�ZremoveAttributeNode�assertIsr3)r$rr�r(�dom2�child2Znode2rrr
�testRemoveAttributeNodeCs&
��
�z#MinidomTest.testRemoveAttributeNodecCs6t�}|�|�d��}|�dd�|�|�d��dS)NrSrwr~)rrUrFr{r&ZhasAttributer�rrr
�testHasAttributeUs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)
Nrvrwr~rAZbamZhamZspam2r@Zbam2)
rr;r{r&rHrh�setIdAttributerkrlr�r|�isIdr3r�rrr
�testChangeAttr[sl
���
�
���
�������
������zMinidomTest.testChangeAttrcCsdSr"r�r$rrr
�testGetAttrList�szMinidomTest.testGetAttrListcCsdSr"rr�rrr
�testGetAttrValues�szMinidomTest.testGetAttrValuescCsdSr"rr�rrr
�testGetAttrLength�szMinidomTest.testGetAttrLengthcCs.t�}|�|�dd��}|�|�d�d�dS)Nr�r��missing�)rrUr��assertEqualr�r�rrr
�testGetAttribute�s

�zMinidomTest.testGetAttributecCsvt�}|�|�dd��}|�ddd�|�|�dd�d�|�|�dd�d�|�|�d��}|�|�dd	�d�dS)
Nr�r�r�r�Zpython�otherr�rtr�)rrUr�r�r�ZgetAttributeNSrF)r$rr�r�rrr
�testGetAttributeNS�s"
�����zMinidomTest.testGetAttributeNScCsdSr"rr�rrr
�testGetAttributeNode��z MinidomTest.testGetAttributeNodecCs|d}t|�}|�dd�}|�t|�dkol|djdkol|djdkol|djdkol|djdkol|djdk�|�	�dS)NzZ<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
        <minidom:myelem/>
        </foo>zhttp://pyxml.sf.net/minidomZmyelemrArrzminidom:myelem)
r�getElementsByTagNameNSr&rH�namespaceURI�	localName�prefix�tagNamer_r3)r$�drZelemsrrr
�testGetElementsByTagNameNS�s"������z&MinidomTest.testGetElementsByTagNameNScCs"|�||�}|�t|�dk�dSr)r�r&rH)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)NrRz"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
�+testGetEmptyNodeListFromElementsByTagNameNS�s(������z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNScCs@t�}|�|�d��}t|�}t|�}|�||k�|��dSrs�rrUrF�repr�strr&r3�r$rr}Zstring1Zstring2rrr
�testElementReprAndStr�sz!MinidomTest.testElementReprAndStrcCs@t�}|�|�d��}t|�}t|�}|�||k�|��dSrsr�r�rrr
�testElementReprAndStrUnicode�sz(MinidomTest.testElementReprAndStrUnicodecCsPt�}|�|�dd��}t|�}t|�}|�||k�|�d|v�|��dS)Nzhttp://www.slashdot.orgz	slash:abc)rrUr�r�r�r&r3r�rrr
�testElementReprAndStrUnicodeNS�s
�z*MinidomTest.testElementReprAndStrUnicodeNScCsDt�}|�|�d��}|�dd�}|�t|�t|�k�|��dS)Nrtr�)rrUrFr{r&r�r�r3)r$rr}r(rrr
�testAttributeRepr�s
zMinidomTest.testAttributeReprcCsdSr"rr�rrr
�testTextNodeRepr�r�zMinidomTest.testTextNodeReprcCs.d}t|�}|��}|��|�||k�dS)Nz <?xml version="1.0" ?><a b="c"/>)rrLr3r&�r$r�rZdomstrrrr
�testWriteXML�s
zMinidomTest.testWriteXMLcCs:d}t|�}|jdd�}|��|�||�dd�k�dS)Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)Znewl�
)r�toprettyxmlr3r&�replacer�rrr
�testAltNewline�s
zMinidomTest.testAltNewlinecCs�d}|�td���|d�|�td���|d�|�td���|d�|�td���|d	�|�td
���|d�dS)N�<?xml version="1.0" ?>
�<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)NrPZTEXTr�z<elem>
	TEXT
	TEXT
</elem>
)rrFrUrTr�r�)r$rrPr�rrr
�)test_toprettyxml_with_adjacent_text_nodess


�z5MinidomTest.test_toprettyxml_with_adjacent_text_nodescCsVdD]L}t|�}t|���}|�|�d�djd��|�d�djd���qdS)N)r�z<A><B>C</B></A>�Br)rr�r�r:rErL)r$r�rr�r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
duo�|��o�t|j
�dko�|jduo�|jduo�|jduo�|jtjjk�dS)Nz<e><?mypi 	
 data 	
 ?></e>Zmypizdata 	
 r)rr;rJr&�targetr`r_�nodeTyper�PROCESSING_INSTRUCTION_NODErh�
hasChildNodesrHrErKr�r�rr�EMPTY_NAMESPACE)r$r�pirrr
�testProcessingInstructions.��
������	�
�z%MinidomTest.testProcessingInstructioncCsdSr"rr�rrr
�testProcessingInstructionRepr'r�z)MinidomTest.testProcessingInstructionReprcCsdSr"rr�rrr
�testTextRepr)r�zMinidomTest.testTextReprcCsdSr"rr�rrr
�
testWriteText+r�zMinidomTest.testWriteTextcCsdSr"rr�rrr
�testDocumentElement-r�zMinidomTest.testDocumentElementcCs:td�}|�d�}|�tjj|j|�|��|��dS)NrR�extra)rrFrfrrrgrUr3�r$r	rPrrr
�testTooManyDocumentElements/s

z'MinidomTest.testTooManyDocumentElementscCsdSr"rr�rrr
�testCreateElementNS7r�zMinidomTest.testCreateElementNScCsdSr"rr�rrr
�testCreateAttributeNS9r�z!MinidomTest.testCreateAttributeNScCsdSr"rr�rrr
�	testParse;r�zMinidomTest.testParsecCsdSr"rr�rrr
�testParseString=r�zMinidomTest.testParseStringcCsdSr"rr�rrr
�testComment?r�zMinidomTest.testCommentcCsdSr"rr�rrr
�testAttrListItemAr�zMinidomTest.testAttrListItemcCsdSr"rr�rrr
�testAttrListItemsCr�zMinidomTest.testAttrListItemscCsdSr"rr�rrr
�testAttrListItemNSEr�zMinidomTest.testAttrListItemNScCsdSr"rr�rrr
�testAttrListKeysGr�zMinidomTest.testAttrListKeyscCsdSr"rr�rrr
�testAttrListKeysNSIr�zMinidomTest.testAttrListKeysNScCsPtd�}|j}|j}|�d�}|�d�}|�|�|��|�tj	j
|jd�dS)Nz<doc a=''/>rn)rr;rhr|ZremoveNamedItemr&�
isSameNoderfrrr��r$r	r�rm�a1�a2rrr
�testRemoveNamedItemKs

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)rr;rh�getAttributeNodeNSZremoveNamedItemNSr&r�rfrrr�r�rrr
�testRemoveNamedItemNSTs�z!MinidomTest.testRemoveNamedItemNScCsdSr"rr�rrr
�testAttrListValues^r�zMinidomTest.testAttrListValuescCsdSr"rr�rrr
�testAttrListLength`r�zMinidomTest.testAttrListLengthcCsdSr"rr�rrr
�testAttrList__getitem__br�z#MinidomTest.testAttrList__getitem__cCsdSr"rr�rrr
�testAttrList__setitem__dr�z#MinidomTest.testAttrList__setitem__cCsdSr"rr�rrr
�testSetAttrValueandNodeValuefr�z(MinidomTest.testSetAttrValueandNodeValuecCsdSr"rr�rrr
�testParseElementhr�zMinidomTest.testParseElementcCsdSr"rr�rrr
�testParseAttributesjr�zMinidomTest.testParseAttributescCsdSr"rr�rrr
�testParseElementNamespaceslr�z&MinidomTest.testParseElementNamespacescCsdSr"rr�rrr
�testParseAttributeNamespacesnr�z(MinidomTest.testParseAttributeNamespacescCsdSr"rr�rrr
�testParseProcessingInstructionspr�z+MinidomTest.testParseProcessingInstructionscCsdSr"rr�rrr
�testChildNodesrr�zMinidomTest.testChildNodescCsdSr"rr�rrr
�testFirstChildtr�zMinidomTest.testFirstChildcCs<td�}|j}|�|���td�}|j}|�|���dS)Nr>rR)rr;r#r�r,)r$rr	r��doc2rrr
�testHasChildNodesvszMinidomTest.testHasChildNodescCs�|j}|j}t|���}t|���}|��|��|�||kd�tt|��D]j}|�|�}	|�|�}
|�|	|
uo�|	j|
jko�|	j	|
j	ko�|	j
|
j
ko�|	j|
jkd�|�|
j|ud�qPdS)Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)
rh�list�keys�sortr&�rangerHrrkrlr�r�rj)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)rr;�	cloneNoder�r�r_r{)r$�deeprrO�clonerrr
�_setupCloneElement�s
�zMinidomTest._setupCloneElementcCsR|�d�\}}|�t|j�dko@|jjdko@|jduo@|��dkd�|��dS)Nrz<doc attr="value"/>�testCloneElementShallow�rr&rHrErI�
parentNoderLr3�r$rr�rrr
r�s
��
�z#MinidomTest.testCloneElementShallowcCsR|�d�\}}|�t|j�dko@|jjdko@|jduo@|��dkd�|��dS)NrAz<doc attr="value"><foo/></doc>�testCloneElementDeeprrrrr
r�s
��
�z MinidomTest.testCloneElementDeepcCs&td�}|�d�}|�|dud�dS)N��<?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�|jdur�|�|jjtjkd�|�|jj
�|��|�|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)
rr�r&r�rHrEr;r�rZELEMENT_NODErr�DOCUMENT_TYPE_NODErrrr
�testCloneDocumentDeep�s.
�����
�z!MinidomTest.testCloneDocumentDeepcCs�t�}|�d�}|�|duo�|j|jko�|j|jko�|j|jko�|j|jko�t|j�t|j�ko�|j�	t|j��duo�t|j
�t|j
�ko�|j
�	t|j
��duo�t|j�dk�tt|j��D]�}|j�	|�}|j�	|�}|�|�
|��oX|�
|��oX|j|jk�oX|j|jk�oX|j|jk�oX|j|jk�oX|j|jk�oX|j|jk�oX|j|jk�q�tt|j
��D]h}|j
�	|�}|j
�	|�}|�|�
|��o�|�
|��o�|j|jk�o�|j|jk�o�|j|jk��qldS)NrAr)rr�r&r_�name�publicId�systemIdrHrrrrEr�r��notationNamerrr)r$rr�r�ZseZceZsnZcnrrr
�testCloneDocumentTypeDeepOk�sj

�
�
�
�����	�

�
�
�
�
�
�
�
�	
�
�
�
�z'MinidomTest.testCloneDocumentTypeDeepOkcCs&t�}|j�d�}|�|dud�dS)NrA�testCloneDocumentTypeDeepNotOk�rrr�r&�r$r	r�rrr
r�sz*MinidomTest.testCloneDocumentTypeDeepNotOkcCs�t�}|�d�}|�|duo�|j|jko�|j|jko�|j|jko�|j|jko�t|j�dko�|j�	d�duo�t|j
�dko�|j
�	d�duo�t|j�dk�dSr)rr�r&r_rrr
rHrrrrE)r$rr�rrr
�testCloneDocumentTypeShallowOk�s*

�
�
�
�����	�z*MinidomTest.testCloneDocumentTypeShallowOkcCs&t�}|j�d�}|�|dud�dS)Nr�!testCloneDocumentTypeShallowNotOkrrrrr
r
sz-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*td�}td�}|�tjj|j||�dS)NrR)rrfrr�NotSupportedErr�
importNode)r$r��testNameZdoc1r�rrr
�check_import_documentsz!MinidomTest.check_import_documentcCs|�dd�dS)Nr�testImportDocumentShallow�rr�rrr
rsz%MinidomTest.testImportDocumentShallowcCs|�dd�dS)NrA�testImportDocumentDeeprr�rrr
rsz"MinidomTest.testImportDocumentDeepcCs(t�}t�}|�tjj|j|jd�dSr�rrrfrrrrr�r$�srcr�rrr
�testImportDocumentTypeShallows
�z)MinidomTest.testImportDocumentTypeShallowcCs(t�}t�}|�tjj|j|jd�dS�NrArrrrr
�testImportDocumentTypeDeep s
�z&MinidomTest.testImportDocumentTypeDeepcCs�td�}|j�d�}|�|d�|�|�}|�|�|��|�|�|��|�|jdu|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)
rr;r|ZassertNotEqualr�r&r�rjrZ	specified)r$r�rr	r�r�rrr
�check_clone_attribute(s
���z!MinidomTest.check_clone_attributecCs|�dd�dS)Nr�testCloneAttributeShallow�r"r�rrr
r#6sz%MinidomTest.testCloneAttributeShallowcCs|�dd�dS)NrA�testCloneAttributeDeepr$r�rrr
r%9sz"MinidomTest.testCloneAttributeDeepcCsJtd�}|j}|�|jtj�|�|�}|�|j|jkoB|j	|j	k�dS)Nz<?target data?><doc/>)
rrJr�r�rr�r�r&r�r`)r$r�rr	r�r�rrr
�check_clone_pi<s

�zMinidomTest.check_clone_picCs|�dd�dS)Nr�testClonePIShallow�r&r�rrr
r'DszMinidomTest.testClonePIShallowcCs|�dd�dS)NrA�testClonePIDeepr(r�rrr
r)GszMinidomTest.testClonePIDeepc
Cstjj�d���}Gdd�d�}|�}|j}|jd}|�dd|�|r~|jdd�}|�	|j
jjd	�tjj
j}|jjd}	nNt�|d
d��|jdd�}Wd�n1s�0Ytjj
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"||_||_||_||_||_dSr")�	operation�keyr`r�dst�r$r*r+r`rr,rrr
�handleWs
z;MinidomTest.check_clone_node_entity.<locals>.Handler.handleN)�__name__�
__module__�__qualname__r.rrrr
�HandlerVsr2Zsmiler+r`T)r�u%Don't let entities make you frown ☺r)rrrr�striprr�setUserDatar�r�r;rJr'�UserDataHandlerZ
NODE_IMPORTEDrZ	swap_attrZNODE_CLONEDr*r+r`r�rr,)
r$Zclone_documentZdocumentr2�handlerrrr�r*r,rrr
�check_clone_node_entityJs,	
�
*

z#MinidomTest.check_clone_node_entitycCs|�d�|�d�dS)NFT)r7r�rrr
�testCloneNodeEntityys
zMinidomTest.testCloneNodeEntitycCs�td�}|j}|�|�d��|�|�d��|�t|j�dkoJ|jjdkd�|��|�t|j�dko�|jjdko�|j	|j
uo�|j	jdkd�|��td�}|j}|�|�d	��|��|�t|j�d
ko�|jjd
kd�|��dS)NrR�first�secondr@ztestNormalize -- preparationrA�firstsecondztestNormalize -- resultr�rz*testNormalize -- single empty node removed)
rr;rUrTr&rHrErI�	normalizerJrKr`r3�r$r	rOrrr
�
testNormalize}s6
�
�
�
�
�zMinidomTest.testNormalizecCs�td�}|j}|�|�d��|�|�d��|�|�d��|�t|j�dkoZ|jjdkd�|�	�|�t|j�dko�|jjdko�|j
jdko�|j
|juo�|j
j
|juo�|j
jduo�|jj|j
uo�|jj
dud	�|��dS)
NrRr9r:r�rBz1testNormalizeCombineAndNextSibling -- preparationr@r;z-testNormalizeCombinedAndNextSibling -- result)rr;rUrTrFr&rHrErIr<rJr`rKrNrMr3r=rrr
�"testNormalizeCombineAndNextSibling�s6
�
�
�
��
��
�	z.MinidomTest.testNormalizeCombineAndNextSiblingcCs�td�}|j}|�|�d��|�|�d��|�t|j�dkoJ|jjdkd�|��|�t|j�dko�|jjdko�|j	j
dko�|j	|juo�|j	jduo�|j	j
dud�|��dS)NrRr9r�r@z1testNormalizeDeleteWithPrevSibling -- preparationrAz,testNormalizeDeleteWithPrevSibling -- result�rr;rUrTr&rHrErIr<rJr`rKrNrMr3r=rrr
�"testNormalizeDeleteWithPrevSibling�s,
�
�
�
�
�
�z.MinidomTest.testNormalizeDeleteWithPrevSiblingcCs�td�}|j}|�|�d��|�|�d��|�t|j�dkoJ|jjdkd�|��|�t|j�dko�|jjdko�|j	j
dko�|j	|juo�|j	jduo�|j	j
dud�|��dS)NrRr�r:r@z1testNormalizeDeleteWithNextSibling -- preparationrAz,testNormalizeDeleteWithNextSibling -- resultr@r=rrr
�"testNormalizeDeleteWithNextSibling�s,
�
�
�
�
�
�z.MinidomTest.testNormalizeDeleteWithNextSiblingcCs�td�}|j}|�|�d��|�|�d��|�|�d��|�t|j�dkoZ|jjdkd�|�	�|�t|j�dko�|jjdko�|j
|juo�|j
j|juo�|j
j
duo�|jj
|j
uo�|jjdud�|��dS)NrRr�r�rBz1testNormalizeDeleteWithTwoSiblings -- preparationr@z,testNormalizeDeleteWithTwoSiblings -- result)rr;rUrFrTr&rHrErIr<rJrKrNrMr3r=rrr
�)testNormalizeDeleteWithTwoNonTextSiblings�s2
�
�
��
��
�z5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblingscCs�td�}|j}|�|�d��|�|�d��|�|�d��|�|�d��|�|�d��|�t|j�dkoz|jjdkd�|��|�t|j�dko�|jjdko�|j	|j
uo�|j	jdko�|j	jduo�|j	j
dud	�|��dS)
NrRr�r:Zfourth�z,testNormalizeDeleteAndCombine -- preparationrAZsecondfourthz'testNormalizeDeleteAndCombine -- result)rr;rUrTr&rHrErIr<rJrKr`rMrNr3r=rrr
�testNormalizeDeleteAndCombine�s2
�
�
�
�
�
�z)MinidomTest.testNormalizeDeleteAndCombinecCs6td�}|j}|jd�|�d��|jd�|�d��|jdjd�|�d��|jd�|�d��|�|�d��|�t|j�dk�o$|jjdk�o$t|jdj�d	k�o$|jdjjd	k�o$t|jdj�dk�o$|jdjjdk�o$t|jdjdj�d
k�o$|jdjdjjd
kd�|��|�t|j�d
k�o�|jjd
k�o�t|jdj�d
k�o�|jdjjd
k�o�t|jdj�d
k�o�|jdjjd
k�o�t|jdjdj�dk�o�|jdjdjjdkd�|�|jdjdj	d
k�o.|jdjdjdj	dk�o.|jdjdj	dkd�|�|jdjdj
du�o$|jdjdj|jdjdu�o$|jdjdjdu�o$|jdjdj
|jdjdu�o$|jdjdj
du�o$|jdjdj|jdjdu�o$|jdjdjdu�o$|jdjdj
|jdjdud�|��dS)Nz)<doc><o><i/>t</o><o><o>t2</o>t3</o></doc>rr��xrAZx2Zx3rBrDr@ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)
rr;rErUrTr&rHrIr<r`rNrMr3r=rrr
�testNormalizeRecursion�s�
�������	
�������	����������	�
��
z"MinidomTest.testNormalizeRecursioncCs8td�}|jjd}|�|jtj�|��|��dS)Nz<o>text</o>r)	rr;rEr�r�r�	TEXT_NODEr<r3)r$r	rerrr
�testBug07778847s
zMinidomTest.testBug0777884cCs>td�}|j}d|jd_|��|�|jdjdud�dS)Nz<o><i/>t</o>r�rAr]z)Final child's .nextSibling should be None)rr;rErlr<r&rN�r$r	r(rrr
�testBug1433694?s�zMinidomTest.testBug1433694cCsjtd�}|j}|j\}}}|�|j|uoX|jduoX|j|uoX|j|uoX|jduoX|j|ud�|��dS)Nz<doc><?pi?>text?<elm/></doc>�testSiblings)rr;rEr&rNrMr3)r$r	rOr�reZelmrrr
rLGs����
�zMinidomTest.testSiblingscCsrtd�}|j}|jd}|j\}}|jd}|�|j|uo`|j|uo`|j|uo`|j|uo`|j|ud�|��dS)Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r�testParents)rr;rEr&rr3)r$r	rOZelm1Zelm2aZelm2bZelm3rrr
rMUs"�


���
�zMinidomTest.testParentscCs�td�}|j}|d}|�|d|�d�uo||�d�duo||j�d�|jduo||j�d�|jduo||j�d�j�d�dud�|��dS)Nz<doc><e/><e/></doc>rrAztest NodeList.item())rrEr&rr3)r$r	ZchildrenZdocelemrrr
�testNodeListItemds����zMinidomTest.testNodeListItemcCs�td�}|�|��d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d	�d
�d	��tjdkr�|�ttd�|�ttd
�n|�ttd�|�	�dS)N�<foo>&#x20ac;</foo>�$<?xml version="1.0" ?><foo>€</foo>rs4<?xml version="1.0" encoding="utf-8"?><foo>€</foo>ziso-8859-15s8<?xml version="1.0" encoding="iso-8859-15"?><foo>�</foo>rs;<?xml version="1.0" encoding="us-ascii"?><foo>&#8364;</foo>zutf-16u5<?xml version="1.0" encoding="utf-16"?><foo>€</foo>�r@rDrDs<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�rL�encode�pyexpat�version_inforfr�UnicodeDecodeErrorr3r-rrr
�
testEncodingsps:
������
���zMinidomTest.testEncodingscCsttd�}|�|��d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|�dd�d	�|��dS)
NrOrP)Z
standaloneTu4<?xml version="1.0" standalone="yes"?><foo>€</foo>Fu3<?xml version="1.0" standalone="no"?><foo>€</foo>rsE<?xml version="1.0" encoding="utf-8" standalone="yes"?><foo>€</foo>)rr�rLr3r-rrr
�testStandalone�s"
�����zMinidomTest.testStandalonec@seZdZdZdd�ZdS)zMinidomTest.UserDataHandlerrcCs*|�||d|�|�|dd�d|_dSr )r4�calledr-rrr
r.�sz"MinidomTest.UserDataHandler.handleN)r/r0r1rXr.rrrr
r5�sr5cCs(t�}|�d�}|�|�d�du�|�ddd�|�|�d�du�|�ddd�|�ddd�|�|�d�dk�|�|�d�dk�|�ddd�|�|�d�du�|�|�d�dk�|��}|�dd|�|�d�}|�|j�o|�d�du�o|�d�dk�|��|��|��dS)Nr�rS�rC�
rA)	rrFr&ZgetUserDatar4r5r�rXr3)r$r�nr6�crrr
�testUserData�s.

��zMinidomTest.testUserDatacCs@|�tjj|j|dd�td�}|�tjj|j|tjjd�dS)N�http://xml.python.org/nsz	xmlns:foorRrS)rfrr�NamespaceErr�
renameNoderZWrongDocumentErrr�)r$r	r(r�rrr
� checkRenameNodeSharedConstraints�s��z,MinidomTest.checkRenameNodeSharedConstraintscCsbtd�}|j}|j}|jd}|�|tjjd�}|�|jdko�|j	dko�|j
duo�|jtjjko�|jduo�|j
dko�|�d�duo�|�d��|�o�|d�|�o�|j�|�o�|j�|��|�|dd�}|�|jdk�ov|j	dk�ov|j
dk�ov|jdk�ov|jdu�ov|j
dk�ov|�d�du�ov|�d�du�ov|�d��|��ov|�dd��|��ov|d�|��ov|d�|��|�|dd	�}|�|jd	k�oX|j	d	k�oX|j
d
k�oX|jdk�oX|jdk�oX|j
dk�oX|�d�du�oX|�d�du�oX|�d�du�oX|�dd�du�oX|�d	��|��oX|�dd
��|��oX|d	�|��oX|d�|��|�|tjjd
�}|�|jd
k�o.|j	d
k�o.|j
du�o.|jtjjk�o.|jdu�o.|j
dk�o.|�d�du�o.|�d�du�o.|�d�du�o.|�d	�du�o.|�dd�du�o.|�d
��|��o.|d
�|��|�tjj|j|dd�|�||�|��dS)Nz<doc a='v'/>rnr��vr^r\)r^r\�http://xml.python.org/ns2zp:dr��p)rcr�r�Zxmlns)rr;rhr`rrr�r&rr_r�r�r�rkr|r�rrjr�rfr_rar3)r$r	rPZattrmapr�rrr
�testRenameAttribute�s�
��������	
�

�
��������	�������������	�����������������	�
����
��zMinidomTest.testRenameAttributecCs�td�}|j}|�|tjjd�}|�|jdkod|jdkod|j	duod|j
tjjkod|jduod|j�
|��|�|dd�}|�|jdko�|jdko�|j	dko�|j
dko�|jduo�|j�
|��|�|dd�}|�|jdk�o|jdk�o|j	dk�o|j
dk�o|jdk�o|j�
|��|�|tjjd	�}|�|jd	k�ov|jd	k�ov|j	du�ov|j
tjjk�ov|jdu�ov|j�
|��|�||�|��dS)
NrRrnr^r�rczp:cr\rdr�)rr;r`rrr�r&r�r_r�r�r�rr�rar3r�rrr
�testRenameElementsh����
�����
�����
�����
�zMinidomTest.testRenameElementcCsLtjj���tjjdd�}|�d�}|�tjj|j	|tjjd�|�
�dS)Nr��commentrS)rrrrr
r�r^rfrr`r3rJr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>rrnr��abr\�cabrgr�rF�y�zZcabd)rr;rEr�r�rrHr+rUrTrG�createCDATASectionr^rFrc�createProcessingInstruction�removeChild)r$r	rPre�splitter�text2rFrrr
�
testWholeTextDs8






zMinidomTest.testWholeTextcCsHtd�}|j}|j}|�|j|ud�|�||�|�|j|ud�dS)Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())rr;rJr&rrc)r$r	rPr�rrr
�testPatch1094164hszMinidomTest.testPatch1094164cCs�dd�}|�\}}}}}|�d�}|�|d�|�|d�|�t|j�dk�|�\}}}}}|�d�}|�|d�|�|d�|�t|j�dk�|�\}}}}}|�d�}|�|d�|�|duo�t|j�d	k�dS)
NcSsRtd�}|j}|j}|j}|j}|�|�d�|�|�|�d�|�|||||fS)Nz<doc>a<e/>d</doc>r�r\)rr;rJrKrNrGrTrm)r	rP�text1rqrprrr
�setuprsz/MinidomTest.testReplaceWholeText.<locals>.setupznew contentr�rBrjrDr�r@)ZreplaceWholeTextr+r&rHrE)r$rur	rPrtrprqrerrr
�testReplaceWholeTextqs"



�z MinidomTest.testReplaceWholeTextcCsvtd�}|j}|j}|�|jduo.|jtjjk�d�	�}|D]2}|�
|�}|j}|�t|d�ol|jtjjk�q>dS)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)rr;Z
schemaTyper&r�	namespacerrr��splitr|�hasattr)r$r	rPr*�namesrrnrrr
�testSchemaType�s��
�zMinidomTest.testSchemaTypecCs@td�}|j}|�d�}|�d�}|�|�d�duoB|joB|j�|�d�|�|�|�d��op|jop|j�|�d�|�|�|�d��o�|�|�d��o�|jo�|j�|�d�}d|_	|�
|�|�|�d�du�o|�|�d���o|j�o|j�o|j�|�|tj
jd�|�|�|�d���o8|j�dS)Nz<doc a1='v' a2='w'/>r�r�rb�w�an)rr;r|r&�getElementByIdr�r�r�ZcreateAttributerk�setAttributeNoder`rrr�)r$r	r�r�r��a3rrr
�testSetIdAttribute�sN

��
��
���

�����zMinidomTest.testSetIdAttributecCsrd}d}td|d|d�}|j}|�|d�}|�|d�}|�|�d�duo^|jo^|j�|�|d�|�|�|�d��o�|jo�|j�|�|d�|�|�|�d��o�|�|�d	��o�|jo�|j�|�|d�}d|_	|�
|�|�|�|�d	���|�|j�|�|j�|�|j�|�|�d�du�|�|tj
jd
�|�|�|�d	���oj|j�dS�Nzhttp://xml.python.org/ns1rcz<doc xmlns:ns1='z
' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>r�r�rbr|r})rr;r�r&r~r�ZsetIdAttributeNSr��createAttributeNSrkrr`rrr��r$ZNS1ZNS2r	r�r�r�r�rrr
�testSetIdAttributeNS�sZ�����������
�z MinidomTest.testSetIdAttributeNScCsnd}d}td|d|d�}|j}|�|d�}|�|d�}|�|�d�duo^|jo^|j�|�|�|�|�|�d��o�|jo�|j�|�|�|�|�|�d��o�|�|�d	��o�|jo�|j�|�|d�}d|_	|�
|�|�|�|�d	���|�|j�|�|j�|�|j�|�|�d�du�|�|tj
jd
�|�|�|�d	���of|j�dSr�)rr;r�r&r~r�ZsetIdAttributeNoder�r�rkrr`rrr�r�rrr
�testSetIdAttributeNode�sZ������
��
���
�z"MinidomTest.testSetIdAttributeNodecCs||fg}|�r|��\}}|�|j|j�|�t|j�t|j��|�|j|j�|�|�|��|�|�|��|jtj	k�r�t|j
�t|j
�t|j�t|j�|�t|j
�t|j
��|�t|j�t|j��tt|j��D]Z}|j�
|�}|j�
|�}|�|j|j�|�|j|j�|�|j|j�|�||f�q�tt|j
��D]\}|j
�
|�}	|j
�
|�}
|�|	j|
j�|�|	j|
j�|�|	j|
j�|�|	|
f��qR|jtjk�r�|�|j�|��|�|j�|��tt|j��D] }|�|j||j|f��q�q
dSr")�popr�r�rHrEr_r,r�rr	rrr�rrrr
rrZ
DOCUMENT_NODEr#r)r$r	r��stackZn1Zn2r�Zno1Zno2r�r�rrr
�assert_recursive_equalsD




z"MinidomTest.assert_recursive_equalcCsDtt�}tdtjd�D]&}t�||�}t�|�}|�||�qdS)Nr@rA)r�sampler��pickle�HIGHEST_PROTOCOL�dumps�loadsr�)r$r	�protor)r�rrr
�testPickledDocument;s

zMinidomTest.testPickledDocumentcCs"tt�}t�|�}|�||�dSr")rr��copy�deepcopyr�rrrr
�testDeepcopiedDocumentBs
z"MinidomTest.testDeepcopiedDocumentcCs(t�}|�|�d��|�t|j�dS)Nzfoo--bar)rrUr^rf�
ValueErrorrLr-rrr
�(testSerializeCommentNodeWithDoubleHyphenGsz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,td�}t|���}|�|jtjjk�dS)Nz$<element xmlns=''>
<foo/>
</element>)rrLr&r�rrr�rrrr
�testEmptyXMLNSValueMszMinidomTest.testEmptyXMLNSValuecCsTtjdkr|�td�}n|�td�}|�td�Wd�n1sF0YdS)NrQzsyntax errorzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)rSrTZassertRaisesRegexrr�r)r$�contextrrr
�!testExceptionOnSpacesInXMLNSValueSs

z-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsftt�}|j�d�d}|�tjj|j|�t	|j
�}|�|j
d�t	|j
�}|�||dk�dS)NZTITLErrA)rr2r;r:rfrrr�rorHrEr#)r$r	Z	title_tagZnum_children_beforeZnum_children_afterrrr
�testDocRemoveChild\s

zMinidomTest.testDocRemoveChildcCstt�}|�dd�}d|_dS)NrkrlZcrash)rr2rnrl)r$r	r�rrr
�"testProcessingInstructionNameErroresz.MinidomTest.testProcessingInstructionNameErrorcCs2d}t|�}t��}|�|�|�|��|�dS�N�E<?xml version="1.0" ?><curriculum status="public" company="example"/>)r�io�StringIOZwritexmlr��getvalue)r$�xml_strr	�outputrrr
�test_minidom_attribute_orderls

z(MinidomTest.test_minidom_attribute_ordercCs d}t|�}|�|��|�dSr�)rr�rL�r$r�r	rrr
�"test_toxml_with_attributes_orderedssz.MinidomTest.test_toxml_with_attributes_orderedcCs d}t|�}|�|��d�dS)Nr�zG<?xml version="1.0" ?>
<curriculum status="public" company="example"/>
�rr�r�r�rrr
�(test_toprettyxml_with_attributes_orderedxs

�z4MinidomTest.test_toprettyxml_with_attributes_orderedcCs d}t|�}|�|��d�dS)N�C<?xml version="1.0" ?><root><node><![CDATA[</data>]]></node></root>zH<?xml version="1.0" ?>
<root>
	<node><![CDATA[</data>]]></node>
</root>
r�r�rrr
�test_toprettyxml_with_cdatas

�z'MinidomTest.test_toprettyxml_with_cdatacCsLd}t|�}|�|�d�djd�t|���}|�|�d�djd�dS)Nr�r(rz</data>)rr+r:rJr�)r$r�Zdom1r�rrr
�test_cdata_parsing�s
zMinidomTest.test_cdata_parsingN)r!)�r/r0r1r&r+r.r7r9r=rQrZr\rarbrdrirorprqrrrurzrr�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�rrrrr
rrrrrrrrr!r"r#r%r&r'r)r7r8r>r?rArBrCrErGrIrKrLrMrNrVrWr5r]rarerfrhrrrsrvr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
r 7s+
		&
		
		"/?M+
$	!$$%			r �__main__)N)r�r�r�r%rZunittestrSZxml.dom.minidomrrrrrrZxml.parsers.expatrZfindfiler2r�rrrZTestCaser r/�mainrrrr
�<module>s:
d

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists