
    <e=                       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Zd dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ  ej        dd          Zd	Zdd
Zd Zd Z G d dej                  Zedk    r ej                     dS dS )    N)support)parseAttrNodeDocumentparseString)getDOMImplementation)
ExpatErrorztest.xmlxmltestdata)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                 H    t                                          d d|           S )Ndoc)r	   createDocument)doctypes    (/usr/lib/python3.11/test/test_minidom.pycreate_doc_without_doctyper      s     !!00ugFFF    c                     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	   createDocumentTypeentities_seq	notationsxmldomminidomNotationappendEntityversionencodingactualEncoding)r   notationentitys      r   create_nonempty_doctyper&       s    "$$77tTJJGGGw''t(LN NH!!(+++W_##K$G$13 3F FNFO&F  (((Nr   c                      t                      } t          |           }|| j                            d          _        || j                            d          _        |S Nr   )r&   r   r   itemownerDocumentr   )r   r   s     r   create_doc_with_doctyper+   0   sQ    %''G
$W
-
-C-0G!*.1G1+Jr   c                   x   e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8d8 Z9d9 Z:d: Z;d; Z<d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZBdB ZCdC ZDdD ZEdE ZFdF ZGdG ZHdH ZIdI ZJdJ ZKdK ZLdL ZMdM ZNdN ZOdO ZPdP ZQdQ ZRdR ZSdS ZTdT ZUdU ZVdV ZWdW ZXdX ZYdY ZZdZ Z[d[ Z\d\ Z]d] Z^d^ Z_d_ Z`d` Zada Zbdb Zcdc Zddd Zede Zfdf Zgdg Zhdh Zidi Zjdj Zkdk Zldl Zmdm Zndn Zodo Zpdp Zqdq Zrdr Zsds Ztdt Zudu Zv G dv dw          Zwdx Zxdy Zydz Zzd{ Z{d| Z|d} Z}d~ Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )MinidomTestTestc                 2    |                      ||           d S N)
assertTrue)selftesttestnames      r   confirmzMinidomTest.confirm8   s    h'''''r   c                 T    |j         }|                     ||k    d|d|           d S )Nzlooking for z, found )	wholeTextr5   )r2   nodests       r   checkWholeTextzMinidomTest.checkWholeText;   s4    NQ!VV111aa@AAAAAr   c                     t                      }|                     |j                   |                     t           j                   d S r0   )r   assertFalseasync_r2   r   s     r   testDocumentAsyncAttrz!MinidomTest.testDocumentAsyncAttr?   s=    jj$$$)))))r   c                     t          t          d          5 }t          |          }|                                 |                     t          |t                               d d d            d S # 1 swxY w Y   d S )Nrbopentstfiler   unlinkr5   
isinstancer   r2   filer   s      r   testParseFromBinaryFilez#MinidomTest.testParseFromBinaryFileD   s    '4   	4D++CJJLLLLLC22333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AA//A36A3c                     t          t          dd          5 }t          |          }|                                 |                     t          |t                               d d d            d S # 1 swxY w Y   d S )Nrz
iso-8859-1)r"   rC   rH   s      r   testParseFromTextFilez!MinidomTest.testParseFromTextFileJ   s    '3666 	4$++CJJLLLLLC22333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AA11A58A5c                    t          dddd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d S )NqNamenamespaceURI	localNameprefixr   assertEqualnamerP   rR   rQ   r2   attrs     r   testAttrModeSetsParamsAsAttrsz)MinidomTest.testAttrModeSetsParamsAsAttrsP   s|    G^[(CCG,,,*N;;;h///55555r   c                    t          ddd d          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        |j                   d S )NrO   rP   rR   rS   rV   s     r    testAttrModeSetsNonOptionalAttrsz,MinidomTest.testAttrModeSetsNonOptionalAttrsW   s~    G^T8<<G,,,*N;;;h///33333r   c                     t          t                    }|                     |                    d          |j                            d          k               |                                 d S )NLI)r   rE   r5   getElementsByTagNamedocumentElementrF   r2   r   s     r   testGetElementsByTagNamez$MinidomTest.testGetElementsByTagName^   s`    GnnS--d33#88>>? 	@ 	@ 	@

r   c                    t          d          }|j        }|j        d         }|                    d          }|                    ||           |                     t          |j                  dk    o|j        j        dk    o|j        d         |u op|j                            d          |u oT|j        d         |u oE|j                            d          |u o)|j	        |u o |j
        |u o|                                dk    d           |                    d          }|                    |d            |                     t          |j                  dk    o|j        j        dk    o|j        d         |u op|j                            d          |u oT|j        d         |u oE|j                            d          |u o)|j
        |u o |j        |u o|                                d	k    d           |                    d
          }|                    ||           |                     t          |j                  dk    o|j        j        dk    o|j        d         |u op|j                            d          |u oT|j        d         |u oE|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insertBeforer5   lenlengthr)   
firstChild	lastChildtoxmlpreviousSiblingnextSiblingrF   )r2   r   rootelemnelemnelem2s         r   testInsertBeforezMinidomTest.testInsertBefored   sn   -.."q!!!),,%&&&S))Q. BO*a/BOA&%/B O((++u4B OA&$.	B
 O((++t3B Ou,B Nd*B JJLL$AAD		F 		F 		F !!),,%&&&S))Q. LO*a/LOA&$.L O((++t3L OA&%/	L
 O((++u4L Ne+L )T1L JJLL$KKD		F 		F 		F ""5))&%(((S))Q. 	>O*a/	>OA&&0	> O((++v5	> OA&%/		>
 O((++u4	> &%/	> )V3	> JJLL=>D
	F 
	F 
	F 	

r   c                    t          d          }|                    d          }|                    d          }|                    d          }|                    d          }|j                            |           |                                }|                    |           |                    |           |                    |           ||||||fS )N<doc/>originalfoorg   bat)r   createTextNoder^   appendChildcreateDocumentFragmentr2   r   origc1c2c3frags          r   _create_fragment_test_nodesz'MinidomTest._create_fragment_test_nodes   s    (##!!*--&&&&&&''---))++D"b"d**r   c                 R   |                                  \  }}}}}}|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))r   r^   rk   r5   tupleri   rF   r   s          r   testInsertBeforeFragmentz$MinidomTest.testInsertBeforeFragment   s    &*&F&F&H&H#T2r2t((t444U3.9::BB'(5	7 	7 	7 	

&*&F&F&H&H#T2r2t((t444U3.9::"b$'(5	7 	7 	7 	

r   c                 h   t          t                    }|j                            |                    d                     |                     |j        j        d         j        dk               |                     |j        j        d         j        dk               |	                                 d S )NHelloz#comment)
r   rE   r^   r~   createCommentr5   ri   nodeNamedatarF   r_   s     r   testAppendChildzMinidomTest.testAppendChild   s    Gnn''(9(9'(B(BCCCS(3B7@JNOOOS(3B7<GHHH

r   c                 *   |                                  \  }}}}}}|j                            |           |                     t	          |j        j                  ||||fk    d           |                                 |                                 d S )NzappendChild(<fragment>))r   r^   r~   r5   r   ri   rF   r   s          r   testAppendChildFragmentz#MinidomTest.testAppendChildFragment   s    &*&F&F&H&H#T2r2t''---U3.9::BB'(.	0 	0 	0 	

r   c                 R   |                                  \  }}}}}}|j                            ||           |                                 |                     t          |j        j                  |||fk    d           |                                 |                                 d S )NzreplaceChild(<fragment>))r   r^   replaceChildrF   r5   r   ri   r   s          r   testReplaceChildFragmentz$MinidomTest.testReplaceChildFragment   s    &*&F&F&H&H#T2r2t((t444U3.9::r2rlJ*	, 	, 	,

r   c                    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 )Nrc   text)r   rj   r}   assertRaisesr   r   HierarchyRequestErrr~   rk   r   
attributessetNamedItemsetNamedItemNSrF   )r2   r   rt   r   nodemaps        r   testLegalChildrenzMinidomTest.testLegalChildren   s2   jj  ++!!&))#'5sMMM#'5s7G	  	  	 #'5s7G	  	  	  /#'5w7K	  	  	 #'5w7M	  	  	  	

r   c                    t                      }|                    d          }|j        }d|d<   |                    d          }|                     |j        |u d           |                     |j        |u d           |                     |j        dk    d           |                     |j        dk    d           |	                                 |	                                 d S )	Nrc   rg   r{   r   z-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
r   rj   r   r)   r5   r*   ownerElementvalue	nodeValuerF   )r2   r   rt   attrsas        r   testNamedNodeMapSetItemz#MinidomTest.testNamedNodeMapSetItem   s    jj  ++eJJqMMQ_+?	A 	A 	AQ^t+>	@ 	@ 	@QW%7	9 	9 	9Q[E);	= 	= 	=

r   c                    t          t                    }|                     |           |                    |                    d                     |                     |j        d         j                    |                                 d S )Nr{   r   )r   rE   r5   r~   r   ri   rF   r_   s     r   testNonZerozMinidomTest.testNonZero   so    GnnS))%00111+66777

r   c                     t          t                    }|                     |j                   |                                 |                     |j                   d S r0   )r   rE   r1   ri   rF   r=   r_   s     r   
testUnlinkzMinidomTest.testUnlink   sJ    Gnn'''

