Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 13.59.176.80
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_minidom.cpython-310.pyc
o

ab��@s�ddlZddlZddlZddlmZddlZddlZddlmZm	Z	m
Z
mZddlmZej
ddd�ZdZdd	d
�Zdd�Zd
d�ZGdd�dej�ZedkrUe��dSdS)�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/python-3.10/lib/python3.10/test/test_minidom.py�create_doc_without_doctype�r
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.0�utf-8�us-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@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�testZtestnamerrr�confirm6rzMinidomTest.confirmcCs"|j}|�||kd||f�dS)Nzlooking for %r, found %r)�	wholeTextr&)r$�node�s�trrr�checkWholeText9szMinidomTest.checkWholeTextcCs"t�}|�|j�|�tj�dSr")r�assertFalseZasync_�r$rrrr�testDocumentAsyncAttr=sz!MinidomTest.testDocumentAsyncAttrcCsPttd��}t|�}|��|�t|t��Wd�dS1s!wYdS)N�rb��open�tstfiler�unlinkr&�
isinstancer�r$�filerrrr�testParseFromBinaryFileBs
"�z#MinidomTest.testParseFromBinaryFilecCsTttddd��}t|�}|��|�t|t��Wd�dS1s#wYdS)N�rz
iso-8859-1)rr0r5rrr�testParseFromTextFileHs
"�z!MinidomTest.testParseFromTextFilecCs0tt�}|�|�d�|j�d�k�|��dS)NZLI)rr2r&�getElementsByTagName�documentElementr3�r$rrrr�testGetElementsByTagNameNs

�z$MinidomTest.testGetElementsByTagNamecCs�td�}|j}|jd}|�d�}|�||�|�t|j�dkoS|jjdkoS|jd|uoS|j�d�|uoS|jd|uoS|j�d�|uoS|j	|uoS|j
|uoS|��dkd�|�d�}|�|d�|�t|j�dko�|jjdko�|jd|uo�|j�d�|uo�|jd|uo�|j�d�|uo�|j
|uo�|j|uo�|��d	kd�|�d
�}|�||�|�t|j�dko�|jjdko�|jd|uo�|j�d�|uo�|jd|uo�|j�d�|uo�|j
|uo�|j|uo�|��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�elemZnelemZnelem2rrr�testInsertBeforeTs�


�������
�


�������
�


���������zMinidomTest.testInsertBeforecCsrtd�}|�d�}|�d�}|�d�}|�d�}|j�|�|��}|�|�|�|�|�|�||||||fS)N�<doc/>Zoriginal�foorCZbat)r�createTextNoder;�appendChildZcreateDocumentFragment�r$rZorig�c1�c2Zc3�fragrrr�_create_fragment_test_nodess






