a
    ¼3j° ć                   @   sŖ   d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ ejdddZdZdd	d
Zdd Zdd ZG dd dejZedkr¦e ”  dS )é    N)Śsupport)ŚparseŚNodeŚDocumentŚparseString)ŚgetDOMImplementationztest.xmlZxmltestdata)Zsubdira  <?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>c                 C   s   t   d d| ”S )NŚdoc)r   ŚcreateDocument)Śdoctype© r   śM/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_minidom.pyŚcreate_doc_without_doctype   s    r   c                  C   sx   t   dd d ”} g | j_g | j_tjj dd d”}| jj 	|” tjj 
dd dd”}d|_d|_d|_| jj 	|” | S )	Nr   zmy-notationz"http://xml.python.org/notations/myz	my-entityz!http://xml.python.org/entities/myz1.0śutf-8śus-ascii)r   ZcreateDocumentTypeŚentitiesZ_seqŚ	notationsŚxmlŚdomŚminidomZNotationŚappendZEntityŚversionŚencodingŚactualEncoding)r
   ZnotationŚentityr   r   r   Ścreate_nonempty_doctype   s     ’žr   c                  C   s.   t  } t| }|| j d”_|| j d”_|S ©Nr   )r   r   r   ŚitemŚownerDocumentr   )r
   r   r   r   r   Ścreate_doc_with_doctype.   s
    r   c                   @   s¬  e Zd Zd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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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<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Ę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å ZtG dę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ū 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dd ZdS (  ŚMinidomTestŚTestc                 C   s   |   ||” d S ©N)Ś
assertTrue)ŚselfŚtestZtestnamer   r   r   Śconfirm6   s    zMinidomTest.confirmc                 C   s"   |j }|  ||kd||f ” d S )Nzlooking for %r, found %r)Ś	wholeTextr%   )r#   ŚnodeŚsŚtr   r   r   ŚcheckWholeText9   s    zMinidomTest.checkWholeTextc                 C   s"   t  }|  |j” |  t j” d S r!   )r   ŚassertFalseZasync_©r#   r   r   r   r   ŚtestDocumentAsyncAttr=   s    z!MinidomTest.testDocumentAsyncAttrc                 C   sN   t td0}t|}| ”  |  t|t” W d    n1 s@0    Y  d S )NŚrb©ŚopenŚtstfiler   Śunlinkr%   Ś
isinstancer   ©r#   Śfiler   r   r   r   ŚtestParseFromBinaryFileB   s    z#MinidomTest.testParseFromBinaryFilec                 C   sR   t tddd0}t|}| ”  |  t|t” W d    n1 sD0    Y  d S )NŚrz
iso-8859-1)r   r/   r4   r   r   r   ŚtestParseFromTextFileH   s    z!MinidomTest.testParseFromTextFilec                 C   s0   t t}|  | d”|j d”k” | ”  d S )NZLI)r   r1   r%   ŚgetElementsByTagNameŚdocumentElementr2   ©r#   r   r   r   r   ŚtestGetElementsByTagNameN   s
    
’z$MinidomTest.testGetElementsByTagNamec                 C   s   t d}|j}|jd }| d”}| ||” |  t|jdko¦|jjdko¦|jd |u o¦|j d”|u o¦|jd |u o¦|j d”|u o¦|j	|u o¦|j
|u o¦| ” dkd” | d”}| |d ” |  t|jdkoJ|jjdkoJ|jd |u oJ|j d”|u oJ|jd |u oJ|j d”|u oJ|j
|u oJ|j|u oJ| ” d	kd” | d
”}| ||” |  t|jdkoī|jjdkoī|jd |u oī|j d”|u oī|jd |u oī|j d”|u oī|j|u oī|j|u oī| ” dkd” | ”  d S )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>)r   r:   Ś
childNodesŚcreateElementŚinsertBeforer%   ŚlenŚlengthr   Ś
firstChildŚ	lastChildŚtoxmlŚpreviousSiblingŚnextSiblingr2   )r#   r   ŚrootŚelemZnelemZnelem2r   r   r   ŚtestInsertBeforeT   s    


’žżüūśł
÷


’žżüūśł
÷


’žżüūśł’özMinidomTest.testInsertBeforec                 C   sr   t d}| d”}| d”}| d”}| d”}|j |” | ” }| |” | |” | |” ||||||fS )Nś<doc/>ZoriginalŚfoorB   Zbat)r   ŚcreateTextNoder:   ŚappendChildZcreateDocumentFragment©r#   r   ZorigŚc1Śc2Zc3Śfragr   r   r   Ś_create_fragment_test_nodes   s    






z'MinidomTest._create_fragment_test_nodesc                 C   sØ   |   ” \}}}}}}|j |d ” |  t|jj||||fkd” | ”  | ”  |   ” \}}}}}}|j ||” |  t|jj||||fkd” | ”  | ”  d S )NzinsertBefore(<fragment>, None)zinsertBefore(<fragment>, orig))rY   r:   rF   r%   ŚtuplerD   r2   rU   r   r   r   ŚtestInsertBeforeFragment   s$    
’ž
’žz$MinidomTest.testInsertBeforeFragmentc                 C   sV   t t}|j | d”” |  |jjd jdk” |  |jjd jdk” | 	”  d S )NZHelloé’’’’z#comment)
r   r1   r:   rT   ŚcreateCommentr%   rD   ŚnodeNameŚdatar2   r;   r   r   r   ŚtestAppendChild   s
    zMinidomTest.testAppendChildc                 C   sT   |   ” \}}}}}}|j |” |  t|jj||||fkd” | ”  | ”  d S )NzappendChild(<fragment>))rY   r:   rT   r%   rZ   rD   r2   rU   r   r   r   ŚtestAppendChildFragment¤   s    
’žz#MinidomTest.testAppendChildFragmentc                 C   s\   |   ” \}}}}}}|j ||” | ”  |  t|jj|||fkd” | ”  | ”  d S )NzreplaceChild(<fragment>))rY   r:   ŚreplaceChildr2   r%   rZ   rD   rU   r   r   r   ŚtestReplaceChildFragment­   s    ’z$MinidomTest.testReplaceChildFragmentc                 C   sØ   t  }| d”}| d”}|  tjj|j|” | |” |  tjj|j||” |  tjj|j	||” |j
}|  tjj|j|” |  tjj|j|” | |” | ”  d S )Nr>   Śtext)r   rE   rS   ŚassertRaisesr   r   ŚHierarchyRequestErrrT   rF   rb   Ś
attributesZsetNamedItemZsetNamedItemNSr2   )r#   r   rO   rd   Znodemapr   r   r   ŚtestLegalChildren¶   s(    


’’’’
zMinidomTest.testLegalChildrenc                 C   s   t  }| d”}|j}d|d< | d”}|  |j|u d” |  |j|u d” |  |jdkd” |  |jdkd” | 	”  | 	”  d S )	Nr>   rB   rR   r   z-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
r   rE   rg   r   r%   r   ŚownerElementŚvalueŚ	nodeValuer2   )r#   r   rO   ŚattrsŚar   r   r   ŚtestNamedNodeMapSetItemĖ   s&    