(((((r   c                     t          t                    5 }|                     |j                   d d d            n# 1 swxY w Y   |                     |j                   d S r0   )r   rE   r1   ri   r=   r_   s     r   testContextzMinidomTest.testContext   s    7^^ 	,sOOCN+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,(((((s   <A A c                     t                      }|                    |                    d                     |                     |j                   |                                 d S Nabc)r   r~   rj   r5   r^   rF   r_   s     r   testElementzMinidomTest.testElement   sQ    jj))%00111S()))

r   c                    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^   setAttributer5   rp   getAttributeNoder*   r   rF   )r2   r   elr   s       r   r   zMinidomTest.testAAA  s    (## 
'''RXXZZ#77CCC''Q_+3	5 	5 	5Q^s'::2	4 	4 	4

r   c                 
   t          d          }|j        }|                    dd           |                    dd           |                     |                                dk    d           |                                 d S )Nr   r   jamr   r   testAAB)r   r^   r   r5   rp   rF   r2   r   r   s      r   r   zMinidomTest.testAAB  sr    (## 
&&&
'''RXXZZ#77CCC

r   c                    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 )Nr   defghijklmnord   newval)
r   r~   rj   r   r5   getAttributer   r   rl   rF   r2   r   childs      r   testAddAttrzMinidomTest.testAddAttr  s   jj 1 1% 8 8995%(((U''..%7888U%e,2e;<<<5%(((U''..%7888U%e,2e;<<<S)**a/0005(+++U''..(:;;;U%e,2h>???S)**a/000

r   c                    t                      }|                    |                    d                    }|                     t	          |j                  dk               |                    dd           |                     t	          |j                  dk               |j        d= |                     t	          |j                  dk               |                                 d S )Nr   r   r   r   re   )r   r~   rj   r5   rl   r   r   rF   r   s      r   testDeleteAttrzMinidomTest.testDeleteAttr-  s    jj 1 1% 8 899S)**a/0005%(((S)**a/000U#S)**a/000

r   c                    t                      }|                    |                    d                    }|                    dd           |                     t          |j                  dk               |                     t          j	        j
        |j        d           |                    d           |                     t          |j                  dk               |                                 d S )Nr   r   r   re   r{   r   )r   r~   rj   r   r5   rl   r   r   r   r   NotFoundErrremoveAttributerF   r   s      r   testRemoveAttrzMinidomTest.testRemoveAttr8  s    jj 1 1% 8 8995%(((S)**a/000#'-u/DeLLLe$$$S)**a/000

r   c                 (   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:abcattrr{   rd   abcattrre   )r   r~   createElementNSsetAttributeNSr   r   r   r   removeAttributeNSr5   rl   r   rF   r   s      r   testRemoveAttrNSzMinidomTest.testRemoveAttrNSC  s   jj##$;\JJL L0.0G	I 	I 	I46FNNN#'-u/F*	, 	, 	,S)**a/000 7CCCS)**a/000

r   c                 ^   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 )Nr{   r   r   re   r   )r   r~   rj   r   r5   rl   r   r   r   r   r   r   removeAttributeNodeassertIsrF   )r2   r   r   r8   dom2child2node2s          r   testRemoveAttributeNodez#MinidomTest.testRemoveAttributeNodeQ  sv   jj 1 1% 8 89965)))S)**a/000%%f--#'-u/H	 	 	dE55d;;<<<S)**a/ ;**622d:	< 	< 	<zz!!$"4"4U";";<<''//#'-v/I	 	 	

r   c                     t                      }|                    |                    d                    }|                    dd           |                     |                    d                     d S )Nr{   r   r   )r   r~   rj   r   r5   hasAttributer   s      r   testHasAttributezMinidomTest.testHasAttributec  sf    jj 1 1% 8 89965)))U''//00000r   c                 r   t          d          }|j        }|                    dd           |                     t	          |j                  dk               |                    dd           |                    d           |                     t	          |j                  dk    o^|j        d         j        dk    oH|j        d         j        dk    o2|	                    d          dk    o|
                    d          j                   d|j        d<   |                     t	          |j                  dk    oV|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    o|j        d         j        dk    os|j        d         j        dk    o]|	                    d          dk    oD|j        d         j        dk    o.|j        d         j        dk    o|	                    d          dk               d	|j        d<   |                     t	          |j                  dk    o|j        d         j        dk    os|j        d         j        dk    o]|	                    d          dk    oD|j        d         j        d	k    o.|j        d         j        d	k    o|	                    d          d	k               |                                 d S )