z'MinidomTest._create_fragment_test_nodescCs�|��\}}}}}}|j�|d�|�t|jj�||||fkd�|��|��|��\}}}}}}|j�||�|�t|jj�||||fkd�|��|��dS)NzinsertBefore(<fragment>, None)zinsertBefore(<fragment>, orig))rZr;rGr&�tuplerEr3rVrrr�testInsertBeforeFragment�s$
��
��z$MinidomTest.testInsertBeforeFragmentcCsVtt�}|j�|�d��|�|jjdjdk�|�|jjdjdk�|�	�dS)NZHello���z#comment)
rr2r;rU�
createCommentr&rE�nodeName�datar3r<rrr�testAppendChild�s
zMinidomTest.testAppendChildcCsT|��\}}}}}}|j�|�|�t|jj�||||fkd�|��|��dS)NzappendChild(<fragment>))rZr;rUr&r[rEr3rVrrr�testAppendChildFragment�s
��z#MinidomTest.testAppendChildFragmentcCs\|��\}}}}}}|j�||�|��|�t|jj�|||fkd�|��|��dS)NzreplaceChild(<fragment>))rZr;�replaceChildr3r&r[rErVrrr�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$rrPreZnodemaprrr�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�arrr�testNamedNodeMapSetItem�s&

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

zMinidomTest.testNonZerocCs,tt�}|�|j�|��|�|j�dSr")rr2r#rEr3r,r<rrr�
testUnlink�szMinidomTest.testUnlinkcCsDtt��}|�|j�Wd�n1swY|�|j�dSr")rr2r#rEr,r<rrr�testContext�s
�zMinidomTest.testContextcCs.t�}|�|�d��|�|j�|��dS�N�abc)rrUrFr&r;r3r<rrr�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�elrnrrrrz�s
��zMinidomTest.testAAAcCsFtd�}|j}|�dd�|�dd�|�|��dkd�|��dS)Nrvrw�jamrxry�testAAB)rr;r{r&rLr3�r$rr}rrr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�childrrr�testAddAttrszMinidomTest.testAddAttrcCsrt�}|�|�d��}|�t|j�dk�|�dd�|�t|j�dk�|jd=|�t|j�dk�|��dS)Nrtrr�r�rA)rrUrFr&rHrhr{r3r�rrr�testDeleteAttrszMinidomTest.testDeleteAttrcCstt�}|�|�d��}|�dd�|�t|j�dk�|�tj	j
|jd�|�d�|�t|j�dk�|��dS)Nrtr�r�rArSr)
rrUrFr{r&rHrhrfrr�NotFoundErrZremoveAttributer3r�rrr�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�rrr�testRemoveAttrNS3s
���zMinidomTest.testRemoveAttrNScCs�t�}|�|�d��}|�dd�|�t|j�dk�|�d�}|�t	j
j|jd�|�
||�|��|�t|j�dkoB|�d�du�t�}|�|�d��}|�d�}|�t	j
j|j|�|��dS)NrSrwr~rAr)rrUrFr{r&rHrhr|rfrrr�ZremoveAttributeNode�assertIsr3)r$rr�r(�dom2�child2Znode2rrr�testRemoveAttributeNodeAs&
��
�z#MinidomTest.testRemoveAttributeNodecCs6t�}|�|�d��}|�dd�|�|�d��dS)NrSrwr~)rrUrFr{r&ZhasAttributer�rrr�testHasAttributeSszMinidomTest.testHasAttributecCs�td�}|j}|�dd�|�t|j�dk�|�dd�|�d�|�t|j�dkoG|jdjdkoG|jdjdkoG|�	d�dkoG|�
d�j�d|jd<|�t|j�dkos|jdjdkos|jdjdkos|�	d�dkos|jdj�|�dd�|�t|j�dko�|jdjdko�|jdjdko�|�	d�dko�|jdjdko�|jdjdko�|�	d�dk�d	|jd<|�t|j�dko�|jdjdko�|jdjdko�|�	d�dko�|jdjd	ko�|jdjd	ko�|�	d�d	k�|��dS)
Nrvrwr~rAZbamZhamZspam2r@Zbam2)
rr;r{r&rHrh�setIdAttributerkrlr�r|�isIdr3r�rrr�testChangeAttrYsl
���
�
���
�������
������zMinidomTest.testChangeAttrcC�dSr"r�r$rrr�testGetAttrList�zMinidomTest.testGetAttrListcCr�r"rr�rrr�testGetAttrValues�r�zMinidomTest.testGetAttrValuescCr�r"rr�rrr�testGetAttrLength�r�zMinidomTest.testGetAttrLengthcCs.t�}|�|�dd��}|�|�d�d�dS)Nr�r��missing�)rrUr��assertEqualr�r�rrr�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�rrr�testGetAttributeNS�s"
�����zMinidomTest.testGetAttributeNScCr�r"rr�rrr�testGetAttributeNode��z MinidomTest.testGetAttributeNodecCs|d}t|�}|�dd�}|�t|�dko6|djdko6|djdko6|djdko6|djdko6|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$�drZelemsrrr�testGetElementsByTagNameNS�s"������z&MinidomTest.testGetElementsByTagNameNScCs"|�||�}|�t|�dk�dSr)r�r&rH)r$rZnsuriZlnameZnodelistrrr�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-rrr�+testGetEmptyNodeListFromElementsByTagNameNS�s(������z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNScC�@t�}|�|�d��}t|�}t|�}|�||k�|��dSrs�rrUrF�repr�strr&r3�r$rr}Zstring1Zstring2rrr�testElementReprAndStr��z!MinidomTest.testElementReprAndStrcCr�rsr�r�rrr�testElementReprAndStrUnicode�r�z(MinidomTest.testElementReprAndStrUnicodecCsPt�}|�|�dd��}t|�}t|�}|�||k�|�d|v�|��dS)Nzhttp://www.slashdot.orgz	slash:abc)rrUr�r�r�r&r3r�rrr�testElementReprAndStrUnicodeNS�s
�z*MinidomTest.testElementReprAndStrUnicodeNScCsDt�}|�|�d��}|�dd�}|�t|�t|�k�|��dS)Nrtr�)rrUrFr{r&r�r�r3)r$rr}r(rrr�testAttributeRepr�s
zMinidomTest.testAttributeReprcCr�r"rr�rrr�testTextNodeRepr�r�zMinidomTest.testTextNodeReprcCs.d}t|�}|��}|��|�||k�dS)Nz <?xml version="1.0" ?><a b="c"/>)rrLr3r&�r$r�rZdomstrrrr�testWriteXML�s
zMinidomTest.testWriteXMLcCs:d}t|�}|jdd�}|��|�||�dd�k�dS)Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)Znewl�
)r�toprettyxmlr3r&�replacer�rrr�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$�declrrr� 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�rrr�)test_toprettyxml_with_adjacent_text_nodess