’’’’z#MinidomTest.testNamedNodeMapSetItemc                 C   sB   t t}|  |” | | d”” |  |jd j ” | ”  d S )NrR   r\   )r   r1   r%   rT   r]   rD   r2   r;   r   r   r   ŚtestNonZeroÜ   s
    
zMinidomTest.testNonZeroc                 C   s,   t t}|  |j” | ”  |  |j” d S r!   )r   r1   r"   rD   r2   r+   r;   r   r   r   Ś
testUnlinkć   s    zMinidomTest.testUnlinkc                 C   sD   t t}|  |j” W d    n1 s*0    Y  |  |j” d S r!   )r   r1   r"   rD   r+   r;   r   r   r   ŚtestContexté   s    
*zMinidomTest.testContextc                 C   s.   t  }| | d”” |  |j” | ”  d S ©NŚabc)r   rT   rE   r%   r:   r2   r;   r   r   r   ŚtestElementī   s    zMinidomTest.testElementc                 C   sj   t d}|j}| dd” |  | ” dkd” | d”}|  |j|u d” |  |j|ju d” | ”  d S )Nś<abc/>ŚspamŚjam2ś<abc spam="jam2"/>ŚtestAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement)	r   r:   ŚsetAttributer%   rK   ŚgetAttributeNoder   ri   r2   )r#   r   Śelrm   r   r   r   ry   ō   s    
’’zMinidomTest.testAAAc                 C   sF   t d}|j}| dd” | dd” |  | ” dkd” | ”  d S )Nru   rv   Śjamrw   rx   ŚtestAAB)r   r:   rz   r%   rK   r2   ©r#   r   r|   r   r   r   r~      s    zMinidomTest.testAABc                 C   sģ   t  }| | d””}| dd” |  | d”dk” |  |jd jdk” | dd” |  | d”dk” |  |jd jdk” |  t|jdk” | dd” |  | d”dk” |  |jd jdk” |  t|jdk” | 	”  d S )Nrs   ŚdefŚghiZjklZmnor?   Znewval)
r   rT   rE   rz   r%   ŚgetAttributerg   rj   rG   r2   ©r#   r   Śchildr   r   r   ŚtestAddAttr  s    zMinidomTest.testAddAttrc                 C   sr   t  }| | d””}|  t|jdk” | dd” |  t|jdk” |jd= |  t|jdk” | ”  d S )Nrs   r   r   r   r@   )r   rT   rE   r%   rG   rg   rz   r2   r   r   r   r   ŚtestDeleteAttr  s    zMinidomTest.testDeleteAttrc                 C   st   t  }| | d””}| dd” |  t|jdk” |  tj	j
|jd” | d” |  t|jdk” | ”  d S )Nrs   r   r   r@   rR   r   )r   rT   rE   rz   r%   rG   rg   re   r   r   ŚNotFoundErrZremoveAttributer2   r   r   r   r   ŚtestRemoveAttr(  s    
zMinidomTest.testRemoveAttrc                 C   s   t  }| | dd””}| ddd” | ddd” |  tjj|jdd” |  	t
|jdk” | dd” |  	t
|jd	k” | ”  d S )
Nśhttp://www.python.orgś
python:abcśhttp://www.w3.orgśxmlns:pythonzpython:abcattrrR   r?   Zabcattrr@   )r   rT   ŚcreateElementNSŚsetAttributeNSre   r   r   r   ZremoveAttributeNSr%   rG   rg   r2   r   r   r   r   ŚtestRemoveAttrNS3  s    
’’’zMinidomTest.testRemoveAttrNSc                 C   sČ   t  }| | d””}| dd” |  t|jdk” | d”}|  t	j
j|jd ” |  || |”” |  t|jdko| d”d u ” t  }| | d””}| d”}|  t	j
j|j|” | ”  d S )NrR   rv   r}   r@   r   )r   rT   rE   rz   r%   rG   rg   r{   re   r   r   r   ZremoveAttributeNodeŚassertIsr2   )r#   r   r   r'   Śdom2Śchild2Znode2r   r   r   ŚtestRemoveAttributeNodeA  s&    
’’
’z#MinidomTest.testRemoveAttributeNodec                 C   s6   t  }| | d””}| dd” |  | d”” d S )NrR   rv   r}   )r   rT   rE   rz   r%   ZhasAttributer   r   r   r   ŚtestHasAttributeS  s    zMinidomTest.testHasAttributec                 C   s  t d}|j}| dd” |  t|jdk” | dd” | d” |  t|jdko|jd jdko|jd jdko| 	d”dko| 
d”j” d|jd< |  t|jdkoę|jd jdkoę|jd jdkoę| 	d”dkoę|jd j” | dd” |  t|jdkon|jd jdkon|jd jdkon| 	d”dkon|jd jdkon|jd jdkon| 	d”dk” d	|jd< |  t|jdkoō|jd jdkoō|jd jdkoō| 	d”dkoō|jd jd	koō|jd jd	koō| 	d”d	k” | ”  d S )
Nru   rv   r}   r@   ZbamZhamZspam2r?   Zbam2)r   r:   rz   r%   rG   rg   ŚsetIdAttributerj   rk   r   r{   ŚisIdr2   r   r   r   r   ŚtestChangeAttrY  sl    
’žż
ü
’žż
ü’žżüūś
’žżüūśzMinidomTest.testChangeAttrc                 C   s   d S r!   r   ©r#   r   r   r   ŚtestGetAttrList  s    zMinidomTest.testGetAttrListc                 C   s   d S r!   r   r   r   r   r   ŚtestGetAttrValues  s    zMinidomTest.testGetAttrValuesc                 C   s   d S r!   r   r   r   r   r   ŚtestGetAttrLength  s    zMinidomTest.testGetAttrLengthc                 C   s.   t  }| | dd””}|  | d”d” d S )Nr   r   ŚmissingŚ )r   rT   r   ŚassertEqualr   r   r   r   r   ŚtestGetAttribute  s
    
’zMinidomTest.testGetAttributec                 C   sv   t  }| | dd””}| ddd” |  | dd”d” |  | dd”d” | | d””}|  | dd	”d” d S )
Nr   r   r   r   ZpythonŚotherr   rs   r   )r   rT   r   r   r   ZgetAttributeNSrE   )r#   r   r   r   r   r   r   ŚtestGetAttributeNS  s"    
’’’’’zMinidomTest.testGetAttributeNSc                 C   s   d S r!   r   r   r   r   r   ŚtestGetAttributeNode  ó    z MinidomTest.testGetAttributeNodec                 C   s|   d}t |}| dd”}|  t|dkol|d jdkol|d jdkol|d jdkol|d jdkol|d jdk” | 	”  d S )NzZ<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
        <minidom:myelem/>
        </foo>zhttp://pyxml.sf.net/minidomZmyelemr@   r   r   zminidom:myelem)