Nr   r   r   re   bamhamspam2rd   bam2)r   r^   r   r5   rl   r   setIdAttributer   r   r   r   isIdrF   r   s      r   testChangeAttrzMinidomTest.testChangeAttri  sD   (## 
&&&S''1,---
&&& 	&!!!S''1, 5M&)/585M&)3u<5 OOF++u45 ''//4		6 	6 	6
 !&fS''1, /M&)/58/M&)3u</ OOF++u4/ M&).		0 	0 	0
 	'''S''1, 6M&)/586M&)3u<6 OOF++u46 M'*0E9	6
 M'*4=6 OOG,,5	7 	7 	7 "(gS''1, 7M&)/587M&)3u<7 OOF++u47 M'*0F:	7
 M'*4>7 OOG,,6	8 	8 	8 	

r   c                     d S r0    r2   s    r   testGetAttrListzMinidomTest.testGetAttrList      r   c                     d S r0   r   r   s    r   testGetAttrValueszMinidomTest.testGetAttrValues  r   r   c                     d S r0   r   r   s    r   testGetAttrLengthzMinidomTest.testGetAttrLength  r   r   c                     t                      }|                    |                    dd                    }|                     |                    d          d           d S )Nr   r   missing )r   r~   r   rT   r   r   s      r   testGetAttributezMinidomTest.testGetAttribute  s^    jj 7FFH H++I66;;;;;r   c                    t                      }|                    |                    dd                    }|                    ddd           |                     |                    dd          d           |                     |                    dd          d           |                    |                    d                    }|                     |                    dd	          d           d S )
Nr   r   r   r   pythonotherr   r   r   )r   r~   r   r   rT   getAttributeNSrj   )r2   r   r   r   s       r   testGetAttributeNSzMinidomTest.testGetAttributeNS  s   jj##$;\JJL L0.0G	I 	I 	I--.A8LL#	% 	% 	%--.A7KK	 	 	""3#4#4U#;#;<<../F	RR	 	 	 	 	r   c                     d S r0   r   r   s    r   testGetAttributeNodez MinidomTest.testGetAttributeNode        r   c                 r   d}t          |          }|                    dd          }|                     t          |          dk    oT|d         j        dk    oC|d         j        dk    o2|d         j        dk    o!|d         j        dk    o|d         j        dk               |	                                 d S )NzZ<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
        <minidom:myelem/>
        </foo>zhttp://pyxml.sf.net/minidommyelemre   r   r   zminidom:myelem)
r   getElementsByTagNameNSr5   rl   rP   rQ   rR   tagNamer   rF   )r2   dr   elemss       r   testGetElementsByTagNameNSz&MinidomTest.testGetElementsByTagNameNS  s     !nn**+H+35 5SZZ1_ :!H)-JJ:!H&(2: !HOy0: !H$(88	:
 !H%)99	; 	; 	; 	

r   c                 ~    |                     ||          }|                     t          |          dk               d S r(   )r   r5   rl   )r2   r   nsurilnamenodelists        r   5get_empty_nodelist_from_elements_by_tagName_ns_helperzAMinidomTest.get_empty_nodelist_from_elements_by_tagName_ns_helper  s:    --eU;;S]]a'(((((r   c                 V   t          d          }|                     |dd           |                     |dd           |                     |dd           t          d          }|                     |dd           |                     |dd           |                     |d	d
           d S )Nry   z"http://xml.python.org/namespaces/a	localname*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?   s     r   +testGetEmptyNodeListFromElementsByTagNameNSz7MinidomTest.testGetEmptyNodeListFromElementsByTagNameNS  s    (##BB5{	D 	D 	DBBg	 	 	BB5s	< 	< 	< OPPBB.	= 	= 	=BBk	# 	# 	#BB6	= 	= 	= 	= 	=r   c                    t                      }|                    |                    d                    }t          |          }t	          |          }|                     ||k               |                                 d S r   r   r~   rj   reprstrr5   rF   r2   r   r   string1string2s        r   testElementReprAndStrz!MinidomTest.testElementReprAndStr  h    jj__S..u5566r((b''W'(((

r   c                    t                      }|                    |                    d                    }t          |          }t	          |          }|                     ||k               |                                 d S r   r  r  s        r   testElementReprAndStrUnicodez(MinidomTest.testElementReprAndStrUnicode  r  r   c                 8   t                      }|                    |                    dd                    }t          |          }t	          |          }|                     ||k               |                     d|v            |                                 d S )Nzhttp://www.slashdot.orgz	slash:abc)r   r~   r   r  r  r5   rF   r  s        r   testElementReprAndStrUnicodeNSz*MinidomTest.testElementReprAndStrUnicodeNS  s    jj__ 9;GGI Ir((b''W'((([G+,,,

r   c                 ,   t                      }|                    |                    d                    }|                    dd          }|                     t          |          t          |          k               |                                 d S )Nr   r   )r   r~   rj   r   r5   r  r  rF   )r2   r   r   r8   s       r   testAttributeReprzMinidomTest.testAttributeRepr  sq    jj__S..u5566ue,,SYY$t**,---

r   c                     d S r0   r   r   s    r   testTextNodeReprzMinidomTest.testTextNodeRepr  r   r   c                     d}t          |          }|                                }|                                 |                     ||k               d S )Nz <?xml version="1.0" ?><a b="c"/>)r   rp   rF   r5   r2   r  r   domstrs       r   testWriteXMLzMinidomTest.testWriteXML  sJ    0#

SF]#####r   c                     d}t          |          }|                    d          }|                                 |                     ||                    dd          k               d S )Nz"<?xml version="1.0" ?>
<a b="c"/>
z
)newl
)r   toprettyxmlrF   r5   replacer"  s       r   testAltNewlinezMinidomTest.testAltNewline  s_    4#f--

Vs{{488899999r   c                 :   d}|                      t          d                                          |dz              |                      t          d                                          |dz              |                      t          d                                          |dz              |                      t          d                                          |d	z              |                      t          d
                                          |dz              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>
)rT   r   r(  )r2   decls     r    test_toprettyxml_with_text_nodesz,MinidomTest.test_toprettyxml_with_text_nodes  s5   )Z00<<>>,	. 	. 	.%788DDFF >>	@ 	@ 	@%788DDFF >>	@ 	@ 	@%>??KKMM EE	G 	G 	G%?@@LLNN JJ	L 	L 	L 	L 	Lr   c                 p   t                      }|                    d          }|                    |                    d                     |                    |                    d                     |                    |           d}|                     |                                |dz              d S )Nrt   TEXTr,  z<elem>
	TEXT
	TEXT
</elem>
)r   rj   r~   r}   rT   r(  )r2   r   rt   r.  s       r   )test_toprettyxml_with_adjacent_text_nodesz5MinidomTest.test_toprettyxml_with_adjacent_text_nodes  s    jj  ((++F33444++F33444)** CC	E 	E 	E 	E 	Er   c                 t   dD ]}t          |          }t          |                                          }|                     |                    d          d         j        d                                         |                    d          d         j        d                                                    d S )N)r-  z<A><B>C</B></A>Br   )r   r(  rT   r]   ri   rp   )r2   r  r   r   s       r   /test_toprettyxml_preserves_content_of_text_nodez;MinidomTest.test_toprettyxml_preserves_content_of_text_node  s    2 	I 	ICc""Cs0011D((--a0;A>DDFF))#..q1<Q?EEGGI I I I	I 	Ir   c                    t          d          }|j        j        }|                     |j        dk    o|j        dk    o|j        dk    o|j        t          j	        k    oj|j
        d u oa|                                 oLt          |j                  dk    o4|j        d u o+|j        d u o"|j        d u o|j        t"          j        j        k               d S )Nz<e><?mypi 	
 data 	
 ?></e>mypizdata 	
 r   )r   r^   rn   r5   targetr   r   nodeTyper   PROCESSING_INSTRUCTION_NODEr   hasChildNodesrl   ri   ro   rQ   rP   r   r   EMPTY_NAMESPACE)r2   r   pis      r   testProcessingInstructionz%MinidomTest.testProcessingInstruction&  s   ;<< +RY&( 
?G|+
?K6)
? K4#CC
? MT)	
?
 ((***
? &&!+
? MT)
? LD(
? LD(
? Osw'>>
	@ 
	@ 
	@ 
	@ 
	@r   c                     d S r0   r   r   s    r   testProcessingInstructionReprz)MinidomTest.testProcessingInstructionRepr5  r   r   c                     d S r0   r   r   s    r   testTextReprzMinidomTest.testTextRepr7  r   r   c                     d S r0   r   r   s    r   testWriteTextzMinidomTest.testWriteText9  r   r   c                     d S r0   r   r   s    r   testDocumentElementzMinidomTest.testDocumentElement;  r   r   c                     t          d          }|                    d          }|                     t          j        j        |j        |           |                                 |                                 d S )Nry   extra)r   rj   r   r   r   r   r~   rF   r2   r   rt   s      r   testTooManyDocumentElementsz'MinidomTest.testTooManyDocumentElements=  s_    (##  ))#'5sMMM

r   c                     d S r0   r   r   s    r   testCreateElementNSzMinidomTest.testCreateElementNSE  r   r   c                     d S r0   r   r   s    r   testCreateAttributeNSz!MinidomTest.testCreateAttributeNSG  r   r   c                     d S r0   r   r   s    r   	testParsezMinidomTest.testParseI  r   r   c                     d S r0   r   r   s    r   testParseStringzMinidomTest.testParseStringK  r   r   c                     d S r0   r   r   s    r   testCommentzMinidomTest.testCommentM  r   r   c                     d S r0   r   r   s    r   testAttrListItemzMinidomTest.testAttrListItemO  r   r   c                     d S r0   r   r   s    r   testAttrListItemszMinidomTest.testAttrListItemsQ  r   r   c                     d S r0   r   r   s    r   testAttrListItemNSzMinidomTest.testAttrListItemNSS  r   r   c                     d S r0   r   r   s    r   testAttrListKeyszMinidomTest.testAttrListKeysU  r   r   c                     d S r0   r   r   s    r   testAttrListKeysNSzMinidomTest.testAttrListKeysNSW  r   r   c                 :   t          d          }|j        }|j        }|                    d          }|                    d          }|                     |                    |                     |                     t          j	        j
        |j        d           d S )Nz<doc a=''/>r   )r   r^   r   r   removeNamedItemr5   
isSameNoder   r   r   r   r2   r   r  r   a1a2s         r   testRemoveNamedItemzMinidomTest.testRemoveNamedItemY  s    -(($$""3''R]]2&&'''#'-u/DcJJJJJr   c                 @   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^   r   getAttributeNodeNSremoveNamedItemNSr5   ra  r   r   r   r   rb  s         r   testRemoveNamedItemNSz!MinidomTest.testRemoveNamedItemNSb  s    JKK!!":C@@$$%=sCCR]]2&&'''#'-u/F2C	9 	9 	9 	9 	9r   c                     d S r0   r   r   s    r   testAttrListValueszMinidomTest.testAttrListValuesl  r   r   c                     d S r0   r   r   s    r   testAttrListLengthzMinidomTest.testAttrListLengthn  r   r   c                     d S r0   r   r   s    r   testAttrList__getitem__z#MinidomTest.testAttrList__getitem__p  r   r   c                     d S r0   r   r   s    r   testAttrList__setitem__z#MinidomTest.testAttrList__setitem__r  r   r   c                     d S r0   r   r   s    r   testSetAttrValueandNodeValuez(MinidomTest.testSetAttrValueandNodeValuet  r   r   c                     d S r0   r   r   s    r   testParseElementzMinidomTest.testParseElementv  r   r   c                     d S r0   r   r   s    r   testParseAttributeszMinidomTest.testParseAttributesx  r   r   c                     d S r0   r   r   s    r   testParseElementNamespacesz&MinidomTest.testParseElementNamespacesz  r   r   c                     d S r0   r   r   s    r   testParseAttributeNamespacesz(MinidomTest.testParseAttributeNamespaces|  r   r   c                     d S r0   r   r   s    r   testParseProcessingInstructionsz+MinidomTest.testParseProcessingInstructions~  r   r   c                     d S r0   r   r   s    r   testChildNodeszMinidomTest.testChildNodes  r   r   c                     d S r0   r   r   s    r   testFirstChildzMinidomTest.testFirstChild  r   r   c                     t          d          }|j        }|                     |                                           t          d          }|j        }|                     |                                           d S )Nrb   ry   )r   r^   r1   r;  r=   )r2   r   r   r   doc2s        r   testHasChildNodeszMinidomTest.testHasChildNodes  sq    -..!))++,,,8$$#++--.....r   c                    |j         }|j         }t          |                                          }t          |                                          }|                                 |                                 |                     ||k    d           t          t          |                    D ]}|                    |          }	|                    |          }
|                     |	|
uo?|	j        |
j        k    o/|	j	        |
j	        k    o|	j
        |