�z5MinidomTest.test_toprettyxml_with_adjacent_text_nodescCsVdD]&}t|�}t|���}|�|�d�djd��|�d�djd���qdS)N)r�z<A><B>C</B></A>�Br)rr�r�r:rErL)r$r�rr�rrr�/test_toprettyxml_preserves_content_of_text_node
s��z;MinidomTest.test_toprettyxml_preserves_content_of_text_nodecCs�td�}|jj}|�|jdkoE|jdkoE|jdkoE|jtj	koE|j
duoE|��oEt|j
�dkoE|jduoE|jduoE|jduoE|jtjjk�dS)Nz<e><?mypi 	
 data 	
 ?></e>Zmypizdata 	
 r)rr;rJr&�targetr`r_�nodeTyper�PROCESSING_INSTRUCTION_NODErh�
hasChildNodesrHrErKr�r�rr�EMPTY_NAMESPACE)r$r�pirrr�testProcessingInstructions.��
������	�
�z%MinidomTest.testProcessingInstructioncCr�r"rr�rrr�testProcessingInstructionRepr%r�z)MinidomTest.testProcessingInstructionReprcCr�r"rr�rrr�testTextRepr'r�zMinidomTest.testTextReprcCr�r"rr�rrr�
testWriteText)r�zMinidomTest.testWriteTextcCr�r"rr�rrr�testDocumentElement+r�zMinidomTest.testDocumentElementcCs:td�}|�d�}|�tjj|j|�|��|��dS)NrR�extra)rrFrfrrrgrUr3�r$rrPrrr�testTooManyDocumentElements-s

z'MinidomTest.testTooManyDocumentElementscCr�r"rr�rrr�testCreateElementNS5r�zMinidomTest.testCreateElementNScCr�r"rr�rrr�testCreateAttributeNS7r�z!MinidomTest.testCreateAttributeNScCr�r"rr�rrr�	testParse9r�zMinidomTest.testParsecCr�r"rr�rrr�testParseString;r�zMinidomTest.testParseStringcCr�r"rr�rrr�testComment=r�zMinidomTest.testCommentcCr�r"rr�rrr�testAttrListItem?r�zMinidomTest.testAttrListItemcCr�r"rr�rrr�testAttrListItemsAr�zMinidomTest.testAttrListItemscCr�r"rr�rrr�testAttrListItemNSCr�zMinidomTest.testAttrListItemNScCr�r"rr�rrr�testAttrListKeysEr�zMinidomTest.testAttrListKeyscCr�r"rr�rrr�testAttrListKeysNSGr�zMinidomTest.testAttrListKeysNScCsPtd�}|j}|j}|�d�}|�d�}|�|�|��|�tj	j
|jd�dS)Nz<doc a=''/>rn)rr;rhr|ZremoveNamedItemr&�
isSameNoderfrrr��r$rr�rm�a1�a2rrr�testRemoveNamedItemIs

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�rrr�testRemoveNamedItemNSRs�z!MinidomTest.testRemoveNamedItemNScCr�r"rr�rrr�testAttrListValues\r�zMinidomTest.testAttrListValuescCr�r"rr�rrr�testAttrListLength^r�zMinidomTest.testAttrListLengthcCr�r"rr�rrr�testAttrList__getitem__`r�z#MinidomTest.testAttrList__getitem__cCr�r"rr�rrr�testAttrList__setitem__br�z#MinidomTest.testAttrList__setitem__cCr�r"rr�rrr�testSetAttrValueandNodeValuedr�z(MinidomTest.testSetAttrValueandNodeValuecCr�r"rr�rrr�testParseElementfr�zMinidomTest.testParseElementcCr�r"rr�rrr�testParseAttributeshr�zMinidomTest.testParseAttributescCr�r"rr�rrr�testParseElementNamespacesjr�z&MinidomTest.testParseElementNamespacescCr�r"rr�rrr�testParseAttributeNamespaceslr�z(MinidomTest.testParseAttributeNamespacescCr�r"rr�rrr�testParseProcessingInstructionsnr�z+MinidomTest.testParseProcessingInstructionscCr�r"rr�rrr�testChildNodespr�zMinidomTest.testChildNodescCr�r"rr�rrr�testFirstChildrr�zMinidomTest.testFirstChildcCs<td�}|j}|�|���td�}|j}|�|���dS)Nr>rR)rr;r#r�r,)r$rrr��doc2rrr�testHasChildNodestszMinidomTest.testHasChildNodescCs�|j}|j}t|���}t|���}|��|��|�||kd�tt|��D]5}|�|�}	|�|�}
|�|	|
uoQ|	j|
jkoQ|	j	|
j	koQ|	j
|
j
koQ|	j|
jkd�|�|
j|ud�q(dS)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�rrr�!_testCloneElementCopiesAttributes|s0