r   ŚgetElementsByTagNameNSr%   rG   ŚnamespaceURIŚ	localNameŚprefixŚtagNamer^   r2   )r#   Śdr   Zelemsr   r   r   ŚtestGetElementsByTagNameNS  s"    ’’žżüūz&MinidomTest.testGetElementsByTagNameNSc                 C   s"   |  ||”}|  t|dk” d S r   )r¤   r%   rG   )r#   r   ZnsuriZlnameZnodelistr   r   r   Ś5get_empty_nodelist_from_elements_by_tagName_ns_helper­  s    zAMinidomTest.get_empty_nodelist_from_elements_by_tagName_ns_helperc                 C   sh   t d}|  |dd” |  |dd” |  |dd” t d}|  |dd” |  |dd” |  |d	d
” d S )NrQ   z"http://xml.python.org/namespaces/aZ	localnameŚ*Zsplatz3<doc xmlns="http://xml.python.org/splat"><e/></doc>zhttp://xml.python.org/splatz	not-therez#http://somewhere.else.net/not-thereŚe)r   r«   r,   r   r   r   Ś+testGetEmptyNodeListFromElementsByTagNameNS²  s(    ’’’’’’z7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNSc                 C   s@   t  }| | d””}t|}t|}|  ||k” | ”  d S rr   ©r   rT   rE   ŚreprŚstrr%   r2   ©r#   r   r|   Zstring1Zstring2r   r   r   ŚtestElementReprAndStrĆ  s    z!MinidomTest.testElementReprAndStrc                 C   s@   t  }| | d””}t|}t|}|  ||k” | ”  d S rr   rÆ   r²   r   r   r   ŚtestElementReprAndStrUnicodeĖ  s    z(MinidomTest.testElementReprAndStrUnicodec                 C   sP   t  }| | dd””}t|}t|}|  ||k” |  d|v ” | ”  d S )Nzhttp://www.slashdot.orgz	slash:abc)r   rT   r   r°   r±   r%   r2   r²   r   r   r   ŚtestElementReprAndStrUnicodeNSÓ  s    
’z*MinidomTest.testElementReprAndStrUnicodeNSc                 C   sD   t  }| | d””}| dd”}|  t|t|k” | ”  d S )Nrs   r   )r   rT   rE   rz   r%   r±   r°   r2   )r#   r   r|   r'   r   r   r   ŚtestAttributeReprŻ  s
    zMinidomTest.testAttributeReprc                 C   s   d S r!   r   r   r   r   r   ŚtestTextNodeReprä  r£   zMinidomTest.testTextNodeReprc                 C   s.   d}t |}| ” }| ”  |  ||k” d S )Nz <?xml version="1.0" ?><a b="c"/>)r   rK   r2   r%   ©r#   r±   r   Zdomstrr   r   r   ŚtestWriteXMLę  s
    zMinidomTest.testWriteXMLc                 C   s:   d}t |}|jdd}| ”  |  || dd”k” d S )Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)ZnewlŚ
)r   Śtoprettyxmlr2   r%   Śreplacerø   r   r   r   ŚtestAltNewlineķ  s
    zMinidomTest.testAltNewlinec                 C   s   d}|   td ” |d ” |   td ” |d ” |   td ” |d ” |   td ” |d	 ” |   td
 ” |d ” d S )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   r   r»   )r#   Śdeclr   r   r   Ś test_toprettyxml_with_text_nodesō  s     ’’’’’z,MinidomTest.test_toprettyxml_with_text_nodesc                 C   sV   t  }| d”}| | d”” | | d”” | |” d}|  | ” |d ” d S )NrO   ZTEXTr¾   z<elem>
	TEXT
	TEXT
</elem>
)r   rE   rT   rS   r   r»   )r#   r   rO   rĄ   r   r   r   Ś)test_toprettyxml_with_adjacent_text_nodes  s    


’z5MinidomTest.test_toprettyxml_with_adjacent_text_nodesc                 C   sV   dD ]L}t |}t | ” }|  | d”d jd  ” | d”d jd  ” ” qd S )N)ræ   z<A><B>C</B></A>ŚBr   )r   r»   r   r9   rD   rK   )r#   r±   r   r   r   r   r   Ś/test_toprettyxml_preserves_content_of_text_node  s    žz;MinidomTest.test_toprettyxml_preserves_content_of_text_nodec                 C   s   t d}|jj}|  |jdko|jdko|jdko|jtj	ko|j
d u o| ”  ot|jdko|jd u o|jd u o|jd u o|jtjjk” d S )Nz<e><?mypi 	
 data 	
 ?></e>Zmypizdata 	
 r   )r   r:   rI   r%   Śtargetr_   r^   ŚnodeTyper   ŚPROCESSING_INSTRUCTION_NODErg   ŚhasChildNodesrG   rD   rJ   r¦   r„   r   r   ŚEMPTY_NAMESPACE)r#   r   Śpir   r   r   ŚtestProcessingInstruction  s.    ’ž
żüūśłų	÷
öz%MinidomTest.testProcessingInstructionc                 C   s   d S r!   r   r   r   r   r   ŚtestProcessingInstructionRepr%  r£   z)MinidomTest.testProcessingInstructionReprc                 C   s   d S r!   r   r   r   r   r   ŚtestTextRepr'  r£   zMinidomTest.testTextReprc                 C   s   d S r!   r   r   r   r   r   ŚtestWriteText)  r£   zMinidomTest.testWriteTextc                 C   s   d S r!   r   r   r   r   r   ŚtestDocumentElement+  r£   zMinidomTest.testDocumentElementc                 C   s:   t d}| d”}|  tjj|j|” | ”  | ”  d S )NrQ   Śextra)r   rE   re   r   r   rf   rT   r2   ©r#   r   rO   r   r   r   ŚtestTooManyDocumentElements-  s
    