j
        k    o|	j        |
j        k    d           |                     |
j        |u d           d S )Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)r   listkeyssortr5   rangerl   r)   r   r   rP   rQ   r   )r2   e1e2r3   attrs1attrs2keys1keys2irc  rd  s              r   !_testCloneElementCopiesAttributesz-MinidomTest._testCloneElementCopiesAttributes  sE   V[[]]##V[[]]##



Ue^%OPPPs5zz"" 
	? 
	?AQBQBLL2 5BH,545 2?:5 4KM M M LLB.=? ? ? ?
	? 
	?r   c                    t          d          }|j        }|                    |          }|                     ||d|rdpdz              dx|_        |_        |                    dd           |                    dd	           ||fS )
Nz<doc attr='value'><foo/></doc>testCloneElementDeepShallowMODIFIEDrW   z	NEW VALUEaddedVALUE)r   r^   	cloneNoder  r  r   r   )r2   deepr   rs   clones        r   _setupCloneElementzMinidomTest._setupCloneElement  s    :;;"t$$..%+t/K)L	N 	N 	N (21t}&+...'7+++Ezr   c                    |                      d          \  }}|                     t          |j                  dk    o0|j        j        dk    o |j        d u o|                                dk    d           |                                 d S )Nr   z<doc attr="value"/>testCloneElementShallowr  r5   rl   ri   rm   
parentNoderp   rF   r2   r   r  s      r   r  z#MinidomTest.testCloneElementShallow  s    ,,Q//
US)**a/ ;$+q0;$,; KKMM%::+		- 	- 	-
 	

r   c                    |                      d          \  }}|                     t          |j                  dk    o0|j        j        dk    o |j        d u o|                                dk    d           |                                 d S )Nre   z<doc attr="value"><foo/></doc>testCloneElementDeepr  r  s      r   r  z MinidomTest.testCloneElementDeep  s    ,,Q//
US)**a/ F$+q0F$,F KKMM%EE(		* 	* 	*
 	

r   c                 ~    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  r5   r2   r   r  s      r   testCloneDocumentShallowz$MinidomTest.testCloneDocumentShallow  sZ     * + + }}QTT\@	A 	A 	A 	A 	Ar   c                    t          d          }|                    d          }|                     |                    |          p|                    |           d           |                     t	          |j                  t	          |j                  k    d           |                     |j        j        t          j	        k    d           |                     |j        j
                            |          d           |                     |j                            |j                   d           |j        |                     |j        j        t          j        k    d           |                     |j        j
                            |                     |                     |j                            |j                              d S d S )	Nr  re   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  r5   ra  rl   ri   r^   r9  r   ELEMENT_NODEr*   r   DOCUMENT_TYPE_NODEr  s      r   testCloneDocumentDeepz!MinidomTest.testCloneDocumentDeep  s    * + + }}Q#....F$//#2F2FGF	H 	H 	HS((C,@,@@J	L 	L 	LT)2d6GGL	N 	N 	NT)7BB4HHN	P 	P 	P,778LMMMM	O 	O 	O;"LL.$2IIMO O OLL3>>tDDEEELLS[33DLAAABBBBB #"r   c                 (   t                      }|                    d          }|                     |d uo|j        |j        k    o|j        |j        k    o|j        |j        k    o|j        |j        k    ot          |j                  t          |j                  k    o|j        	                    t          |j                            d u oot          |j
                  t          |j
                  k    oE|j
        	                    t          |j
                            d u ot          |j                  dk               t          t          |j                            D ]}|j        	                    |          }|j        	                    |          }|                     |                    |           o|                    |           oo|j        |j        k    o_|j        |j        k    oO|j        |j        k    o?|j        |j        k    o/|j        |j        k    o|j        |j        k    o|j        |j        k               t          t          |j
                            D ]}|j
        	                    |          }|j
        	                    |          }|                     |                    |           oE|                    |           o/|j        |j        k    o|j        |j        k    o|j        |j        k               d S )Nre   r   )r&   r  r5   r   rU   publicIdsystemIdrl   r   r)   r   ri   r  ra  notationNamer"   r#   r!   )r2   r   r  r  secesncns           r   testCloneDocumentTypeDeepOkz'MinidomTest.testCloneDocumentTypeDeepOk  s&   )++!!!$$U$& 	/Ng&66	/J',.	/ Ng&66	/ Ng&66		/
 ''3w/?+@+@@	/ N''EN(;(;<<D	/ ((C0A,B,BB	/ O((U_)=)=>>$F	/ ())Q.		0 		0 		0 s7+,,-- 	2 	2A!&&q))B$$Q''BLLbmmB/// 1]]2...1r{21 2?:1 r{2	1
 r{21 r{21 )R->>1 
bj02 2 2 2 s7,--.. 	4 	4A"''**B%%a((BLLbmmB/// 3]]2...3r{23 r{23 r{2	4 4 4 4	4 	4r   c                     t                      }|j                            d          }|                     |d u d           d S )Nre   testCloneDocumentTypeDeepNotOkr+   r   r  r5   r2   r   r  s      r   r  z*MinidomTest.testCloneDocumentTypeDeepNotOk  sA    %''%%a((Ud]$DEEEEEr   c                    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    og|j        	                    d          d u oKt          |j
                  dk    o3|j
        	                    d          d u ot          |j                  dk               d S r(   )r&   r  r5   r   rU   r  r  rl   r   r)   r   ri   )r2   r   r  s      r   testCloneDocumentTypeShallowOkz*MinidomTest.testCloneDocumentTypeShallowOk
  s   )++!!!$$U$& 	/Ng&66	/J',.	/ Ng&66	/ Ng&66		/
 ''1,	/ N''**d2	/ ((A-	/ O((++t3	/ ())Q.		0 		0 		0 		0 		0r   c                     t                      }|j                            d          }|                     |d u d           d S )Nr   !testCloneDocumentTypeShallowNotOkr  r  s      r   r  z-MinidomTest.testCloneDocumentTypeShallowNotOk  sA    %''%%a((Ud]$GHHHHHr   c                     t          d          }t          d          }|                     t          j        j        |j        ||           d S )Nry   )r   r   r   r   NotSupportedErr