�
�
�
���z-MinidomTest._testCloneElementCopiesAttributescCs^td�}|j}|�|�}|�||d|rdpd�d|_|_|�dd�|�dd	�||fS)
Nz<doc attr='value'><foo/></doc>ZtestCloneElementZDeepZShallowZMODIFIED�attrz	NEW VALUEZaddedZVALUE)rr;�	cloneNoder�r�r_r{)r$�deeprrO�clonerrr�_setupCloneElement�s
�zMinidomTest._setupCloneElementcC�R|�d�\}}|�t|j�dko |jjdko |jduo |��dkd�|��dS)Nrz<doc attr="value"/>�testCloneElementShallow�rr&rHrErI�
parentNoderLr3�r$rrrrrr��
��
�z#MinidomTest.testCloneElementShallowcCr)NrAz<doc attr="value"><foo/></doc>�testCloneElementDeeprr	rrrr�r
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!)rrr&�r$rr�rrr�testCloneDocumentShallow�s


�z$MinidomTest.testCloneDocumentShallowcCs�td�}|�d�}|�|�|�p|�|�d�|�t|j�t|j�kd�|�|jjtj	kd�|�|jj
�|�d�|�|j�|j�d�|jduro|�|jjtjkd�|�|jj
�|��|�|j�|j��dSdS)	NrrAz4testCloneDocumentDeep: document objects not distinctz8testCloneDocumentDeep: wrong number of Document childrenz:testCloneDocumentDeep: documentElement not an ELEMENT_NODEz@testCloneDocumentDeep: documentElement owner is not new documentz;testCloneDocumentDeep: documentElement should not be sharedz7testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE)
rrr&r�rHrEr;r�rZELEMENT_NODErr
�DOCUMENT_TYPE_NODEr
rrr�testCloneDocumentDeep�s0
�����
��z!MinidomTest.testCloneDocumentDeepcCs�t�}|�d�}|�|duoV|j|jkoV|j|jkoV|j|jkoV|j|jkoVt|j�t|j�koV|j�	t|j��duoVt|j
�t|j
�koV|j
�	t|j
��duoVt|j�dk�tt|j��D]G}|j�	|�}|j�	|�}|�|�
|�o�|�
|�o�|j|jko�|j|jko�|j|jko�|j|jko�|j|jko�|j|jko�|j|jk�q_tt|j
��D]/}|j
�	|�}|j
�	|�}|�|�
|�o�|�
|�o�|j|jko�|j|jko�|j|jk�q�dS)NrAr)rrr&r_�name�publicId�systemIdrHrrrrEr�r��notationNamerrr)r$r
rr�ZseZceZsnZcnrrr�testCloneDocumentTypeDeepOk�sl

�
�
�
�����	�

�
�
�
�
�
�
�
�	
�
�
�
��z'MinidomTest.testCloneDocumentTypeDeepOkcC�&t�}|j�d�}|�|dud�dS)NrA�testCloneDocumentTypeDeepNotOk�rr
rr&�r$rrrrrr��z*MinidomTest.testCloneDocumentTypeDeepNotOkcCs�t�}|�d�}|�|duoJ|j|jkoJ|j|jkoJ|j|jkoJ|j|jkoJt|j�dkoJ|j�	d�duoJt|j
�dkoJ|j
�	d�duoJt|j�dk�dSr)rrr&r_rrrrHrrrrE)r$r
rrrr�testCloneDocumentTypeShallowOk�s*