z'MinidomTest.testTooManyDocumentElementsc                 C   s   d S r!   r   r   r   r   r   ŚtestCreateElementNS5  r£   zMinidomTest.testCreateElementNSc                 C   s   d S r!   r   r   r   r   r   ŚtestCreateAttributeNS7  r£   z!MinidomTest.testCreateAttributeNSc                 C   s   d S r!   r   r   r   r   r   Ś	testParse9  r£   zMinidomTest.testParsec                 C   s   d S r!   r   r   r   r   r   ŚtestParseString;  r£   zMinidomTest.testParseStringc                 C   s   d S r!   r   r   r   r   r   ŚtestComment=  r£   zMinidomTest.testCommentc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListItem?  r£   zMinidomTest.testAttrListItemc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListItemsA  r£   zMinidomTest.testAttrListItemsc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListItemNSC  r£   zMinidomTest.testAttrListItemNSc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListKeysE  r£   zMinidomTest.testAttrListKeysc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListKeysNSG  r£   zMinidomTest.testAttrListKeysNSc                 C   sP   t d}|j}|j}| d”}| d”}|  | |”” |  tj	j
|jd” d S )Nz<doc a=''/>rm   )r   r:   rg   r{   ZremoveNamedItemr%   Ś
isSameNodere   r   r   r   ©r#   r   r­   rl   Śa1Śa2r   r   r   ŚtestRemoveNamedItemI  s    

zMinidomTest.testRemoveNamedItemc                 C   sV   t d}|j}|j}| dd”}| dd”}|  | |”” |  tj	j
|jdd” d S )Nz.<doc xmlns:a='http://xml.python.org/' a:b=''/>zhttp://xml.python.org/Śb)r   r:   rg   ŚgetAttributeNodeNSZremoveNamedItemNSr%   rŻ   re   r   r   r   rŽ   r   r   r   ŚtestRemoveNamedItemNSR  s    ’z!MinidomTest.testRemoveNamedItemNSc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListValues\  r£   zMinidomTest.testAttrListValuesc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrListLength^  r£   zMinidomTest.testAttrListLengthc                 C   s   d S r!   r   r   r   r   r   ŚtestAttrList__getitem__`  r£   z#MinidomTest.testAttrList__getitem__c                 C   s   d S r!   r   r   r   r   r   ŚtestAttrList__setitem__b  r£   z#MinidomTest.testAttrList__setitem__c                 C   s   d S r!   r   r   r   r   r   ŚtestSetAttrValueandNodeValued  r£   z(MinidomTest.testSetAttrValueandNodeValuec                 C   s   d S r!   r   r   r   r   r   ŚtestParseElementf  r£   zMinidomTest.testParseElementc                 C   s   d S r!   r   r   r   r   r   ŚtestParseAttributesh  r£   zMinidomTest.testParseAttributesc                 C   s   d S r!   r   r   r   r   r   ŚtestParseElementNamespacesj  r£   z&MinidomTest.testParseElementNamespacesc                 C   s   d S r!   r   r   r   r   r   ŚtestParseAttributeNamespacesl  r£   z(MinidomTest.testParseAttributeNamespacesc                 C   s   d S r!   r   r   r   r   r   ŚtestParseProcessingInstructionsn  r£   z+MinidomTest.testParseProcessingInstructionsc                 C   s   d S r!   r   r   r   r   r   ŚtestChildNodesp  r£   zMinidomTest.testChildNodesc                 C   s   d S r!   r   r   r   r   r   ŚtestFirstChildr  r£   zMinidomTest.testFirstChildc                 C   s<   t d}|j}|  | ” ” t d}|j}|  | ” ” d S )Nr=   rQ   )r   r:   r"   rČ   r+   )r#   r   r   r   Śdoc2r   r   r   ŚtestHasChildNodest  s    zMinidomTest.testHasChildNodesc                 C   sĄ   |j }|j }t| ” }t| ” }| ”  | ”  |  ||kd” tt|D ]j}| |”}	| |”}
|  |	|
uo¢|	j|
jko¢|	j	|
j	ko¢|	j
|
j
ko¢|	j|
jkd” |  |
j|u d” qPd S )Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)rg   ŚlistŚkeysŚsortr%   ŚrangerG   r   rj   rk   r„   r¦   ri   )r#   Śe1Śe2r$   Zattrs1Zattrs2Zkeys1Zkeys2Śirß   rą   r   r   r   Ś!_testCloneElementCopiesAttributes|  s.    


’
ž
ż
ū’z-MinidomTest._testCloneElementCopiesAttributesc                 C   s^   t d}|j}| |”}|  ||d|r*dp,d ” d |_|_| dd” | dd	” ||fS )
Nz<doc attr='value'><foo/></doc>ZtestCloneElementZDeepZShallowZMODIFIEDŚattrz	NEW VALUEZaddedZVALUE)r   r:   Ś	cloneNoderś   rØ   r^   rz   )r#   Śdeepr   rN   Ścloner   r   r   Ś_setupCloneElement  s    
’zMinidomTest._setupCloneElementc                 C   sR   |   d”\}}|  t|jdko@|jjdko@|jd u o@| ” dkd” | ”  d S )Nr   z<doc attr="value"/>ŚtestCloneElementShallow©r’   r%   rG   rD   rH   Ś
parentNoderK   r2   ©r#   r   rž   r   r   r   r     s    
’ž
üz#MinidomTest.testCloneElementShallowc                 C   sR   |   d”\}}|  t|jdko@|jjdko@|jd u o@| ” dkd” | ”  d S )Nr@   z<doc attr="value"><foo/></doc>ŚtestCloneElementDeepr  r  r   r   r   r  „  s    
’ž
üz MinidomTest.testCloneElementDeepc                 C   s&   t d}| d”}|  |d u d” d S )Nś<?xml version='1.0'?>
<!-- comment --><!DOCTYPE doc [
<!NOTATION notation SYSTEM 'http://xml.python.org/'>
]>
<doc attr='value'/>r   zFtestCloneDocumentShallow: shallow cloning of documents makes no sense!)r   rü   r%   ©r#   r   rń   r   r   r   ŚtestCloneDocumentShallow®  s
    

’z$MinidomTest.testCloneDocumentShallowc                 C   sŽ   t d}| d”}|  | |”p(| |” d” |  t|jt|jkd” |  |jjtj	kd” |  |jj
 |”d” |  |j |j” d” |jd urŚ|  |jjtjkd” |  |jj
 |”” |  |j |j” ” d S )	Nr  r@   z4testCloneDocumentDeep: document objects not distinctz8testCloneDocumentDeep: wrong number of Document childrenz:testCloneDocumentDeep: documentElement not an ELEMENT_NODEz@testCloneDocumentDeep: documentElement owner is not new documentz;testCloneDocumentDeep: documentElement should not be sharedz7testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE)r   rü   r%   rŻ   rG   rD   r:   rĘ   r   ZELEMENT_NODEr   r
   ŚDOCUMENT_TYPE_NODEr  r   r   r   ŚtestCloneDocumentDeepŗ  s.    
’’’’’
’z!MinidomTest.testCloneDocumentDeepc                 C   sŚ  t  }| d”}|  |d uo¬|j|jko¬|j|jko¬|j|jko¬|j|jko¬t|jt|jko¬|j 	t|j”d u o¬t|j
t|j
ko¬|j
 	t|j
”d u o¬t|jdk” tt|jD ]}|j 	|”}|j 	|”}|  | |” oX| |” oX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jkoX|j|jk” q¾tt|j
D ]h}|j
 	|”}|j
 	|”}|  | |” oĪ| |” oĪ|j|jkoĪ|j|jkoĪ|j|jk” qld S )Nr@   r   )r   rü   r%   r^   ŚnameŚpublicIdŚsystemIdrG   r   r   r   rD   rö   rŻ   ŚnotationNamer   r   r   )r#   r
   rž   rł   ZseZceZsnZcnr   r   r   ŚtestCloneDocumentTypeDeepOkÓ  sj    

’
ž
ż
üūśłų	÷

’
ž
ż
ü
ū
ś
ł
ų	
’
ž
ż
üz'MinidomTest.testCloneDocumentTypeDeepOkc                 C   s&   t  }|j d”}|  |d u d” d S )Nr@   ŚtestCloneDocumentTypeDeepNotOk©r   r
   rü   r%   ©r#   r   rž   r   r   r   r  õ  s    z*MinidomTest.testCloneDocumentTypeDeepNotOkc                 C   s   t  }| d”}|  |d uo|j|jko|j|jko|j|jko|j|jkot|jdko|j 	d”d u ot|j
dko|j
 	d”d u ot|jdk” d S r   )r   rü   r%   r^   r
  r  r  rG   r   r   r   rD   )r#   r
   rž   r   r   r   ŚtestCloneDocumentTypeShallowOkś  s*    