importNode)r2   r  testNamedoc1r  s        r   check_import_documentz!MinidomTest.check_import_document  sC    8$$8$$#'14?D$OOOOOr   c                 2    |                      dd           d S )Nr   testImportDocumentShallowr  r   s    r   r  z%MinidomTest.testImportDocumentShallow"      ""1&ABBBBBr   c                 2    |                      dd           d S )Nre   testImportDocumentDeepr  r   s    r   r  z"MinidomTest.testImportDocumentDeep%      ""1&>?????r   c                     t                      }t                      }|                     t          j        j        |j        |j        d           d S r(   r+   r   r   r   r   r  r  r   r2   srcr8  s      r   testImportDocumentTypeShallowz)MinidomTest.testImportDocumentTypeShallow(  M    %''+--#'163D+q	* 	* 	* 	* 	*r   c                     t                      }t                      }|                     t          j        j        |j        |j        d           d S Nre   r  r  s      r   testImportDocumentTypeDeepz&MinidomTest.testImportDocumentTypeDeep.  r  r   c                 :   t          d          }|j                            d          }|                     |d            |                    |          }|                     |                    |                      |                     |                    |                      |                     |j        d u |dz              |                     |j                            |j                  |dz              |                     |j	        |dz              d S )Nz<doc attr='value'/>rW   z: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
r   r^   r   assertNotEqualr  r5   ra  r   r*   	specified)r2   r  r  r   rW   r  s         r   check_clone_attributez!MinidomTest.check_clone_attribute6  s!   /00"33F;;D$'''t$$))$///000///000U'4/::	< 	< 	<U(33D4FGG;;	= 	= 	=U_KK	M 	M 	M 	M 	Mr   c                 2    |                      dd           d S )Nr   testCloneAttributeShallowr  r   s    r   r  z%MinidomTest.testCloneAttributeShallowD  r  r   c                 2    |                      dd           d S )Nre   testCloneAttributeDeepr  r   s    r   r  z"MinidomTest.testCloneAttributeDeepG  r  r   c                    t          d          }|j        }|                     |j        t          j                   |                    |          }|                     |j        |j        k    o|j	        |j	        k               d S )Nz<?target data?><doc/>)
r   rn   rT   r9  r   r:  r  r5   r8  r   )r2   r  r  r   r=  r  s         r   check_clone_pizMinidomTest.check_clone_piJ  s    122^d&FGGGT""U\RY. *J"')	+ 	+ 	+ 	+ 	+r   c                 2    |                      dd           d S )Nr   testClonePIShallowr  r   s    r   r  zMinidomTest.testClonePIShallowR  s    A344444r   c                 2    |                      dd           d S )Nre   testClonePIDeepr  r   s    r   r  zMinidomTest.testClonePIDeepU  s    A011111r   c                    t           j        j                            d                                          } G d d          } |            }|j        }|j        d         }|                    dd|           |rd|                    d          }| 	                    |j
        j        j        d	           t           j        j        j        }|j        j        d         }	ngt          j        |d
d           5  |                    d          }d d d            n# 1 swxY w 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                       e Zd Zd ZdS )4MinidomTest.check_clone_node_entity.<locals>.Handlerc                 L    || _         || _        || _        || _        || _        d S r0   )	operationkeyr   r  dstr2   r  r  r   r  r  s         r   handlez;MinidomTest.check_clone_node_entity.<locals>.Handler.handlee  s)    !* 	r   N)__name__
__module____qualname__r  r   r   r   Handlerr  d  s#            r   r  smiler  r   T)r  u%   Don't let entities make you frown ☺r*   )r   r   r   r   stripr   r   setUserDatar  rT   r^   rn   r7   UserDataHandlerNODE_IMPORTEDr   	swap_attrNODE_CLONEDr  r  r   r   r  r  )
r2   clone_documentdocumentr  handlerr   r%   r  r  r  s
             r   check_clone_node_entityz#MinidomTest.check_clone_node_entityX  s    7?.. 0 EGG 	 	 	 	 	 	 	 	 '))"!'*5&'222 	*&&D&11EU2=GDF F F/=I-(1CC "7OTBB 5 5))t)445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 /;I.)C*I666e,,,v...gk6***gk3'''''s   5DDDc                 Z    |                      d           |                      d           d S )NFT)r  r   s    r   testCloneNodeEntityzMinidomTest.testCloneNodeEntity  s0    $$U+++$$T*****r   c                    t          d          }|j        }|                    |                    d                     |                    |                    d                     |                     t          |j                  dk    o|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 )Nry   firstsecondrd   ztestNormalize -- preparationre   firstsecondztestNormalize -- resultr   r   z*testNormalize -- single empty node removed)r   r^   r~   r}   r5   rl   ri   rm   	normalizern   ro   r   rF   r2   r   rs   s      r   testNormalizezMinidomTest.testNormalize  s   (##"++G44555++H55666S))Q. 0O*a/.	0 	0 	0 	S))Q. :O*a/:Ot~5: O(M9+		- 	- 	-
 	

(##"++B//000S))Q. 0O*a/<	> 	> 	> 	

r   c                 "   t          d          }|j        }|                    |                    d                     |                    |                    d                     |                    |                    d                     |                     t          |j                  dk    o|j        j        dk    d           |	                                 |                     t          |j                  dk    oo|j        j        dk    o_|j
        j        dk    oO|j
        |j        uoA|j
        j        |j        u o.|j
        j        d u o |j        j        |j
        u o|j        j        d u d	           |                                 d S )
Nry   r  r   r  rf   z1testNormalizeCombineAndNextSibling -- preparationrd   r  z-testNormalizeCombinedAndNextSibling -- result)r   r^   r~   r}   rj   r5   rl   ri   rm   r  rn   r   ro   rr   rq   rF   r  s      r   "testNormalizeCombineAndNextSiblingz.MinidomTest.testNormalizeCombineAndNextSibling  s   (##"++G44555++H55666**3//000S))Q. 0O*a/C	E 	E 	E 	S))Q. 7O*a/7O(M97 O4>97 O/4>A	7
 O3t;7 N2doE7 N.$6A	C 	C 	C 	

r   c                    t          d          }|j        }|                    |                    d                     |                    |                    d                     |                     t          |j                  dk    o|j        j        dk    d           |                                 |                     t          |j                  dk    oI|j        j        dk    o9|j	        j
        dk    o)|j	        |j        u o|j	        j        d u o|j	        j        d u d           |                                 d S )Nry   r  r   rd   z1testNormalizeDeleteWithPrevSibling -- preparationre   z,testNormalizeDeleteWithPrevSibling -- resultr   r^   r~   r}   r5   rl   ri   rm   r  rn   r   ro   rr   rq   rF   r  s      r   "testNormalizeDeleteWithPrevSiblingz.MinidomTest.testNormalizeDeleteWithPrevSibling  sH   (##"++G44555++B//000S))Q. 0O*a/C	E 	E 	E 	S))Q. <O*a/<O(G3< Ot~5< O/47	<
 O3t;@	B 	B 	B 	

r   c                    t          d          }|j        }|                    |                    d                     |                    |                    d                     |                     t          |j                  dk    o|j        j        dk    d           |                                 |                     t          |j                  dk    oI|j        j        dk    o9|j	        j
        dk    o)|j	        |j        u o|j	        j        d u o|j	        j        d u d           |                                 d S )Nry   r   r   rd   z1testNormalizeDeleteWithNextSibling -- preparationre   z,testNormalizeDeleteWithNextSibling -- resultr  r  s      r   "testNormalizeDeleteWithNextSiblingz.MinidomTest.testNormalizeDeleteWithNextSibling  sH   (##"++B//000++H55666S))Q. 0O*a/C	E 	E 	E 	S))Q. <O*a/<O(H4< Ot~5< O/47	<
 O3t;@	B 	B 	B 	

r   c                    t          d          }|j        }|                    |                    d                     |                    |                    d                     |                    |                    d                     |                     t          |j                  dk    o|j        j        dk    d           |	                                 |                     t          |j                  dk    o_|j        j        dk    oO|j
        |j        uoA|j
        j        |j        u o.|j
        j        d u o |j        j        |j
        u o|j        j        d u d           |                                 d S )Nry   r  r   rf   z1testNormalizeDeleteWithTwoSiblings -- preparationrd   z,testNormalizeDeleteWithTwoSiblings -- result)r   r^   r~   rj   r}   r5   rl   ri   rm   r  rn   ro   rr   rq   rF   r  s      r   )testNormalizeDeleteWithTwoNonTextSiblingsz5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblings  s   (##"**3//000++B//000**3//000S))Q. 0O*a/C	E 	E 	E 	S))Q. 7O*a/7O4>97 O/4>A7 O3t;	7
 N2doE7 N.$6@	B 	B 	B 	

r   c                 v   t          d          }|j        }|                    |                    d                     |                    |                    d                     |                    |                    d                     |                    |                    d                     |                    |                    d                     |                     t          |j                  dk    o|j        j        dk    d           |                                 |                     t          |j                  dk    oI|j        j        dk    o9|j	        |j
        u o+|j	        j        dk    o|j	        j        d u o|j	        j        d u d	           |                                 d S )