�
�
�
�����	�z*MinidomTest.testCloneDocumentTypeShallowOkcCr)Nr�!testCloneDocumentTypeShallowNotOkrrrrrrrz-MinidomTest.testCloneDocumentTypeShallowNotOkcCs*td�}td�}|�tjj|j||�dS)NrR)rrfrr�NotSupportedErr�
importNode)r$r�testNameZdoc1r�rrr�check_import_document
sz!MinidomTest.check_import_documentcC�|�dd�dS)Nr�testImportDocumentShallow�r r�rrrr"rz%MinidomTest.testImportDocumentShallowcCr!)NrA�testImportDocumentDeepr#r�rrrr$rz"MinidomTest.testImportDocumentDeepcC�(t�}t�}|�tjj|j|jd�dSr�rr
rfrrrrr
�r$�srcr�rrr�testImportDocumentTypeShallow�
�z)MinidomTest.testImportDocumentTypeShallowcCr%�NrAr&r'rrr�testImportDocumentTypeDeepr*z&MinidomTest.testImportDocumentTypeDeepcCs�td�}|j�d�}|�|d�|�|�}|�|�|��|�|�|��|�|jdu|d�|�|j�|j�|d�|�|j	|d�dS)Nz<doc attr='value'/>rz: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
rr;r|ZassertNotEqualrr&r�rjrZ	specified)r$rrrrrrrr�check_clone_attribute&s
���z!MinidomTest.check_clone_attributecCr!)Nr�testCloneAttributeShallow�r-r�rrrr.4rz%MinidomTest.testCloneAttributeShallowcCr!)NrA�testCloneAttributeDeepr/r�rrrr07rz"MinidomTest.testCloneAttributeDeepcCsJtd�}|j}|�|jtj�|�|�}|�|j|jko!|j	|j	k�dS)Nz<?target data?><doc/>)
rrJr�r�rr�rr&r�r`)r$rrrr�rrrr�check_clone_pi:s

�zMinidomTest.check_clone_picCr!)Nr�testClonePIShallow�r1r�rrrr2BrzMinidomTest.testClonePIShallowcCr!)NrA�testClonePIDeepr3r�rrrr4ErzMinidomTest.testClonePIDeepc
Cstjj�d���}Gdd�d�}|�}|j}|jd}|�dd|�|r?|jdd�}|�	|j
jjd	�tjj
j}|jjd}	n't�|d
d��|jdd�}Wd�n1sWwYtjj
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$r5r6r`r(r7rrr�handleUs

z;MinidomTest.check_clone_node_entity.<locals>.Handler.handleN)�__name__�
__module__�__qualname__r9rrrr�HandlerTsr=Zsmiler6r`T)ru%Don't let entities make you frown ☺r)rrrr�stripr
r�setUserDatarr�r;rJr'�UserDataHandlerZ
NODE_IMPORTEDrZ	swap_attrZNODE_CLONEDr5r6r`r�r(r7)
r$Zclone_documentZdocumentr=�handlerr
rrr5r7rrr�check_clone_node_entityHs2
�	
�
�

z#MinidomTest.check_clone_node_entitycCs|�d�|�d�dS)NFT)rBr�rrr�testCloneNodeEntityws
zMinidomTest.testCloneNodeEntitycCs�td�}|j}|�|�d��|�|�d��|�t|j�dko%|jjdkd�|��|�t|j�dkoF|jjdkoF|j	|j
uoF|j	jdkd�|��td�}|j}|�|�d	��|��|�t|j�d
kon|jjd
kd�|��dS)NrR�first�secondr@ztestNormalize -- preparationrA�firstsecondztestNormalize -- resultr�rz*testNormalize -- single empty node removed)
rr;rUrTr&rHrErI�	normalizerJrKr`r3�r$rrOrrr�
testNormalize{s6
�
�
�
�
�zMinidomTest.testNormalizecCs�td�}|j}|�|�d��|�|�d��|�|�d��|�t|j�dko-|jjdkd�|�	�|�t|j�dkoh|jjdkoh|j
jdkoh|j
|juoh|j
j
|juoh|j
jduoh|jj|j
uoh|jj
dud	�|��dS)
NrRrDrEr�rBz1testNormalizeCombineAndNextSibling -- preparationr@rFz-testNormalizeCombinedAndNextSibling -- result)rr;rUrTrFr&rHrErIrGrJr`rKrNrMr3rHrrr�"testNormalizeCombineAndNextSibling�s6
�
�
�
��
��
�	z.MinidomTest.testNormalizeCombineAndNextSiblingcCs�td�}|j}|�|�d��|�|�d��|�t|j�dko%|jjdkd�|��|�t|j�dkoR|jjdkoR|j	j
dkoR|j	|juoR|j	jduoR|j	j
dud�|��dS)NrRrDr�r@z1testNormalizeDeleteWithPrevSibling -- preparationrAz,testNormalizeDeleteWithPrevSibling -- result�rr;rUrTr&rHrErIrGrJr`rKrNrMr3rHrrr�"testNormalizeDeleteWithPrevSibling��,
�
�
�
�
�
�z.MinidomTest.testNormalizeDeleteWithPrevSiblingcCs�td�}|j}|�|�d��|�|�d��|�t|j�dko%|jjdkd�|��|�t|j�dkoR|jjdkoR|j	j
dkoR|j	|juoR|j	jduoR|j	j
dud�|��dS)NrRr�rEr@z1testNormalizeDeleteWithNextSibling -- preparationrAz,testNormalizeDeleteWithNextSibling -- resultrKrHrrr�"testNormalizeDeleteWithNextSibling�rMz.MinidomTest.testNormalizeDeleteWithNextSiblingcCs�td�}|j}|�|�d��|�|�d��|�|�d��|�t|j�dko-|jjdkd�|�	�|�t|j�dkob|jjdkob|j
|juob|j
j|juob|j
j
duob|jj
|j
uob|jjdud�|��dS)NrRr�r�rBz1testNormalizeDeleteWithTwoSiblings -- preparationr@z,testNormalizeDeleteWithTwoSiblings -- result)rr;rUrFrTr&rHrErIrGrJrKrNrMr3rHrrr�)testNormalizeDeleteWithTwoNonTextSiblings�s2
�
�
��
��
�z5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblingscCs�td�}|j}|�|�d��|�|�d��|�|�d��|�|�d��|�|�d��|�t|j�dko=|jjdkd�|��|�t|j�dkoj|jjdkoj|j	|j
uoj|j	jdkoj|j	jduoj|j	j
dud	�|��dS)
NrRr�rEZfourth�z,testNormalizeDeleteAndCombine -- preparationrAZsecondfourthz'testNormalizeDeleteAndCombine -- result)rr;rUrTr&rHrErIrGrJrKr`rMrNr3rHrrr�testNormalizeDeleteAndCombine�s2
�
�
�
�
�
�z)MinidomTest.testNormalizeDeleteAndCombinecCstd�}|j}|jd�|�d��|jd�|�d��|jdjd�|�d��|jd�|�d��|�|�d��|�t|j�dko�|jjdko�t|jdj�d	ko�|jdjjd	ko�t|jdj�dko�|jdjjdko�t|jdjdj�d
ko�|jdjdjjd
kd�|��|�t|j�d
ko�|jjd
ko�t|jdj�d
ko�|jdjjd
ko�t|jdj�d
ko�|jdjjd
ko�t|jdjdj�dko�|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&rHrIrGr`rNrMr3rHrrr�testNormalizeRecursion�s�
�������	
�������	����������	�
��
z"MinidomTest.testNormalizeRecursioncCs8td�}|jjd}|�|jtj�|��|��dS)Nz<o>text</o>r)	rr;rEr�r�r�	TEXT_NODErGr3)r$rrerrr�testBug07778845s
zMinidomTest.testBug0777884cCs>td�}|j}d|jd_|��|�|jdjdud�dS)Nz<o><i/>t</o>r�rAr]z)Final child's .nextSibling should be None)rr;rErlrGr&rN�r$rr(rrr�testBug1433694=s�zMinidomTest.testBug1433694cCsjtd�}|j}|j\}}}|�|j|uo,|jduo,|j|uo,|j|uo,|jduo,|j|ud�|��dS)Nz<doc><?pi?>text?<elm/></doc>�testSiblings)rr;rEr&rNrMr3)r$rrOr�reZelmrrrrXEs����
�zMinidomTest.testSiblingscCsrtd�}|j}|jd}|j\}}|jd}|�|j|uo0|j|uo0|j|uo0|j|uo0|j|ud�|��dS)Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r�testParents)rr;rEr&rr3)r$rrOZelm1Zelm2aZelm2bZelm3rrrrYSs"�


���
�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�childrenZdocelemrrr�testNodeListItembs����zMinidomTest.testNodeListItemcCs�td�}|�|��d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d	�d
�d	��|�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>s0<fran�ais>Comment �a va ? Tr�s bien ?</fran�ais>)rr�rL�encoderf�UnicodeDecodeErrorr3r-rrr�
testEncodingsns*
������zMinidomTest.testEncodingscCsttd�}|�|��d�|�|jdd�d�|�|jdd�d�|�|jdd�d�|�|�dd�d	�|��dS)
Nr\r])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-rrr�testStandalone�s"
�����zMinidomTest.testStandalonec@seZdZdZdd�ZdS)zMinidomTest.UserDataHandlerrcCs*|�||d|�|�|dd�d|_dSr+)r?�calledr8rrrr9�s
z"MinidomTest.UserDataHandler.handleN)r:r;r<rbr9rrrrr@�sr@cCs$t�}|�d�}|�|�d�du�|�ddd�|�|�d�du�|�ddd�|�ddd�|�|�d�dk�|�|�d�dk�|�ddd�|�|�d�du�|�|�d�dk�|��}|�dd|�|�d�}|�|jo�|�d�duo�|�d�dk�|��|��|��dS)Nr�rS�rC�
rA)	rrFr&ZgetUserDatar?r@rrbr3)r$r�nrA�crrr�testUserData�s.


��zMinidomTest.testUserDatacCs@|�tjj|j|dd�td�}|�tjj|j|tjjd�dS)N�http://xml.python.org/nsz	xmlns:foorRrS)rfrr�NamespaceErr�
renameNoderZWrongDocumentErrr�)r$rr(r�rrr� checkRenameNodeSharedConstraints�s��z,MinidomTest.checkRenameNodeSharedConstraintscCsLtd�}|j}|j}|jd}|�|tjjd�}|�|jdko[|j	dko[|j
duo[|jtjjko[|jduo[|j
dko[|�d�duo[|�d��|�o[|d�|�o[|j�|�o[|j�|��|�|dd�}|�|jdko�|j	dko�|j
dko�|jdko�|jduo�|j
dko�|�d�duo�|�d�duo�|�d��|�o�|�dd��|�o�|d�|�o�|d�|��|�|dd	�}|�|jd	k�o!|j	d	k�o!|j
d
k�o!|jdk�o!|jdk�o!|j
dk�o!|�d�du�o!|�d�du�o!|�d�du�o!|�dd�du�o!|�d	��|��o!|�dd
��|��o!|d	�|��o!|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��vrhrf)rhrf�http://xml.python.org/ns2zp:dr��p)rmr�r�Zxmlns)rr;rhrjrrr�r&rr_r�r�r�rkr|r�rrjr�rfrirkr3)r$rrPZattrmaprrrr�testRenameAttribute�s�
��������
	�

�
��������	������������	����������������	�
����
��zMinidomTest.testRenameAttributecCs~td�}|j}|�|tjjd�}|�|jdko2|jdko2|j	duo2|j
tjjko2|jduo2|j�
|��|�|dd�}|�|jdko[|jdko[|j	dko[|j
dko[|jduo[|j�
|��|�|dd�}|�|jdko�|jdko�|j	dko�|j
dko�|jdko�|j�
|��|�|tjjd	�}|�|jd	ko�|jd	ko�|j	duo�|j
tjjko�|jduo�|j�
|��|�||�|��dS)
NrRrnrhr�rmzp:crfrnr�)rr;rjrrr�r&r�r_r�r�r�rr�rkr3r�rrr�testRenameElementsh����
�����
�����
�����
�zMinidomTest.testRenameElementcCsLtjj���tjjdd�}|�d�}|�tjj|j	|tjjd�|�
�dS)Nr��commentrS)rrrrr	r�r^rfrrjr3rVrrr�testRenameOther2s
�
�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��abrf�cabrqr�rR�y�zZcabd)rr;rEr�r�rrTr+rUrTrG�createCDATASectionr^rFrc�createProcessingInstruction�removeChild)r$rrPre�splitter�text2rRrrr�
testWholeText<s8






zMinidomTest.testWholeTextcCsHtd�}|j}|j}|�|j|ud�|�||�|�|j|ud�dS)Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())rr;rJr&rrc)r$rrPr�rrr�testPatch1094164`szMinidomTest.testPatch1094164cCs�dd�}|�\}}}}}|�d�}|�|d�|�|d�|�t|j�dk�|�\}}}}}|�d�}|�|d�|�|d�|�t|j�dk�|�\}}}}}|�d�}|�|d�|�|duoit|j�d	k�dS)
NcSsRtd�}|j}|j}|j}|j}|�|�d�|�|�|�d�|�|||||fS)Nz<doc>a<e/>d</doc>r�rf)rr;rJrKrNrGrTrw)rrP�text1r{rzrrr�setupjsz/MinidomTest.testReplaceWholeText.<locals>.setupznew contentr�rBrtrPr�r@)ZreplaceWholeTextr+r&rHrE)r$rrrPr~rzr{rerrr�testReplaceWholeTextis"



�z MinidomTest.testReplaceWholeTextcCsvtd�}|j}|j}|�|jduo|jtjjk�d�	�}|D]}|�
|�}|j}|�t|d�o6|jtjjk�qdS)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$rrPr*�namesrrnrrr�testSchemaType�s ��
��zMinidomTest.testSchemaTypecCs6td�}|j}|�d�}|�d�}|�|�d�duo!|jo!|j�|�d�|�|�|�d��o8|jo8|j�|�d�|�|�|�d��oV|�|�d��oV|joV|j�|�d�}d|_	|�
|�|�|�d�duo�|�|�d��o�|jo�|jo�|j�|�|tj
jd�|�|�|�d��o�|j�dS)Nz<doc a1='v' a2='w'/>r�r�rl�w�an)rr;r|r&�getElementByIdr�r�r�ZcreateAttributerk�setAttributeNoderjrrr�)r$rr�r�r��a3rrr�testSetIdAttribute�sN