’
ž
ż
üūśłų	÷z*MinidomTest.testCloneDocumentTypeShallowOkc                 C   s&   t  }|j d”}|  |d u d” d S )Nr   Ś!testCloneDocumentTypeShallowNotOkr  r  r   r   r   r    s    z-MinidomTest.testCloneDocumentTypeShallowNotOkc                 C   s*   t d}t d}|  tjj|j||” d S )NrQ   )r   re   r   r   ŚNotSupportedErrŚ
importNode)r#   rż   ŚtestNameZdoc1rń   r   r   r   Ścheck_import_document  s    z!MinidomTest.check_import_documentc                 C   s   |   dd” d S )Nr   ŚtestImportDocumentShallow©r  r   r   r   r   r    s    z%MinidomTest.testImportDocumentShallowc                 C   s   |   dd” d S )Nr@   ŚtestImportDocumentDeepr  r   r   r   r   r    s    z"MinidomTest.testImportDocumentDeepc                 C   s(   t  }t }|  tjj|j|jd” d S r   ©r   r   re   r   r   r  r  r
   ©r#   ŚsrcrÅ   r   r   r   ŚtestImportDocumentTypeShallow  s
    ’z)MinidomTest.testImportDocumentTypeShallowc                 C   s(   t  }t }|  tjj|j|jd” d S ©Nr@   r  r  r   r   r   ŚtestImportDocumentTypeDeep  s
    ’z&MinidomTest.testImportDocumentTypeDeepc                 C   s   t d}|j d”}|  |d ” | |”}|  | |” ” |  | |” ” |  |jd u |d ” |  |j |j”|d ” |  |j	|d ” d S )Nz<doc attr='value'/>rū   z: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
r   r:   r{   ZassertNotEqualrü   r%   rŻ   ri   r   Z	specified)r#   rż   r  r   rū   rž   r   r   r   Ścheck_clone_attribute&  s    
’’’z!MinidomTest.check_clone_attributec                 C   s   |   dd” d S )Nr   ŚtestCloneAttributeShallow©r!  r   r   r   r   r"  4  s    z%MinidomTest.testCloneAttributeShallowc                 C   s   |   dd” d S )Nr@   ŚtestCloneAttributeDeepr#  r   r   r   r   r$  7  s    z"MinidomTest.testCloneAttributeDeepc                 C   sJ   t d}|j}|  |jtj” | |”}|  |j|jkoB|j	|j	k” d S )Nz<?target data?><doc/>)
r   rI   r   rĘ   r   rĒ   rü   r%   rÅ   r_   )r#   rż   r  r   rŹ   rž   r   r   r   Ścheck_clone_pi:  s    

’zMinidomTest.check_clone_pic                 C   s   |   dd” d S )Nr   ŚtestClonePIShallow©r%  r   r   r   r   r&  B  s    zMinidomTest.testClonePIShallowc                 C   s   |   dd” d S )Nr@   ŚtestClonePIDeepr'  r   r   r   r   r(  E  s    zMinidomTest.testClonePIDeepc           
      C   s  t jj d ” ”}G dd d}| }|j}|jd }| dd|” |r~|jdd}|  	|j
jjd	” t jjj}|jjd }	nNt |d
d ” |jdd}W d    n1 s®0    Y  t jjj}|jd }	|  	|j|” |  	|jd” |  	|jd” |  |j|” |  |j|	” d S )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                   @   s   e Zd Zdd ZdS )z4MinidomTest.check_clone_node_entity.<locals>.Handlerc                 S   s"   || _ || _|| _|| _|| _d S r!   )Ś	operationŚkeyr_   r  Śdst©r#   r)  r*  r_   r  r+  r   r   r   ŚhandleU  s
    z;MinidomTest.check_clone_node_entity.<locals>.Handler.handleN)Ś__name__Ś
__module__Ś__qualname__r-  r   r   r   r   ŚHandlerT  s   r1  Zsmiler*  r_   T)rż   u%   Don't let entities make you frown āŗr   )r   r   r   r   Śstripr
   r   ŚsetUserDatarü   r   r:   rI   r&   ŚUserDataHandlerZNODE_IMPORTEDr   Z	swap_attrZNODE_CLONEDr)  r*  r_   r   r  r+  )
r#   Zclone_documentZdocumentr1  Śhandlerr
   r   rž   r)  r+  r   r   r   Ścheck_clone_node_entityH  s,    	
’
*