Nry   r   r   fourth   z,testNormalizeDeleteAndCombine -- preparationre   secondfourthz'testNormalizeDeleteAndCombine -- result)r   r^   r~   r}   r5   rl   ri   rm   r  rn   ro   r   rq   rr   rF   r  s      r   testNormalizeDeleteAndCombinez)MinidomTest.testNormalizeDeleteAndCombine  s   (##"++B//000++H55666++B//000++H55666++B//000S))Q. 0O*a/>	@ 	@ 	@ 	S))Q. 8O*a/8Ot~58 O(N:8 O3t;	8
 O/47;	= 	= 	= 	

r   c                 ~
   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    ot          |j        d         j                  d	k    o|j        d         j        j        d	k    ot          |j        d         j                  dk    on|j        d         j        j        dk    oSt          |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    ot          |j        d         j                  d
k    o|j        d         j        j        d
k    ot          |j        d         j                  d
k    on|j        d         j        j        d
k    oSt          |j        d         j        d         j                  dk    o%|j        d         j        d         j        j        dk    d           |                     |j        d         j        d         j	        dk    oL|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 o0|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 oS|j        d         j        d         j        d u o4|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   xre   x2x3rf   rh   rd   ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthstxt2x2t3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)r   r^   ri   r~   r}   r5   rl   rm   r  r   rr   rq   rF   r  s      r   testNormalizeRecursionz"MinidomTest.testNormalizeRecursion  s    # $ $" "&&s'9'9"'='=>>>&&s'9'9#'>'>???%a(44S5G5G5M5MNNN&&s'9'9$'?'?@@@++B//000S))Q. LO*a/L*566!;L OA&18A=L *566!;	L
 OA&18A=L *5a8CDDIL OA&1!4?F!K1	3 	3 	3 	S))Q. LO*a/L*566!;L OA&18A=L *566!;	L
 OA&18A=L *5a8CDDIL OA&1!4?F!K8	: 	: 	: 	T_Q'215:dB DOA&1!4?BG6QDOA&1!49VC8	: 	: 	: 	T_Q'215ATI <OA&1!4D?1-8;<< OA&1!4DL< OA&1!4@?1-8;<	< OA&1!4@DH< OA&1!4D?1-8;<< OA&1!4DL< OA&1!4@?1-8;<6	8 	8 	8 	

r   c                     t          d          }|j        j        d         }|                     |j        t
          j                   |                                 |                                 d S )Nz<o>text</o>r   )	r   r^   ri   rT   r9  r   	TEXT_NODEr  rF   )r2   r   r   s      r   testBug0777884zMinidomTest.testBug0777884E  sZ    -(("-a0777

r   c                     t          d          }|j        }d|j        d         _        |                                 |                     |j        d         j        d u d           d S )Nz<o><i/>t</o>r   re   r   z)Final child's .nextSibling should be None)r   r^   ri   r   r  r5   rr   r2   r   r8   s      r   testBug1433694zMinidomTest.testBug1433694M  so    .))"')$T_R(4<@	B 	B 	B 	B 	Br   c                    t          d          }|j        }|j        \  }}}|                     |j        |u o,|j        d u o#|j        |u o|j        |u o|j        d u o|j        |u d           |                                 d S )Nz<doc><?pi?>text?<elm/></doc>testSiblings)r   r^   ri   r5   rr   rq   rF   )r2   r   rs   r=  r   elms         r   r"  zMinidomTest.testSiblingsU  s    899"/T3R^t+ ,"d*, C', $*, 4'	,
 #t+^	= 	= 	= 	

r   c                 $   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^   ri   r5   r  rF   )r2   r   rs   elm1elm2aelm2belm3s          r   r%  zMinidomTest.testParentsc  s    AC C"q!"T_+ )4') D()  D() 5(-		9 	9 	9
 	

r   c                    t          d          }|j        }|d         }|                     |d         |                    d          u o|                    d          d u o|j                            d          |j        d         u oZ|j                            d          |j        d         u o3|j                            d          j                            d          d u d           |                                 d S )Nz<doc><e/><e/></doc>r   re   ztest NodeList.item())r   ri   r5   r)   rF   )r2   r   childrendocelems       r   testNodeListItemzMinidomTest.testNodeListItemr  s    /00>1+Xa[HMM!$4$44 JMM!$$,J&++A..'2DQ2GGJ &++A..'2DQ2GGJ &++A..9>>qAATI&	( 	( 	( 	

r   c                    t          d          }|                     |                                d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d	          d
                    d	                     t          j        dk    rC|                     t          t           d           |                     t          t           d           n!|                     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>rd   rh   r  s   <franais></franais>s.   <franais>Comment a va ? Trs bien ?</franais>s0   <franais>Comment a va ? Trs bien ?</franais>)
r   rT   rp   encodepyexpatversion_infor   r
   UnicodeDecodeErrorrF   r?   s     r   testEncodingszMinidomTest.testEncodings~  s   /00B	D 	D 	D7++L	N 	N 	N=11J	L 	L 	L:..J	L 	L 	L8,,  &x 0 0	2 	2 	2 9,,j+24 4 4j+KM M M M 0+OQ Q Q 	

r   c                    t          d          }|                     |                                d           |                     |                    d           d           |                     |                    d          d           |                     |                    d          d           |                     |                    dd          d	           |                                 d S )
Nr/  r0  )
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   rT   rp   rF   r?   s     r   testStandalonezMinidomTest.testStandalone  s   /00B	D 	D 	Dd33B	D 	D 	Dd33E	G 	G 	Ge44D	F 	F 	F7D11'	( 	( 	( 	

r   c                       e Zd ZdZd ZdS )MinidomTest.UserDataHandlerr   c                 v    |                     ||dz   |            |                     |d d            d| _        d S r  )r  calledr  s         r   r  z"MinidomTest.UserDataHandler.handle  s=    OOC4000OOCt,,,DKKKr   N)r  r  r  r=  r  r   r   r   r  r;    s(        	 	 	 	 	r   r  c                    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  r{      rg      re   )	r   rj   r5   getUserDatar  r  r  r=  rF   )r2   r   nr  cs        r   testUserDatazMinidomTest.testUserData  s   jjc""Q]]5))T1222	eT4(((Q]]5))T1222	eR$$$	eR$$$Q]]5))R/000Q]]5))R/000	eT4(((Q]]5))T1222Q]]5))R/000&&((	eR)))KKNNW^ /MM%((D0/MM%((B.	0 	0 	0 	



	




r   c                     |                      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:foory   r{   )r   r   r   NamespaceErr
renameNoder   WrongDocumentErrr<  )r2   r   r8   r  s       r    checkRenameNodeSharedConstraintsz,MinidomTest.checkRenameNodeSharedConstraints  su    #'.4k	C 	C 	C8$$#'2DOT'15	: 	: 	: 	: 	:r   c                 
   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 ov|                    d                              |          oN|d                             |          o3|j                            |          o|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k    o|                    d          d u o|                    d          d u o|                    d                              |          o^|                    dd                              |          o5|d                             |          o|d                             |                     |                    |dd	          }|                     |j        d	k    o|j	        d	k    o|j
        d
k    o|j        dk    o|j        dk    o|j        dk    o|                    d          d u o|                    d          d u o|                    d          d u o|                    dd          d u o|                    d	                              |          o^|                    dd
                              |          o5|d	                             |          o|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 oq|                    d	          d u oZ|                    dd          d u oB|                    d                              |          o|d                             |                     |                     t          j        j        |j        |dd           |                     ||           |                                 d S )Nz<doc a='v'/>r   rg  vrF  rC  )rF  rC  http://xml.python.org/ns2zp:dr  p)rM  r  r  xmlns)r   r^   r   rH  r   r   r<  r5   rU   r   rQ   rP   rR   r   r   ra  r*   r   rh  r   rG  rJ  rF   )r2   r   rt   attrmaprW   s        r   testRenameAttributezMinidomTest.testRenameAttribute  s   .))"/s# ~~dCG$;SAATY#% 
7MS(
7Nd*
7 %)@@
7 K4'	
7
 J#%