��
��
���

�����zMinidomTest.testSetIdAttributecCspd}d}td|d|d�}|j}|�|d�}|�|d�}|�|�d�duo/|jo/|j�|�|d�|�|�|�d��oG|joG|j�|�|d�|�|�|�d��of|�|�d	��of|jof|j�|�|d�}d|_	|�
|�|�|�|�d	���|�|j�|�|j�|�|j�|�|�d�du�|�|tj
jd
�|�|�|�d	��o�|j�dS�Nzhttp://xml.python.org/ns1rmz<doc xmlns:ns1='z
' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>r�r�rlr�r�)rr;r�r&r�r�ZsetIdAttributeNSr��createAttributeNSrkr�rjrrr��r$ZNS1ZNS2rr�r�r�r�rrr�testSetIdAttributeNS�sZ�����������
�z MinidomTest.testSetIdAttributeNScCsld}d}td|d|d�}|j}|�|d�}|�|d�}|�|�d�duo/|jo/|j�|�|�|�|�|�d��oF|joF|j�|�|�|�|�|�d��od|�|�d	��od|jod|j�|�|d�}d|_	|�
|�|�|�|�d	���|�|j�|�|j�|�|j�|�|�d�du�|�|tj
jd
�|�|�|�d	��o�|j�dSr�)rr;r�r&r�r�ZsetIdAttributeNoder�r�rkr�rjrrr�r�rrr�testSetIdAttributeNode�sZ������
��
���
�z"MinidomTest.testSetIdAttributeNodecCs||fg}|�r	|��\}}|�|j|j�|�t|j�t|j��|�|j|j�|�|�|��|�|�|��|jtj	kr�t|j
�t|j
�t|j�t|j�|�t|j
�t|j
��|�t|j�t|j��tt|j��D]-}|j�
|�}|j�
|�}|�|j|j�|�|j|j�|�|j|j�|�||f�qstt|j
��D]-}|j
�
|�}	|j
�
|�}
|�|	j|
j�|�|	j|
j�|�|	j|
j�|�|	|
f�q�|jtjkr�|�|j�|��|�|j�|��tt|j��D]}|�|j||j|f�q�|sdSdSr")�popr�r�rHrEr_r,r�rrrrr�rrrrrrZ
DOCUMENT_NODEr#r)r$rr��stackZn1Zn2r�Zno1Zno2r�r�rrr�assert_recursive_equalsF