z#MinidomTest.check_clone_node_entityc                 C   s   |   d” |   d” d S )NFT)r6  r   r   r   r   ŚtestCloneNodeEntityw  s    
zMinidomTest.testCloneNodeEntityc                 C   sī   t d}|j}| | d”” | | d”” |  t|jdkoJ|jjdkd” | ”  |  t|jdko|jjdko|j	|j
u o|j	jdkd” | ”  t d}|j}| | d	”” | ”  |  t|jd
koÜ|jjd
kd” | ”  d S )NrQ   ŚfirstŚsecondr?   ztestNormalize -- preparationr@   ŚfirstsecondztestNormalize -- resultr   r   z*testNormalize -- single empty node removed)r   r:   rT   rS   r%   rG   rD   rH   Ś	normalizerI   rJ   r_   r2   ©r#   r   rN   r   r   r   ŚtestNormalize{  s6    
ž
’
ž
ü
žzMinidomTest.testNormalizec                 C   sā   t d}|j}| | d”” | | d”” | | d”” |  t|jdkoZ|jjdkd” | 	”  |  t|jdkoŠ|jjdkoŠ|j
jdkoŠ|j
|juoŠ|j
j|ju oŠ|j
jd u oŠ|jj|j
u oŠ|jjd u d	” | ”  d S )
NrQ   r8  r9  rł   rA   z1testNormalizeCombineAndNextSibling -- preparationr?   r:  z-testNormalizeCombinedAndNextSibling -- result)r   r:   rT   rS   rE   r%   rG   rD   rH   r;  rI   r_   rJ   rM   rL   r2   r<  r   r   r   Ś"testNormalizeCombineAndNextSibling  s6    
ž
’
ž
żü
ūś
ų	z.MinidomTest.testNormalizeCombineAndNextSiblingc                 C   s¶   t d}|j}| | d”” | | d”” |  t|jdkoJ|jjdkd” | ”  |  t|jdko¤|jjdko¤|j	j
dko¤|j	|ju o¤|j	jd u o¤|j	jd u d” | ”  d S )NrQ   r8  r   r?   z1testNormalizeDeleteWithPrevSibling -- preparationr@   z,testNormalizeDeleteWithPrevSibling -- result©r   r:   rT   rS   r%   rG   rD   rH   r;  rI   r_   rJ   rM   rL   r2   r<  r   r   r   Ś"testNormalizeDeleteWithPrevSibling©  s,    
ž
’
ž
ż
ü
śz.MinidomTest.testNormalizeDeleteWithPrevSiblingc                 C   s¶   t d}|j}| | d”” | | d”” |  t|jdkoJ|jjdkd” | ”  |  t|jdko¤|jjdko¤|j	j
dko¤|j	|ju o¤|j	jd u o¤|j	jd u d” | ”  d S )NrQ   r   r9  r?   z1testNormalizeDeleteWithNextSibling -- preparationr@   z,testNormalizeDeleteWithNextSibling -- resultr?  r<  r   r   r   Ś"testNormalizeDeleteWithNextSibling»  s,    
ž
’
ž
ż
ü
śz.MinidomTest.testNormalizeDeleteWithNextSiblingc                 C   sÖ   t d}|j}| | d”” | | d”” | | d”” |  t|jdkoZ|jjdkd” | 	”  |  t|jdkoÄ|jjdkoÄ|j
|juoÄ|j
j|ju oÄ|j
jd u oÄ|jj|j
u oÄ|jjd u d” | ”  d S )NrQ   rł   r   rA   z1testNormalizeDeleteWithTwoSiblings -- preparationr?   z,testNormalizeDeleteWithTwoSiblings -- result)r   r:   rT   rE   rS   r%   rG   rD   rH   r;  rI   rJ   rM   rL   r2   r<  r   r   r   Ś)testNormalizeDeleteWithTwoNonTextSiblingsĶ  s2    
ž
’
žż
üū
łz5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblingsc                 C   sę   t d}|j}| | d”” | | d”” | | d”” | | d”” | | d”” |  t|jdkoz|jjdkd” | ”  |  t|jdkoŌ|jjdkoŌ|j	|j
u oŌ|j	jdkoŌ|j	jd u oŌ|j	jd u d	” | ”  d S )
NrQ   r   r9  Zfourthé   z,testNormalizeDeleteAndCombine -- preparationr@   Zsecondfourthz'testNormalizeDeleteAndCombine -- result)r   r:   rT   rS   r%   rG   rD   rH   r;  rI   rJ   r_   rL   rM   r2   r<  r   r   r   ŚtestNormalizeDeleteAndCombineį  s2    
ž
’
ž
ż
ü
śz)MinidomTest.testNormalizeDeleteAndCombinec                 C   s6  t d}|j}|jd  | d”” |jd  | d”” |jd jd  | d”” |jd  | d”” | | d”” |  t|jdko$|jjdko$t|jd jd	ko$|jd jjd	ko$t|jd jdko$|jd jjdko$t|jd jd jd
ko$|jd jd jjd
kd” | ”  |  t|jd
koŚ|jjd
koŚt|jd jd
koŚ|jd jjd
koŚt|jd jd
koŚ|jd jjd
koŚt|jd jd jdkoŚ|jd jd jjdkd” |  |jd jd j	dko.|jd jd jd j	dko.|jd jd j	dkd” |  |jd jd j
d u o$|jd jd j|jd jd u o$|jd jd jd u o$|jd jd j
|jd jd u o$|jd jd j
d u o$|jd jd j|jd jd u o$|jd jd jd u o$|jd jd j
|jd jd u d” | ”  d S )Nz)<doc><o><i/>t</o><o><o>t2</o>t3</o></doc>r   r   Śxr@   Zx2Zx3rA   rC   r?   ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthsZtxZt2x2Zt3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)r   r:   rD   rT   rS   r%   rG   rH   r;  r_   rM   rL   r2   r<  r   r   r   ŚtestNormalizeRecursionö  s    
’žżüūśų	
’žżüūśų	’ż’’ż’üś’ł	÷
’ōz"MinidomTest.testNormalizeRecursionc                 C   s8   t d}|jjd }|  |jtj” | ”  | ”  d S )Nz<o>text</o>r   )	r   r:   rD   r   rĘ   r   Ś	TEXT_NODEr;  r2   )r#   r   rd   r   r   r   ŚtestBug07778845  s
    zMinidomTest.testBug0777884c                 C   s>   t d}|j}d|jd _| ”  |  |jd jd u d” d S )Nz<o><i/>t</o>r   r@   r\   z)Final child's .nextSibling should be None)r   r:   rD   rk   r;  r%   rM   ©r#   r   r'   r   r   r   ŚtestBug1433694=  s    ’zMinidomTest.testBug1433694c                 C   sj   t d}|j}|j\}}}|  |j|u oX|jd u oX|j|u oX|j|u oX|jd u oX|j|u d” | ”  d S )Nz<doc><?pi?>text?<elm/></doc>ŚtestSiblings)r   r:   rD   r%   rM   rL   r2   )r#   r   rN   rŹ   rd   Zelmr   r   r   rK  E  s    ’žżü
ūzMinidomTest.testSiblingsc                 C   sr   t d}|j}|jd }|j\}}|jd }|  |j|u o`|j|u o`|j|u o`|j|u o`|j|u d” | ”  d S )Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r   ŚtestParents)r   r:   rD   r%   r  r2   )r#   r   rN   Zelm1Zelm2aZelm2bZelm3r   r   r   rL  S  s"    ’


’žż
üzMinidomTest.testParentsc                 C   s   t d}|j}|d }|  |d | d”u o|| d”d u o||j d”|jd u o||j d”|jd u o||j d”j d”d u d” | ”  d S )Nz<doc><e/><e/></doc>r   r@   ztest NodeList.item())r   rD   r%   r   r2   )r#   r   ZchildrenZdocelemr   r   r   ŚtestNodeListItemb  s    ’žżūzMinidomTest.testNodeListItemc                 C   s   t d}|  | ” d” |  | d”d” |  | d”d” |  | d”d” |  | d	”d
 d	”” |  tt d” | ”  d S )Nś<foo>&#x20ac;</foo>õ$   <?xml version="1.0" ?><foo>ā¬</foo>r   s4   <?xml version="1.0" encoding="utf-8"?><foo>ā¬</foo>ziso-8859-15s8   <?xml version="1.0" encoding="iso-8859-15"?><foo>¤</foo>r   s;   <?xml version="1.0" encoding="us-ascii"?><foo>&#8364;</foo>zutf-16u5   <?xml version="1.0" encoding="utf-16"?><foo>ā¬</foo>s0   <franēais>Comment ēa va ? Trčs bien ?</franēais>)r   r   rK   Śencodere   ŚUnicodeDecodeErrorr2   r,   r   r   r   ŚtestEncodingsn  s,    
’’’’’’’zMinidomTest.testEncodingsc                 C   st   t d}|  | ” d” |  |jd dd” |  |jddd” |  |jddd” |  | dd”d	” | ”  d S )
NrN  rO  )Z
standaloneTu4   <?xml version="1.0" standalone="yes"?><foo>ā¬</foo>Fu3   <?xml version="1.0" standalone="no"?><foo>ā¬</foo>r   sE   <?xml version="1.0" encoding="utf-8" standalone="yes"?><foo>ā¬</foo>)r   r   rK   r2   r,   r   r   r   ŚtestStandalone  s"    
’’’’’zMinidomTest.testStandalonec                   @   s   e Zd ZdZdd ZdS )zMinidomTest.UserDataHandlerr   c                 C   s*   |  ||d | ” |  |d d ” d| _d S r  )r3  Ścalledr,  r   r   r   r-    s    z"MinidomTest.UserDataHandler.handleN)r.  r/  r0  rT  r-  r   r   r   r   r4    s   r4  c                 C   s(  t  }| d”}|  | d”d u ” | dd d ” |  | d”d u ” | ddd” | ddd” |  | d”dk” |  | d”dk” | dd d ” |  | d”d u ” |  | d”dk” |  ” }| dd|” | d”}|  |jo| d”d u o| d”dk” | ”  | ”  | ”  d S )Nr­   rR   é   rB   é   r@   )	r   rE   r%   ZgetUserDatar3  r4  rü   rT  r2   )r#   r   Śnr5  Ścr   r   r   ŚtestUserData  s.    