7 ))#..$6
7 ))#..99$??
7 CL++D11
7 &11#66
7 %0066
	8 
	8 
	8 ~~d$>DDTY#% PMS(PNc)P %)CCP K4'	P
 J#%P ))#..$6P ))#..$6P ))#..99$??P ++.5 55?Z5E5EP CL++D11P =>II$OO	Q 	Q 	Q ~~d$?GGTY%' QMU*QNc)Q %)DDQ K3&	Q
 J#%Q ))#..$6Q ))#..$6Q ))#..$6Q ++.5 58<=Q ))%00;;DAAQ ++/6 66@j6F6FQ EN--d33Q >?JJ4PP	R 	R 	R$ ~~dCG$;SAATY#% 2MS(2Nd*2 %)@@2 K4'	2
 J#%2 ))#..$62 ))#..$62 ))#..$62 ))%00D82 ++.5 58<=2 ))#..99$??2 CL++D11	3 	3 	3 	#'.4g	? 	? 	?--c4888

r   c                    t          d          }|j        }|                    |t          j        j        d          }|                     |j        dk    oP|j        dk    oE|j	        d u o<|j
        t          j        j        k    o"|j        d u o|j                            |                     |                    |dd          }|                     |j        dk    oC|j        dk    o8|j	        dk    o-|j
        dk    o"|j        d u o|j                            |                     |                    |dd          }|                     |j        dk    oE|j        dk    o:|j	        dk    o/|j
        dk    o$|j        dk    o|j                            |                     |                    |t          j        j        d	          }|                     |j        d	k    oP|j        d	k    oE|j	        d u o<|j
        t          j        j        k    o"|j        d u o|j                            |                     |                     ||           |                                 d S )
Nry   r   rF  rg  rM  zp:crC  rN  r  )r   r^   rH  r   r   r<  r5   r  r   rQ   rP   rR   r*   ra  rJ  rF   rI  s      r   testRenameElementzMinidomTest.testRenameElement  s   (##" ~~dCG$;SAAT\S( 7MS(7Nd*7 %)@@7 K4'	7
 &11#66	8 	8 	8 ~~d$>DDT\S( 7MS(7Nc)7 %)CC7 K4'	7
 &11#66	8 	8 	8 ~~d$?GGT\U* 7MU*7Nc)7 %)DD7 K3&	7
 &11#66	8 	8 	8 ~~dCG$;SAAT\S( 7MS(7Nd*7 %)@@7 K4'	7
 &11#66	8 	8 	8 	--c4888

r   c                 ^   t           j        j                                                            t           j        j        dd           }|                    d          }|                     t           j        j        |j	        |t           j        j        d           |
                                 d S )Nr  commentr{   )r   r   r   r	   r   r<  r   r   r  rH  rF   r  s      r   testRenameOtherzMinidomTest.testRenameOtherH  s     go2244CCG#S$0 0  ++#'13>4'15	: 	: 	:

r   c                    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   r   rg  abrC  cabrU  r  r  yzcabd)r   r^   ri   rT   r9  r   r  r;   r~   r}   rk   createCDATASectionr   rj   r   createProcessingInstructionremoveChild)r2   r   rt   r   splittertext2r  s          r   testWholeTextzMinidomTest.testWholeTextR  s=   .))"q!777D#&&&++C00111D$'''#0055t<<<D%((( $$Y//"""""3''D%(((E3'''c""!X&&&D%(((E3'''++C55!X&&&D%(((E3'''"""D&)))E6*****r   c                     t          d          }|j        }|j        }|                     |j        |u d           |                    ||           |                     |j        |u d           d S )Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())r   r^   rn   r5   r  r   )r2   r   rt   r  s       r   testPatch1094164zMinidomTest.testPatch1094164v  ss    +,,"OQ\T)+BCCC!QQ\T)+ABBBBBr   c                    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                  
   t          d          } | j        }|j        }|j        }|j        }|                    |                     d          |           |                    |                     d          |           | ||||fS )Nz<doc>a<e/>d</doc>rg  rC  )r   r^   rn   ro   rr   rk   r}   r]  )r   rt   text1ra  r`  s        r   setupz/MinidomTest.testReplaceWholeText.<locals>.setup  s    122C&DOENE(Hc0055x@@@c44S995AAAeXu44r   znew contentr  rf   rY  r  r   rd   )replaceWholeTextr;   r5   rl   ri   )r2   rh  r   rt   rg  r`  ra  r   s           r   testReplaceWholeTextz MinidomTest.testReplaceWholeText  s{   	5 	5 	5 -2EGG)T5(E%%m44D-000E3'''S))Q.///,1EGG)T5(E%%m44D-000E5)))S))Q.///,1EGG)T5(E%%b))E3'''TT\ .((A-	/ 	/ 	/ 	/ 	/r   c                    t          d          }|j        }|j        }|                     |j        d u o|j        t          j        j        k               d	                                }|D ][}|
                    |          }|j        }|                     t          |d          o|j        t          j        j        k               \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 nmsrU   )r   r^   
schemaTyper5   rU   	namespacer   r   r<  splitr   hasattr)r2   r   rt   r:   namesrU   r   s          r   testSchemaTypezMinidomTest.testSchemaType  s    /0 0" "
 OQVt^ ;K37#::	< 	< 	<=CCEE 	@ 	@D%%d++AALLF++ ?sw'>>@ @ @ @	@ 	@r   c                    t          d          }|j        }|                    d          }|                    d          }|                     |                    d          d u o|j         o|j                    |                    d           |                     |                    |                    d                    o|j        o|j                    |                    d           |                     |                    |                    d                    o5|                    |                    d                    o|j        o|j                   |                    d          }d|_	        |
                    |           |                     |                    d          d u o>|                    |                    d                    o|j         o|j        o|j                    |                    |t          j        j        d           |                     |                    |                    d                    o|j                   d S )Nz<doc a1='v' a2='w'/>rc  rd  rL  wan)r   r^   r   r5   getElementByIdr   r   ra  createAttributer   setAttributeNoderH  r   r   r<  )r2   r   r  rc  rd  a3s         r   testSetIdAttributezMinidomTest.testSetIdAttribute  se   011%%%%S'',,4  K K	! 	! 	! 	
Q\\#"4"4S"9"9::  G K	! 	! 	! 	
Q\\#"4"4S"9"9:: LL!3!3C!8!899G G	 	 	
   &&	2S'',,4  LL!3!3C!8!899 K  G  K		! 	! 	! 	r372D999Q\\#"4"4S"9"9:: G	 	 	 	 	r   c                    d}d}t          d|z   dz   |z   dz             }|j        }|                    |d          }|                    |d          }|                     |                    d          d u o|j         o|j                    |                    |d           |                     |                    |                    d                    o|j        o|j                    |                    |d           |                     |                    |                    d                    o5|                    |                    d	                    o|j        o|j                   |                    |d          }d|_	        |
                    |           |                     |                    |                    d	                               |                     |j                    |                     |j                   |                     |j                    |                     |                    d          d u            |                    |t          j        j        d
           |                     |                    |                    d	                    o|j                   d S Nzhttp://xml.python.org/ns1rM  z<doc xmlns:ns1='z' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>rc  rd  rL  rs  rt  )r   r^   rh  r5   ru  r   setIdAttributeNSra  createAttributeNSr   rw  rH  r   r   r<  r2   NS1NS2r   r  rc  rd  rx  s           r   testSetIdAttributeNSz MinidomTest.testSetIdAttributeNS  s   )) )+./2))+./255 6 6 !!#t,,!!#t,,S'',,4  K K	! 	! 	! 	
3%%%Q\\#"4"4S"9"9::  G K	! 	! 	! 	
3%%%Q\\#"4"4S"9"9:: LL!3!3C!8!899G G	 	 	
 ""3--	2Q\\#"4"4S"9"9::;;;[!!!RW[!!!S'',,4555r372D999Q\\#"4"4S"9"9:: G	 	 	 	 	r   c                    d}d}t          d|z   dz   |z   dz             }|j        }|                    |d          }|                    |d          }|                     |                    d          d u o|j         o|j                    |                    |           |                     |                    |                    d                    o|j        o|j                    |                    |           |                     |                    |                    d                    o5|                    |                    d	                    o|j        o|j                   |                    |d          }d|_	        |
                    |           |                     |                    |                    d	                               |                     |j                    |                     |j                   |                     |j                    |                     |                    d          d u            |                    |t          j        j        d
           |                     |                    |                    d	                    o|j                   d S r{  )r   r^   rh  r5   ru  r   setIdAttributeNodera  r}  r   rw  rH  r   r   r<  r~  s           r   testSetIdAttributeNodez"MinidomTest.testSetIdAttributeNode   s   )) )+./2))+./255 6 6 !!#t,,!!#t,,S'',,4  K K	! 	! 	! 	