�z"MinidomTest.assert_recursive_equalcCsDtt�}tdtjd�D]}t�||�}t�|�}|�||�qdS)Nr@rA)r�sampler��pickle�HIGHEST_PROTOCOL�dumps�loadsr�)r$r�protor)r�rrr�testPickledDocument3s
�zMinidomTest.testPickledDocumentcCs"tt�}t�|�}|�||�dSr")rr��copy�deepcopyr�r
rrr�testDeepcopiedDocument:s
z"MinidomTest.testDeepcopiedDocumentcCs(t�}|�|�d��|�t|j�dS)Nzfoo--bar)r
rUr^rf�
ValueErrorrLr-rrr�(testSerializeCommentNodeWithDoubleHyphen?sz4MinidomTest.testSerializeCommentNodeWithDoubleHyphencCs,td�}t|���}|�|jtjjk�dS)Nz$<element xmlns=''>
<foo/>
</element>)rrLr&r�rrr�r
rrr�testEmptyXMLNSValueEszMinidomTest.testEmptyXMLNSValuecCs:|�td��
td�Wd�dS1swYdS)NzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)ZassertRaisesRegexr�rr�rrr�!testExceptionOnSpacesInXMLNSValueKs
"�z-MinidomTest.testExceptionOnSpacesInXMLNSValuecCsftt�}|j�d�d}|�tjj|j|�t	|j
�}|�|j
d�t	|j
�}|�||dk�dS)NZTITLErrA)rr2r;r:rfrrr�ryrHrEr#)r$rZ	title_tagZnum_children_beforeZnum_children_afterrrr�testDocRemoveChildOs

zMinidomTest.testDocRemoveChildcCstt�}|�dd�}d|_dS)NrurvZcrash)rr2rxrl)r$rr�rrr�"testProcessingInstructionNameErrorXs
z.MinidomTest.testProcessingInstructionNameErrorcCs2d}t|�}t��}|�|�|�|��|�dS�N�E<?xml version="1.0" ?><curriculum status="public" company="example"/>)r�io�StringIOZwritexmlr��getvalue)r$�xml_strr�outputrrr�test_minidom_attribute_order_s

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

�z4MinidomTest.test_toprettyxml_with_attributes_orderedcCr�)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�rrr�test_toprettyxml_with_cdatarr�z'MinidomTest.test_toprettyxml_with_cdatacCsLd}t|�}|�|�d�djd�t|���}|�|�d�djd�dS)Nr�r(rz</data>)rr+r:rJr�)r$r�Zdom1r�rrr�test_cdata_parsing{s
zMinidomTest.test_cdata_parsingN)r!)�r:r;r<r&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�rrrrrrrrrr r"r$r)r,r-r.r0r1r2r4rBrCrIrJrLrNrOrQrSrUrWrXrYr[r`rar@rgrkrorprrr|r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr 5s+
		&
		
		"/?M+
$	!$$%		r �__main__r")r�r�r�r%rZunittestZxml.dom.minidomrrrrrrZfindfiler2r�r
rrZTestCaser r:�mainrrrr�<module>s:
Y�
© 2025 GrazzMean