’žzMinidomTest.testUserDatac                 C   s@   |   tjj|j|dd” td}|   tjj|j|tjjd” d S )Nśhttp://xml.python.org/nsz	xmlns:foorQ   rR   )re   r   r   ŚNamespaceErrŚ
renameNoder   ZWrongDocumentErrrÉ   )r#   r   r'   rń   r   r   r   Ś checkRenameNodeSharedConstraints²  s    ’’z,MinidomTest.checkRenameNodeSharedConstraintsc                 C   sb  t d}|j}|j}|jd }| |tjjd”}|  |jdko¶|j	dko¶|j
d u o¶|jtjjko¶|jd u o¶|jdko¶| d”d u o¶| d” |”o¶|d  |”o¶|j |”o¶|j |”” | |dd”}|  |jdkov|j	dkov|j
dkov|jdkov|jd u ov|jdkov| d”d u ov| d”d u ov| d” |”ov| dd” |”ov|d  |”ov|d  |”” | |dd	”}|  |jd	koX|j	d	koX|j
d
koX|jdkoX|jdkoX|jdkoX| d”d u oX| d”d u oX| d”d u oX| dd”d u oX| d	” |”oX| dd
” |”oX|d	  |”oX|d  |”” | |tjjd”}|  |jdko.|j	dko.|j
d u o.|jtjjko.|jd u o.|jdko.| d”d u o.| d”d u o.| d”d u o.| d	”d u o.| dd”d u o.| d” |”o.|d  |”” |  tjj|j|dd” |  ||” | ”  d S )Nz<doc a='v'/>rm   rā   ŚvrZ  rX  )rZ  rX  śhttp://xml.python.org/ns2zp:dr©   Śp)r_  r©   r­   Zxmlns)r   r:   rg   r\  r   r   rÉ   r%   r
  r^   r¦   r„   r§   rj   r{   rŻ   r   ri   rć   re   r[  r]  r2   )r#   r   rO   Zattrmaprū   r   r   r   ŚtestRenameAttributeŗ  sś    
’žżüūśłų	
÷

ö’žżüūśłų	’’÷õō’žżüūśłų	’’÷õ’’ōņń’žżüūśłų	÷
’’öōó’zMinidomTest.testRenameAttributec                 C   s  t d}|j}| |tjjd”}|  |jdkod|jdkod|j	d u od|j
tjjkod|jd u od|j |”” | |dd”}|  |jdko¶|jdko¶|j	dko¶|j
dko¶|jd u o¶|j |”” | |dd”}|  |jdko|jdko|j	dko|j
dko|jdko|j |”” | |tjjd	”}|  |jd	kov|jd	kov|j	d u ov|j
tjjkov|jd u ov|j |”” |  ||” | ”  d S )
NrQ   rm   rZ  rā   r_  zp:crX  r`  r©   )r   r:   r\  r   r   rÉ   r%   rØ   r^   r¦   r„   r§   r   rŻ   r]  r2   rŃ   r   r   r   ŚtestRenameElement  sh    ’žżü
ū’žżü
ū’žżü
ū’žżü
ūzMinidomTest.testRenameElementc                 C   sL   t jj ”  t jjdd ”}| d”}|  t jj|j	|t jjd” | 
”  d S )Nr­   ŚcommentrR   )r   r   r   r   r	   rÉ   r]   re   r  r\  r2   rI  r   r   r   ŚtestRenameOther2  s    
’
’zMinidomTest.testRenameOtherc                 C   s:  t d}|j}|jd }|  |jtj” |  |d” | | 	d”” |  |d” | 
| d”|” |  |d” | d”}| |” | 	d	”}| |” |  |d” |  |d	” | d
”}| ||” |}|  |d” |  |d	” | dd”}| ||” |}|  |d” |  |d	” | |” |  |d” |  |d” d S )Nz<doc>a</doc>r   rm   rā   ŚabrX  Ścabrc  r©   rE  ŚyŚzZcabd)r   r:   rD   r   rĘ   r   rG  r*   rT   rS   rF   ŚcreateCDATASectionr]   rE   rb   ŚcreateProcessingInstructionŚremoveChild)r#   r   rO   rd   ŚsplitterŚtext2rE  r   r   r   ŚtestWholeText<  s8    






zMinidomTest.testWholeTextc                 C   sH   t d}|j}|j}|  |j|u d” | ||” |  |j|u d” d S )Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())r   r:   rI   r%   r  rb   )r#   r   rO   r­   r   r   r   ŚtestPatch1094164`  s    zMinidomTest.testPatch1094164c                 C   sŚ   dd }| \}}}}}|  d”}|  |d” |  |d” |  t|jdk” | \}}}}}|  d”}|  |d” |  |d” |  t|jdk” | \}}}}}|  d”}|  |d” |  |d u oŅt|jd	k” d S )
Nc                  S   sR   t d} | j}|j}|j}|j}| |  d”|” | |  d”|” | ||||fS )Nz<doc>a<e/>d</doc>rā   rX  )r   r:   rI   rJ   rM   rF   rS   ri  )r   rO   Śtext1rm  rl  r   r   r   Śsetupj  s    z/MinidomTest.testReplaceWholeText.<locals>.setupznew contentr©   rA   rf  rC  r   r?   )ZreplaceWholeTextr*   r%   rG   rD   )r#   rq  r   rO   rp  rl  rm  rd   r   r   r   ŚtestReplaceWholeTexti  s"    



’z MinidomTest.testReplaceWholeTextc                 C   sv   t d}|j}|j}|  |jd u o.|jtjjk” d 	” }|D ]2}| 
|”}|j}|  t|dol|jtjjk” q>d S )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
  )r   r:   Z
schemaTyper%   r
  Ś	namespacer   r   rÉ   Śsplitr{   Śhasattr)r#   r   rO   r)   Śnamesr
  rm   r   r   r   ŚtestSchemaType  s    ’’
’zMinidomTest.testSchemaTypec                 C   s@  t d}|j}| d”}| d”}|  | d”d u oB|j oB|j ” | d” |  | | d””op|jop|j ” | d” |  | | d””o¬| | d””o¬|jo¬|j” | d”}d|_	| 
|” |  | d”d u o| | d””o|j o|jo|j ” | |tjjd” |  | | d””o8|j” d S )Nz<doc a1='v' a2='w'/>rß   rą   r^  ŚwŚan)r   r:   r{   r%   ŚgetElementByIdr   r   rŻ   ZcreateAttributerj   ŚsetAttributeNoder\  r   r   rÉ   )r#   r   r­   rß   rą   Śa3r   r   r   ŚtestSetIdAttribute§  sN    

’ž
’ž
’žż