R   Q\\#"4"4S"9"9::  G K	! 	! 	! 	
R   Q\\#"4"4S"9"9:: LL!3!3C!8!899G G	 	 	
 ""3--	2Q\\#"4"4S"9"9::;;;[!!!RW[!!!S'',,4555r372D999Q\\#"4"4S"9"9:: G	 	 	 	 	r   c                 R   ||fg}|r|                                 \  }}|                     |j        |j                   |                     t          |j                  t          |j                             |                     |j        |j                   |                     |                    |                     |                     |                    |                     |j        t          j	        k    rbt          |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           t          t          |j
                            D ]}|j
                            |          }	|j
                            |          }
|                     |	j        |
j                   |                     |	j        |
j                   |                     |	j        |
j                   |                    |	|
f           |j        t          j        k    rZ|                     |j                            |                     |                     |j                            |                     t          t          |j                            D ]/}|                    |j        |         |j        |         f           0|d S d S r0   )poprT   r9  rl   ri   r   r=   ra  r   r  r   r   r  r)   rU   r  r  r   r  DOCUMENT_NODEr1   r*   )r2   r   r  stackn1n2r  no1no2r  r  s              r   assert_recursive_equalz"MinidomTest.assert_recursive_equal$  s   t !	CYY[[FBR["+666S//R]1C1CDDDR["+666R]]2..///R]]2..///{d555BK   BK   BL!!!BL!!!  R[!1!13r{3C3CDDD  R\!2!2C4E4EFFFs2<0011 - -A,++A..C,++A..C$$SXsx888$$S\3<@@@$$S\3<@@@LL#s,,,,s2;//00 + +A))!,,B))!,,B$$R_boFFF$$R["+>>>$$R["+>>>LL"b****{d000 0 ; ;C @ @AAA 0 ; ;D A ABBB3r}--.. C CbmA.a0@ABBBBC  !	C !	C !	C !	C !	Cr   c                     t          t                    }t          dt          j        dz             D ]A}t          j        ||          }t          j        |          }|                     ||           Bd S )Nrd   re   )r   sampler  pickleHIGHEST_PROTOCOLdumpsloadsr  )r2   r   protor9   r  s        r   testPickledDocumentzMinidomTest.testPickledDocumentI  sq    &!!1f59:: 	3 	3ES%((A<??D''T2222	3 	3r   c                     t          t                    }t          j        |          }|                     ||           d S r0   )r   r  copydeepcopyr  r  s      r   testDeepcopiedDocumentz"MinidomTest.testDeepcopiedDocumentP  s:    &!!}S!!##C.....r   c                     t                      }|                    |                    d                     |                     t          |j                   d S )Nzfoo--bar)r   r~   r   r   
ValueErrorrp   r?   s     r   (testSerializeCommentNodeWithDoubleHyphenz4MinidomTest.testSerializeCommentNodeWithDoubleHyphenU  sK    (**))*55666*ci00000r   c                     t          d          }t          |                                          }|                     |j        t          j        j        k               d S )Nz$<element xmlns=''>
<foo/>
</element>)r   rp   r5   rP   r   r   r<  r  s      r   testEmptyXMLNSValuezMinidomTest.testEmptyXMLNSValue[  sP     / 0 0399;;''T&#'*AABBBBBr   c                     t           j        dk    r|                     t          d          }n|                     t          d          }|5  t          d           d d d            d S # 1 swxY w Y   d S )Nr1  zsyntax errorzUnsupported syntaxzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)r3  r4  assertRaisesRegexr
   r  r   )r2   contexts     r   !testExceptionOnSpacesInXMLNSValuez-MinidomTest.testExceptionOnSpacesInXMLNSValuea  s    9,,,,ZHHGG,,Z9MNNG 	a 	a_```	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	a 	as   
A''A+.A+c                    t          t                    }|j                            d          d         }|                     t
          j        j        |j        |           t          |j
                  }|                    |j
        d                    t          |j
                  }|                     ||dz
  k               d S )NTITLEr   re   )r   rE   r^   r]   r   r   r   r   r_  rl   ri   r1   )r2   r   	title_tagnum_children_beforenum_children_afters        r   testDocRemoveChildzMinidomTest.testDocRemoveChildj  s    Gnn'<<WEEaH	37.KKK!#.11q)*** 00*.AA.EEFFFFFr   c                 h    t          t                    }|                    dd          }d|_        d S )NrZ  r[  crash)r   rE   r^  r   )r2   r   r=  s      r   "testProcessingInstructionNameErrorz.MinidomTest.testProcessingInstructionNameErrors  s/     Gnn,,S#66r   c                     d}t          |          }t          j                    }|                    |           |                     |                                |           d S NE<?xml version="1.0" ?><curriculum status="public" company="example"/>)r   ioStringIOwritexmlrT   getvalue)r2   xml_strr   outputs       r   test_minidom_attribute_orderz(MinidomTest.test_minidom_attribute_orderz  sW    Y'""V**G44444r   c                 x    d}t          |          }|                     |                                |           d S r  )r   rT   rp   r2   r  r   s      r   "test_toxml_with_attributes_orderedz.MinidomTest.test_toxml_with_attributes_ordered  s8    Y'""g.....r   c                 x    d}t          |          }|                     |                                d           d S )Nr  zG<?xml version="1.0" ?>
<curriculum status="public" company="example"/>
r   rT   r(  r  s      r   (test_toprettyxml_with_attributes_orderedz4MinidomTest.test_toprettyxml_with_attributes_ordered  sM    Y'""**M	N 	N 	N 	N 	Nr   c                 x    d}t          |          }|                     |                                d           d S )NC<?xml version="1.0" ?><root><node><![CDATA[</data>]]></node></root>zH<?xml version="1.0" ?>
<root>
	<node><![CDATA[</data>]]></node>
</root>
r  r  s      r   test_toprettyxml_with_cdataz'MinidomTest.test_toprettyxml_with_cdata  sG    W'""**%	& 	& 	& 	& 	&r   c                 :   d}t          |          }|                     |                    d          d         j        d           t          |                                          }|                     |                    d          d         j        d           d S )Nr  r8   r   z</data>)r   r;   r]   rn   r(  )r2   r  dom1r   s       r   test_cdata_parsingzMinidomTest.test_cdata_parsing  s    W7##D55f==a@KYWWW4++--..D55f==a@KYWWWWWr   N)r.   )r  r  r  r5   r;   r@   rJ   rM   rX   rZ   r`   rw   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/  r2  r5  r>  r@  rB  rD  rF  rJ  rL  rN  rP  rR  rT  rV  rX  rZ  r\  r^  re  rj  rl  rn  rp  rr  rt  rv  rx  rz  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  r9  r  rD  rJ  rQ  rS  rV  rb  rd  rj  rq  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r-   r-   7   sB       ( ( ( (B B B* * *
4 4 44 4 46 6 64 4 4  ) ) )V+ + +  "        *  "  ) ) )) ) )
  
 
 
    *	 	 		 	 	    $1 1 1$ $ $L      < < <   )((  ) ) )
= = ="         %$$$ $ $: : :L L L	E 	E 	EI I I@ @ @ 211   !!!'''   ('')))###$$$%%%&&&$$$&&&K K K9 9 9 '&&&&&++++++000$$$'''...000333""""""/ / /? ? ?(
 
 
    
A 
A 
AC C C2 4  4  4DF F F
0 0 0I I I
P P P
C C C@ @ @* * ** * *M M MC C C@ @ @+ + +5 5 52 2 2-( -( -(^+ + +  2  *  $  $  (  *< < <~  B B B    
 
 
  6            0: : :K K KZ) ) )V  "+ "+ "+HC C C/ / /:@ @ @B  >" " "H" " "H#C #C #CJ3 3 3/ / /
1 1 1C C Ca a aG G G  5 5 5/ / /
N N N& & &X X X X Xr   r-   __main__r0   )r  r  r  r3   r   unittestr3  xml.dom.minidomr   r   r   r   r   r   r	   xml.parsers.expatr
   findfilerE   r  r   r&   r+   TestCaser-   r  mainr   r   r   <module>r     sZ     				             D D D D D D D D D D D D D D 0 0 0 0 0 0 ( ( ( ( ( ( '
:m
<
<
<7G G G G     dX dX dX dX dX(# dX dX dXL3 zHMOOOOO r   