’žżü’zMinidomTest.testSetIdAttributec                 C   sr  d}d}t d| d | d }|j}| |d”}| |d”}|  | d”d u o^|j o^|j ” | |d” |  | | d””o|jo|j ” | |d” |  | | d””oĢ| | d	””oĢ|joĢ|j” | |d”}d|_	| 
|” |  | | d	””” |  |j ” |  |j” |  |j ” |  | d”d u ” | |tjjd
” |  | | d	””oj|j” d S ©Nzhttp://xml.python.org/ns1r_  z<doc xmlns:ns1='z' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>rß   rą   r^  rx  ry  )r   r:   rć   r%   rz  r   ZsetIdAttributeNSrŻ   ŚcreateAttributeNSrj   r{  r\  r   r   rÉ   ©r#   ZNS1ZNS2r   r­   rß   rą   r|  r   r   r   ŚtestSetIdAttributeNSĘ  sZ    ’’žž’ž’ž’žż
’z MinidomTest.testSetIdAttributeNSc                 C   sn  d}d}t d| d | d }|j}| |d”}| |d”}|  | d”d u o^|j o^|j ” | |” |  | | d””o|jo|j ” | |” |  | | d””oČ| | d	””oČ|joČ|j” | |d”}d|_	| 
|” |  | | d	””” |  |j ” |  |j” |  |j ” |  | d”d u ” | |tjjd
” |  | | d	””of|j” d S r~  )r   r:   rć   r%   rz  r   ZsetIdAttributeNoderŻ   r  rj   r{  r\  r   r   rÉ   r  r   r   r   ŚtestSetIdAttributeNodeź  sZ    ’’žž’ž
’ž
’žż
’z"MinidomTest.testSetIdAttributeNodec                 C   s  ||fg}|r|  ” \}}|  |j|j” |  t|jt|j” |  |j|j” |  | |”” |  | |”” |jtj	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|jtjkrā|  |j |”” |  |j |”” tt|jD ] }| |j| |j| f” qšq
d S r!   )Śpopr   rĘ   rG   rD   r^   r+   rŻ   r   r  r   r   rö   r   r
  r  r  r   r  ZDOCUMENT_NODEr"   r   )r#   r   rń   ŚstackZn1Zn2rł   Zno1Zno2r÷   rų   r   r   r   Śassert_recursive_equal  sD    




z"MinidomTest.assert_recursive_equalc                 C   sD   t t}tdtjd D ]&}t ||”}t |”}|  ||” qd S )Nr?   r@   )r   Śsamplerö   ŚpickleŚHIGHEST_PROTOCOLŚdumpsŚloadsr  )r#   r   Śprotor(   rń   r   r   r   ŚtestPickledDocument3  s
    
zMinidomTest.testPickledDocumentc                 C   s"   t t}t |”}|  ||” d S r!   )r   r  ŚcopyŚdeepcopyr  r  r   r   r   ŚtestDeepcopiedDocument:  s    
z"MinidomTest.testDeepcopiedDocumentc                 C   s(   t  }| | d”” |  t|j” d S )Nzfoo--bar)r   rT   r]   re   Ś
ValueErrorrK   r,   r   r   r   Ś(testSerializeCommentNodeWithDoubleHyphen?  s    z4MinidomTest.testSerializeCommentNodeWithDoubleHyphenc                 C   s,   t d}t | ” }|  |jtjjk” d S )Nz$<element xmlns=''>
<foo/>
</element>)r   rK   r%   r„   r   r   rÉ   r  r   r   r   ŚtestEmptyXMLNSValueE  s    zMinidomTest.testEmptyXMLNSValuec                 C   s8   |   td” td W d    n1 s*0    Y  d S )NzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)ZassertRaisesRegexr  r   r   r   r   r   Ś!testExceptionOnSpacesInXMLNSValueK  s    z-MinidomTest.testExceptionOnSpacesInXMLNSValuec                 C   sf   t t}|j d”d }|  tjj|j|” t	|j
}| |j
d ” t	|j
}|  ||d k” d S )NZTITLEr   r@   )r   r1   r:   r9   re   r   r   r   rk  rG   rD   r"   )r#   r   Z	title_tagZnum_children_beforeZnum_children_afterr   r   r   ŚtestDocRemoveChildO  s    

zMinidomTest.testDocRemoveChildc                 C   s   t t}| dd”}d|_d S )Nrg  rh  Zcrash)r   r1   rj  rk   )r#   r   rŹ   r   r   r   Ś"testProcessingInstructionNameErrorX  s    z.MinidomTest.testProcessingInstructionNameErrorc                 C   s2   d}t |}t ” }| |” |  | ” |” d S ©NśE<?xml version="1.0" ?><curriculum status="public" company="example"/>)r   ŚioŚStringIOZwritexmlr   Śgetvalue)r#   Śxml_strr   Śoutputr   r   r   Śtest_minidom_attribute_order_  s
    
z(MinidomTest.test_minidom_attribute_orderc                 C   s    d}t |}|  | ” |” d S r  )r   r   rK   ©r#   r  r   r   r   r   Ś"test_toxml_with_attributes_orderedf  s    z.MinidomTest.test_toxml_with_attributes_orderedc                 C   s    d}t |}|  | ” d” d S )Nr  zG<?xml version="1.0" ?>
<curriculum status="public" company="example"/>
©r   r   r»   r  r   r   r   Ś(test_toprettyxml_with_attributes_orderedk  s
    
’z4MinidomTest.test_toprettyxml_with_attributes_orderedc                 C   s    d}t |}|  | ” d” d S )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_cdatar  s
    
’z'MinidomTest.test_toprettyxml_with_cdatac                 C   sL   d}t |}|  | d”d jd” t | ” }|  | d”d jd” d S )Nr¢  r'   r   z</data>)r   r*   r9   rI   r»   )r#   r  Zdom1r   r   r   r   Śtest_cdata_parsing{  s
    zMinidomTest.test_cdata_parsingN)r    )r.  r/  r0  r%   r*   r-   r6   r8   r<   rP   rY   r[   r`   ra   rc   rh   rn   ro   rp   rq   rt   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r”   r¢   rŖ   r«   r®   r³   r“   rµ   r¶   r·   r¹   r½   rĮ   rĀ   rÄ   rĖ   rĢ   rĶ   rĪ   rĻ   rŅ   rÓ   rŌ   rÕ   rÖ   r×   rŲ   rŁ   rŚ   rŪ   rÜ   rį   rä   rå   rę   rē   rč   ré   rź   rė   rģ   rķ   rī   rļ   rš   rņ   rś   r’   r   r  r  r	  r  r  r  r  r  r  r  r  r   r!  r"  r$  r%  r&  r(  r6  r7  r=  r>  r@  rA  rB  rD  rF  rH  rJ  rK  rL  rM  rR  rS  r4  rY  r]  ra  rb  rd  rn  ro  rr  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r”  r£  r¤  r   r   r   r   r   5   s  +		&
		
		"/?M+
$	!$$%		r   Ś__main__)N)r  r  r  r$   r   ZunittestZxml.dom.minidomr   r   r   r   r   r   Zfindfiler1   r  r   r   r   ZTestCaser   r.  Śmainr   r   r   r   Ś<module>   s6   
            Y