
    daf                       d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZ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j2                          yy)    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                 8    t               j                  d d|       S )Ndoc)r	   createDocument)doctypes    ,/root/Python-3.12.4/Lib/test/test_minidom.pycreate_doc_without_doctyper      s    !00ugFF    c                     t               j                  dd d       } g | j                  _        g | j                  _        t
        j                  j                  j                  dd d      }| j                  j                  j                  |       t
        j                  j                  j                  dd dd      }d|_        d|_        d|_        | j                  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JGGGww''t(LNH!!(+WW__##K$G$13F FNFO&F  (Nr   c                      t               } t        |       }|| j                  j                  d      _        || j
                  j                  d      _        |S Nr   )r&   r   r   itemownerDocumentr   )r   r   s     r   create_doc_with_doctyper+   /   sK    %'G
$W
-C-0G!*.1G1+Jr   c                   p   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. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zv G du dv      Zwdw Zxdx Zydy Zzdz 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 Zy)MinidomTestc                 (    | j                  ||       y N)
assertTrue)selftesttestnames      r   confirmzMinidomTest.confirm7   s    h'r   c                 R    |j                   }| j                  ||k(  d|d|       y )Nzlooking for z, found )	wholeTextr4   )r1   nodests       r   checkWholeTextzMinidomTest.checkWholeText:   s"    NNQ!V1a@Ar   c                     t               }| j                  |j                         | j                  t         j                         y r/   )r   assertFalseasync_r1   r   s     r   testDocumentAsyncAttrz!MinidomTest.testDocumentAsyncAttr>   s-    j$)r   c                     t        t        d      5 }t        |      }|j                          | j	                  t        |t                     d d d        y # 1 sw Y   y xY w)Nrbopentstfiler   unlinkr4   
isinstancer   r1   filer   s      r   testParseFromBinaryFilez#MinidomTest.testParseFromBinaryFileC   sH    '4  	4D+CJJLLLC23	4 	4 	4s   ;AAc                     t        t        dd      5 }t        |      }|j                          | j	                  t        |t                     d d d        y # 1 sw Y   y xY w)Nrz
iso-8859-1)r"   rB   rG   s      r   testParseFromTextFilez!MinidomTest.testParseFromTextFileI   sJ    '36 	4$+CJJLLLC23	4 	4 	4s   ;AA c                     t        dddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )NqNamenamespaceURI	localNameprefixr   assertEqualnamerO   rQ   rP   r1   attrs     r   testAttrModeSetsParamsAsAttrsz)MinidomTest.testAttrModeSetsParamsAsAttrsO   sd    G^[(CG,**N;h/5r   c                    t        ddd d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  |j                         y )NrN   rO   rQ   rR   rU   s     r    testAttrModeSetsNonOptionalAttrsz,MinidomTest.testAttrModeSetsNonOptionalAttrsV   sh    G^T8<G,**N;h/3r   c                     t        t              }| j                  |j                  d      |j                  j                  d      k(         |j                          y )NLI)r   rD   r4   getElementsByTagNamedocumentElementrE   r1   r   s     r   testGetElementsByTagNamez$MinidomTest.testGetElementsByTagName]   sG    GnS--d3##88>? 	@

r   c                 j   t        d      }|j                  }|j                  d   }|j                  d      }|j	                  ||       | j                  t        |j                        dk(  xr |j                  j                  dk(  xr |j                  d   |u xr |j                  j                  d      |u xre |j                  d   |u xrR |j                  j                  d      |u xr3 |j                  |u xr# |j                  |u xr |j                         dk(  d       |j                  d      }|j	                  |d        | j                  t        |j                        dk(  xr |j                  j                  dk(  xr |j                  d   |u xr |j                  j                  d      |u xre |j                  d   |u xrR |j                  j                  d      |u xr3 |j                  |u xr# |j                  |u xr |j                         d	k(  d       |j                  d
      }|j	                  ||       | j                  t        |j                        dk(  xr |j                  j                  dk(  xr |j                  d   |u xr |j                  j                  d      |u xre |j                  d   |u xrR |j                  j                  d      |u xr3 |j                  |u xr# |j                  |u xr |j                         dk(  d       |j                          y )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insertBeforer4   lenlengthr)   
firstChild	lastChildtoxmlpreviousSiblingnextSiblingrE   )r1   r   rootelemnelemnelem2s         r   testInsertBeforezMinidomTest.testInsertBeforec   sD   -.""q!!!),%&S)Q. BOO**a/BOOA&%/B OO((+u4B OOA&$.	B
 OO((+t3B OOu,B NNd*B JJL$AAD		F !!),%&S)Q. LOO**a/LOOA&$.L OO((+t3L OOA&%/	L
 OO((+u4L NNe+L ))T1L JJL$KKD		F ""5)&%(S)Q. 	>OO**a/	>OOA&&0	> OO((+v5	> OOA&%/		>
 OO((+u4	> &&%/	> ))V3	> JJL=>D
	F 	

r   c                 l   t        d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  j                  |       |j	                         }|j                  |       |j                  |       |j                  |       ||||||fS )N<doc/>originalfoorf   bat)r   createTextNoder]   appendChildcreateDocumentFragmentr1   r   origc1c2c3frags          r   _create_fragment_test_nodesz'MinidomTest._create_fragment_test_nodes   s    (#!!*-&&&''-))+D"b"d**r   c                 (   | j                         \  }}}}}}|j                  j                  |d        | j                  t	        |j                  j
                        ||||fk(  d       |j                          |j                          | j                         \  }}}}}}|j                  j                  ||       | j                  t	        |j                  j
                        ||||fk(  d       |j                          |j                          y )NzinsertBefore(<fragment>, None)zinsertBefore(<fragment>, orig))r   r]   rj   r4   tuplerh   rE   r   s          r   testInsertBeforeFragmentz$MinidomTest.testInsertBeforeFragment   s    &*&F&F&H#T2r2t((t4U3..99:BB'(5	7 	

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

r   c                 j   t        t              }|j                  j                  |j	                  d             | j                  |j                  j                  d   j                  dk(         | j                  |j                  j                  d   j                  dk(         |j                          y )NHelloz#comment)
r   rD   r]   r}   createCommentr4   rh   nodeNamedatarE   r^   s     r   testAppendChildzMinidomTest.testAppendChild   s    Gn''(9(9'(BCS((33B7@@JNOS((33B7<<GH

r   c                    | j                         \  }}}}}}|j                  j                  |       | j                  t	        |j                  j
                        ||||fk(  d       |j                          |j                          y )NzappendChild(<fragment>))r   r]   r}   r4   r   rh   rE   r   s          r   testAppendChildFragmentz#MinidomTest.testAppendChildFragment   sx    &*&F&F&H#T2r2t''-U3..99:BB'(.	0 	

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

r   c                    t               }|j                  d      }|j                  d      }| j                  t        j
                  j                  |j                  |       |j                  |       | j                  t        j
                  j                  |j                  ||       | j                  t        j
                  j                  |j                  ||       |j                  }| j                  t        j
                  j                  |j                  |       | j                  t        j
                  j                  |j                  |       |j                  |       |j                          y )Nrb   text)r   ri   r|   assertRaisesr   r   HierarchyRequestErrr}   rj   r   
attributessetNamedItemsetNamedItemNSrE   )r1   r   rs   r   nodemaps        r   testLegalChildrenzMinidomTest.testLegalChildren   s   j  +!!&)#''55sM#''55s7G7G	 #''55s7G7G	  //#''55w7K7K	 #''55w7M7M	  	

r   c                    t               }|j                  d      }|j                  }d|d<   |j                  d      }| j	                  |j
                  |u d       | j	                  |j                  |u d       | j	                  |j                  dk(  d       | j	                  |j                  dk(  d       |j                          |j                          y )	Nrb   rf   rz   r   z-NamedNodeMap.__setitem__() sets ownerDocumentz,NamedNodeMap.__setitem__() sets ownerElementz%NamedNodeMap.__setitem__() sets valuez)NamedNodeMap.__setitem__() sets nodeValue)
r   ri   r   r)   r4   r*   ownerElementvalue	nodeValuerE   )r1   r   rs   attrsas        r   testNamedNodeMapSetItemz#MinidomTest.testNamedNodeMapSetItem   s    j  +eJJqMQ__+?	AQ^^t+>	@QWW%7	9Q[[E);	=

r   c                     t        t              }| j                  |       |j                  |j	                  d             | j                  |j
                  d   j
                          |j                          y )Nrz   r   )r   rD   r4   r}   r   rh   rE   r^   s     r   testNonZerozMinidomTest.testNonZero   sU    GnS))%01+6667

r   c                     t        t              }| j                  |j                         |j	                          | j                  |j                         y r/   )r   rD   r0   rh   rE   r<   r^   s     r   
testUnlinkzMinidomTest.testUnlink   s6    Gn'

(r   c                     t        t              5 }| j                  |j                         d d d        | j	                  j                         y # 1 sw Y   %xY wr/   )r   rD   r0   rh   r<   r^   s     r   testContextzMinidomTest.testContext   sB    7^ 	,sOOCNN+	,(	, 	,s   AAc                     t               }|j                  |j                  d             | j                  |j                         |j                          y Nabc)r   r}   ri   r4   r]   rE   r^   s     r   testElementzMinidomTest.testElement   s;    j))%01S(()

r   c                 j   t        d      }|j                  }|j                  dd       | j                  |j	                         dk(  d       |j                  d      }| j                  |j                  |u d       | j                  |j                  |j                  u d       |j                          y )N<abc/>spamjam2<abc spam="jam2"/>testAAAz!setAttribute() sets ownerDocumentz setAttribute() sets ownerElement)	r   r]   setAttributer4   ro   getAttributeNoder*   r   rE   )r1   r   elr   s       r   r   zMinidomTest.testAAA  s    (#  
'RXXZ#77C'Q__+3	5Q^^s':'::2	4

r   c                     t        d      }|j                  }|j                  dd       |j                  dd       | j                  |j	                         dk(  d       |j                          y )Nr   r   jamr   r   testAAB)r   r]   r   r4   ro   rE   r1   r   r   s      r   r   zMinidomTest.testAAB  sV    (#  
&
'RXXZ#77C

r   c                 T   t               }|j                  |j                  d            }|j                  dd       | j	                  |j                  d      dk(         | j	                  |j                  d   j                  dk(         |j                  dd       | j	                  |j                  d      dk(         | j	                  |j                  d   j                  dk(         | j	                  t        |j                        dk(         |j                  dd       | j	                  |j                  d      dk(         | j	                  |j                  d   j                  dk(         | j	                  t        |j                        dk(         |j                          y )Nr   defghijklmnorc   newval)
r   r}   ri   r   r4   getAttributer   r   rk   rE   r1   r   childs      r   testAddAttrzMinidomTest.testAddAttr  sM   j 1 1% 895%(U''.%78U%%e,22e;<5%(U''.%78U%%e,22e;<S))*a/05(+U''.(:;U%%e,22h>?S))*a/0

r   c                    t               }|j                  |j                  d            }| j                  t	        |j
                        dk(         |j                  dd       | j                  t	        |j
                        dk(         |j
                  d= | j                  t	        |j
                        dk(         |j                          y )Nr   r   r   r   rd   )r   r}   ri   r4   rk   r   r   rE   r   s      r   testDeleteAttrzMinidomTest.testDeleteAttr,  s    j 1 1% 89S))*a/05%(S))*a/0U#S))*a/0

r   c                    t               }|j                  |j                  d            }|j                  dd       | j	                  t        |j                        dk(         | j                  t        j                  j                  |j                  d       |j                  d       | j	                  t        |j                        dk(         |j                          y )Nr   r   r   rd   rz   r   )r   r}   ri   r   r4   rk   r   r   r   r   NotFoundErrremoveAttributerE   r   s      r   testRemoveAttrzMinidomTest.testRemoveAttr7  s    j 1 1% 895%(S))*a/0#''--u/D/DeLe$S))*a/0

r   c                    t               }|j                  |j                  dd            }|j                  ddd       |j                  ddd       | j	                  t
        j                  j                  |j                  dd       | j                  t        |j                        dk(         |j                  dd       | j                  t        |j                        d	k(         |j                          y )
Nhttp://www.python.org
python:abchttp://www.w3.orgxmlns:pythonzpython:abcattrrz   rc   abcattrrd   )r   r}   createElementNSsetAttributeNSr   r   r   r   removeAttributeNSr4   rk   r   rE   r   s      r   testRemoveAttrNSzMinidomTest.testRemoveAttrNSB  s    j##$;\JL0.0G	I46FN#''--u/F/F*	,S))*a/0 7CS))*a/0

r   c                    t               }|j                  |j                  d            }|j                  dd       | j	                  t        |j                        dk(         |j                  d      }| j                  t        j                  j                  |j                  d        | j                  ||j                  |             | j	                  t        |j                        dk(  xr |j                  d      d u        t               }|j                  |j                  d            }|j                  d      }| j                  t        j                  j                  |j                  |       |j                          y )Nrz   r   r   rd   r   )r   r}   ri   r   r4   rk   r   r   r   r   r   r   removeAttributeNodeassertIsrE   )r1   r   r   r7   dom2child2node2s          r   testRemoveAttributeNodez#MinidomTest.testRemoveAttributeNodeP  s2   j 1 1% 8965)S))*a/0%%f-#''--u/H/H	dE55d;<S))*a/ ;**62d:	<z!!$"4"4U";<''/#''--v/I/I	

r   c                     t               }|j                  |j                  d            }|j                  dd       | j	                  |j                  d             y )Nrz   r   r   )r   r}   ri   r   r4   hasAttributer   s      r   testHasAttributezMinidomTest.testHasAttributeb  sI    j 1 1% 8965)U''/0r   c                    t        d      }|j                  }|j                  dd       | j                  t	        |j
                        dk(         |j                  dd       |j                  d       | j                  t	        |j
                        dk(  xrm |j
                  d   j                  dk(  xrO |j
                  d   j                  dk(  xr1 |j                  d      dk(  xr |j                  d      j                         d|j
                  d<   | j                  t	        |j
                        dk(  xrk |j
                  d   j                  dk(  xrM |j
                  d   j                  dk(  xr/ |j                  d      dk(  xr |j
                  d   j                         |j                  dd       | j                  t	        |j
                        dk(  xr |j
                  d   j                  dk(  xr |j
                  d   j                  dk(  xrf |j                  d      dk(  xrP |j
                  d   j                  dk(  xr2 |j
                  d   j                  dk(  xr |j                  d      dk(         d	|j
                  d<   | j                  t	        |j
                        dk(  xr |j
                  d   j                  dk(  xr |j
                  d   j                  dk(  xrf |j                  d      dk(  xrP |j
                  d   j                  d	k(  xr2 |j
                  d   j                  d	k(  xr |j                  d      d	k(         |j                          y )
Nr   r   r   rd   bamhamspam2rc   bam2)r   r]   r   r4   rk   r   setIdAttributer   r   r   r   isIdrE   r   s      r   testChangeAttrzMinidomTest.testChangeAttrh  s$   (#  
&S'1,-
& 	&!S'1, 5MM&)//585MM&)33u<5 OOF+u45 ''/44		6
 !&fS'1, /MM&)//58/MM&)33u</ OOF+u4/ MM&)..		0
 	'S'1, 6MM&)//586MM&)33u<6 OOF+u46 MM'*00E9	6
 MM'*44=6 OOG,5	7 "(gS'1, 7MM&)//587MM&)33u<7 OOF+u47 MM'*00F:	7
 MM'*44>7 OOG,6	8 	

r   c                      y r/    r1   s    r   testGetAttrListzMinidomTest.testGetAttrList      r   c                      y r/   r   r   s    r   testGetAttrValueszMinidomTest.testGetAttrValues  r   r   c                      y r/   r   r   s    r   testGetAttrLengthzMinidomTest.testGetAttrLength  r   r   c                     t               }|j                  |j                  dd            }| j                  |j	                  d      d       y )Nr   r   missing )r   r}   r   rS   r   r   s      r   testGetAttributezMinidomTest.testGetAttribute  sD    j 7FH++I6;r   c                    t               }|j                  |j                  dd            }|j                  ddd       | j	                  |j                  dd      d       | j	                  |j                  dd      d       |j                  |j                  d            }| j	                  |j                  dd	      d       y )
Nr   r   r   r   pythonotherr   r   r   )r   r}   r   r   rS   getAttributeNSri   )r1   r   r   r   s       r   testGetAttributeNSzMinidomTest.testGetAttributeNS  s    j##$;\JL0.0G	I--.A8L#	%--.A7K	""3#4#4U#;<../F	R	r   c                      y r/   r   r   s    r   testGetAttributeNodez MinidomTest.testGetAttributeNode  s    Dr   c                 d   d}t        |      }|j                  dd      }| j                  t        |      dk(  xrb |d   j                  dk(  xrN |d   j
                  dk(  xr: |d   j                  dk(  xr& |d   j                  dk(  xr |d   j                  dk(         |j                          y )NzZ<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
        <minidom:myelem/>
        </foo>zhttp://pyxml.sf.net/minidommyelemrd   r   r   zminidom:myelem)
r   getElementsByTagNameNSr4   rk   rO   rP   rQ   tagNamer   rE   )r1   dr   elemss       r   testGetElementsByTagNameNSz&MinidomTest.testGetElementsByTagNameNS  s     !n**+H+35SZ1_ :!H))-JJ:!H&&(2: !HOOy0: !H$$(88	:
 !H%%)99	; 	

r   c                 b    |j                  ||      }| j                  t        |      dk(         y r(   )r   r4   rk   )r1   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                    t        d      }| j                  |dd       | j                  |dd       | j                  |dd       t        d      }| j                  |dd       | j                  |dd       | j                  |d	d
       y )Nrx   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BBg	BB5s	< OPBB.	=BBk	#BB6	=r   c                     t               }|j                  |j                  d            }t        |      }t	        |      }| j                  ||k(         |j                          y r   r   r}   ri   reprstrr4   rE   r1   r   r   string1string2s        r   testElementReprAndStrz!MinidomTest.testElementReprAndStr  N    j__S..u56r(b'W'(

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

r   c                     t               }|j                  |j                  d            }|j                  dd      }| j	                  t        |      t        |      k(         |j                          y )Nr   r   )r   r}   ri   r   r4   r  r  rE   )r1   r   r   r7   s       r   testAttributeReprzMinidomTest.testAttributeRepr  sT    j__S..u56ue,SY$t*,-

r   c                      y r/   r   r   s    r   testTextNodeReprzMinidomTest.testTextNodeRepr      r   c                     d}t        |      }|j                         }|j                          | j                  ||k(         y )Nz <?xml version="1.0" ?><a b="c"/>)r   ro   rE   r4   r1   r  r   domstrs       r   testWriteXMLzMinidomTest.testWriteXML  s5    0#

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

Vs{{4889r   c                    d}| j                  t        d      j                         |dz          | j                  t        d      j                         |dz          | j                  t        d      j                         |dz          | j                  t        d      j                         |d	z          | j                  t        d
      j                         |dz          y )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>
)rS   r   r'  )r1   decls     r    test_toprettyxml_with_text_nodesz,MinidomTest.test_toprettyxml_with_text_nodes  s    )Z0<<>,	.%78DDF >>	@%78DDF >>	@%>?KKM EE	G%?@LLN JJ	Lr   c                 &   t               }|j                  d      }|j                  |j                  d             |j                  |j                  d             |j                  |       d}| j	                  |j                         |dz          y )Nrs   TEXTr+  z<elem>
	TEXT
	TEXT
</elem>
)r   ri   r}   r|   rS   r'  )r1   r   rs   r-  s       r   )test_toprettyxml_with_adjacent_text_nodesz5MinidomTest.test_toprettyxml_with_adjacent_text_nodes  s}    j  (++F34++F34)* CC	Er   c                 2   dD ]  }t        |      }t        |j                               }| j                  |j                  d      d   j                  d   j                         |j                  d      d   j                  d   j                                 y )N)r,  z<A><B>C</B></A>Br   )r   r'  rS   r\   rh   ro   )r1   r  r   r   s       r   /test_toprettyxml_preserves_content_of_text_nodez;MinidomTest.test_toprettyxml_preserves_content_of_text_node  s    2 	ICc"Cs01D((-a0;;A>DDF))#.q1<<Q?EEGI	Ir   c                 0   t        d      }|j                  j                  }| j                  |j                  dk(  xr |j
                  dk(  xr |j                  dk(  xr |j                  t        j                  k(  xr |j                  d u xr |j                          xrq t        |j                        dk(  xrW |j                  d u xrG |j                  d u xr7 |j                  d u xr' |j                   t"        j$                  j&                  k(         y )Nz<e><?mypi 	
 data 	
 ?></e>mypizdata 	
 r   )r   r]   rm   r4   targetr   r   nodeTyper   PROCESSING_INSTRUCTION_NODEr   hasChildNodesrk   rh   rn   rP   rO   r   r   EMPTY_NAMESPACE)r1   r   pis      r   testProcessingInstructionz%MinidomTest.testProcessingInstruction%  s   ;<  ++RYY&( 
?GG|+
?KK6)
? KK4#C#CC
? MMT)	
?
 ((**
? &!+
? MMT)
? LLD(
? LLD(
? OOsww'>'>>
	@r   c                      y r/   r   r   s    r   testProcessingInstructionReprz)MinidomTest.testProcessingInstructionRepr4  s    Tr   c                      y r/   r   r   s    r   testTextReprzMinidomTest.testTextRepr6  s    Dr   c                      y r/   r   r   s    r   testWriteTextzMinidomTest.testWriteText8  s    Tr   c                      y r/   r   r   s    r   testDocumentElementzMinidomTest.testDocumentElement:      4r   c                     t        d      }|j                  d      }| j                  t        j                  j
                  |j                  |       |j                          |j                          y )Nrx   extra)r   ri   r   r   r   r   r}   rE   r1   r   rs   s      r   testTooManyDocumentElementsz'MinidomTest.testTooManyDocumentElements<  sN    (#  )#''55sM

r   c                      y r/   r   r   s    r   testCreateElementNSzMinidomTest.testCreateElementNSD  rF  r   c                      y r/   r   r   s    r   testCreateAttributeNSz!MinidomTest.testCreateAttributeNSF  s    Tr   c                      y r/   r   r   s    r   	testParsezMinidomTest.testParseH  s    r   c                      y r/   r   r   s    r   testParseStringzMinidomTest.testParseStringJ  s    tr   c                      y r/   r   r   s    r   testCommentzMinidomTest.testCommentL  s    4r   c                      y r/   r   r   s    r   testAttrListItemzMinidomTest.testAttrListItemN  r  r   c                      y r/   r   r   s    r   testAttrListItemszMinidomTest.testAttrListItemsP  s    r   c                      y r/   r   r   s    r   testAttrListItemNSzMinidomTest.testAttrListItemNSR      $r   c                      y r/   r   r   s    r   testAttrListKeyszMinidomTest.testAttrListKeysT  r  r   c                      y r/   r   r   s    r   testAttrListKeysNSzMinidomTest.testAttrListKeysNSV  r[  r   c                 8   t        d      }|j                  }|j                  }|j                  d      }|j	                  d      }| j                  |j                  |             | j                  t        j                  j                  |j                  d       y )Nz<doc a=''/>r   )r   r]   r   r   removeNamedItemr4   
isSameNoder   r   r   r   r1   r   r  r   a1a2s         r   testRemoveNamedItemzMinidomTest.testRemoveNamedItemX  sw    -($""3'R]]2&'#''--u/D/DcJr   c                 >   t        d      }|j                  }|j                  }|j                  dd      }|j	                  dd      }| j                  |j                  |             | j                  t        j                  j                  |j                  dd       y )Nz.<doc xmlns:a='http://xml.python.org/' a:b=''/>zhttp://xml.python.org/b)r   r]   r   getAttributeNodeNSremoveNamedItemNSr4   rb  r   r   r   r   rc  s         r   testRemoveNamedItemNSz!MinidomTest.testRemoveNamedItemNSa  s    JK!!":C@$$%=sCR]]2&'#''--u/F/F2C	9r   c                      y r/   r   r   s    r   testAttrListValueszMinidomTest.testAttrListValuesk  r[  r   c                      y r/   r   r   s    r   testAttrListLengthzMinidomTest.testAttrListLengthm  r[  r   c                      y r/   r   r   s    r   testAttrList__getitem__z#MinidomTest.testAttrList__getitem__o      tr   c                      y r/   r   r   s    r   testAttrList__setitem__z#MinidomTest.testAttrList__setitem__q  rr  r   c                      y r/   r   r   s    r   testSetAttrValueandNodeValuez(MinidomTest.testSetAttrValueandNodeValues      Dr   c                      y r/   r   r   s    r   testParseElementzMinidomTest.testParseElementu  r  r   c                      y r/   r   r   s    r   testParseAttributeszMinidomTest.testParseAttributesw  rF  r   c                      y r/   r   r   s    r   testParseElementNamespacesz&MinidomTest.testParseElementNamespacesy  s    $r   c                      y r/   r   r   s    r   testParseAttributeNamespacesz(MinidomTest.testParseAttributeNamespaces{  rw  r   c                      y r/   r   r   s    r   testParseProcessingInstructionsz+MinidomTest.testParseProcessingInstructions}  s    tr   c                      y r/   r   r   s    r   testChildNodeszMinidomTest.testChildNodes      dr   c                      y r/   r   r   s    r   testFirstChildzMinidomTest.testFirstChild  r  r   c                     t        d      }|j                  }| j                  |j                                t        d      }|j                  }| j	                  |j                                y )Nra   rx   )r   r]   r0   r:  r<   )r1   r   r   r   doc2s        r   testHasChildNodeszMinidomTest.testHasChildNodes  sY    -.!!))+,8$##++-.r   c                    |j                   }|j                   }t        |j                               }t        |j                               }|j                          |j                          | j	                  ||k(  d       t        t        |            D ]  }|j                  |      }	|j                  |      }
| j	                  |	|
uxrj |	j                  |
j                  k(  xrO |	j                  |
j                  k(  xr4 |	j                  |
j                  k(  xr |	j                  |
j                  k(  d       | j	                  |
j                  |u d        y )Nz(clone of element has same attribute keysz3clone of attribute node has proper attribute valuesz'clone of attribute node correctly owned)r   listkeyssortr4   rangerk   r)   r   r   rO   rP   r   )r1   e1e2r2   attrs1attrs2keys1keys2ird  re  s              r   !_testCloneElementCopiesAttributesz-MinidomTest._testCloneElementCopiesAttributes  s   V[[]#V[[]#



Ue^%OPs5z" 
	?AQBQBLL2 5BHH,545 2??:5 4KM LLB.=?
	?r   c                     t        d      }|j                  }|j                  |      }| j                  ||d|xr dxs dz          dx|_        |_        |j                  dd       |j                  dd	       ||fS )
Nz<doc attr='value'><foo/></doc>testCloneElementDeepShallowMODIFIEDrV   z	NEW VALUEaddedVALUE)r   r]   	cloneNoder  r   r   r   )r1   deepr   rr   clones        r   _setupCloneElementzMinidomTest._setupCloneElement  s    :;""t$..%+t/K)L	N (21t}&+.'7+Ezr   c                    | j                  d      \  }}| j                  t        |j                        dk(  xr> |j                  j                  dk(  xr# |j
                  d u xr |j                         dk(  d       |j                          y )Nr   z<doc attr="value"/>testCloneElementShallowr  r4   rk   rh   rl   
parentNodero   rE   r1   r   r  s      r   r  z#MinidomTest.testCloneElementShallow  s    ,,Q/
US))*a/ ;$$++q0;$$,; KKM%::+		-
 	

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

r   c                 d    t        d      }|j                  d      }| j                  |d u d       y )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  r4   r1   r   r  s      r   testCloneDocumentShallowz$MinidomTest.testCloneDocumentShallow  s:     * + }}QTT\@	Ar   c                    t        d      }|j                  d      }| j                  |j                  |      xs |j                  |       d       | j                  t	        |j
                        t	        |j
                        k(  d       | j                  |j                  j                  t        j                  k(  d       | j                  |j                  j                  j                  |      d       | j                  |j                  j                  |j                         d       |j                  | j                  |j                  j                  t        j                  k(  d       | j                  |j                  j                  j                  |             | j                  |j                  j                  |j                                y y )	Nr  rd   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  r4   rb  rk   rh   r]   r8  r   ELEMENT_NODEr*   r   DOCUMENT_TYPE_NODEr  s      r   testCloneDocumentDeepz!MinidomTest.testCloneDocumentDeep  sm    * + }}Q#...F$//#2FGF	HS(C,@@J	LT))22d6G6GGL	NT))77BB4HN	P,,778L8LMMM	O;;"LL..$2I2IIMOLL33>>tDELLS[[33DLLAAB #r   c                 F   t               }|j                  d      }| j                  |d uxrD |j                  |j                  k(  xr( |j                  |j                  k(  xr |j
                  |j
                  k(  xr |j                  |j                  k(  xr t        |j                        t        |j                        k(  xr |j                  j                  t        |j                              d u xrw t        |j                        t        |j                        k(  xrJ |j                  j                  t        |j                              d u xr t        |j                        dk(         t        t        |j                              D ]+  }|j                  j                  |      }|j                  j                  |      }| j                  |j                  |       xr |j                  |       xr |j                  |j                  k(  xr |j                  |j                  k(  xr |j
                  |j
                  k(  xrj |j                  |j                  k(  xrO |j                  |j                  k(  xr4 |j                   |j                   k(  xr |j"                  |j"                  k(         . t        t        |j                              D ]  }|j                  j                  |      }|j                  j                  |      }| j                  |j                  |       xrc |j                  |       xrO |j                  |j                  k(  xr4 |j
                  |j
                  k(  xr |j                  |j                  k(          y )Nrd   r   )r&   r  r4   r   rT   publicIdsystemIdrk   r   r)   r   rh   r  rb  notationNamer"   r#   r!   )r1   r   r  r  secesncns           r   testCloneDocumentTypeDeepOkz'MinidomTest.testCloneDocumentTypeDeepOk  s   )+!!!$U$& 	/NNg&6&66	/JJ',,.	/ NNg&6&66	/ NNg&6&66		/
 '3w/?/?+@@	/ NN''ENN(;<D	/ (C0A0A,BB	/ OO((U__)=>$F	/ (()Q.		0 s7++,- 	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 

bjj02	2 s7,,-. 	4A""''*B%%a(BLLbmmB// 3]]2..3r{{23 r{{23 r{{2	4	4r   c                 v    t               }|j                  j                  d      }| j                  |d u d       y )Nrd   testCloneDocumentTypeDeepNotOkr+   r   r  r4   r1   r   r  s      r   r  z*MinidomTest.testCloneDocumentTypeDeepNotOk  s1    %'%%a(Ud]$DEr   c                 P   t               }|j                  d      }| j                  |d uxr |j                  |j                  k(  xr |j                  |j                  k(  xr |j
                  |j
                  k(  xr |j                  |j                  k(  xr t        |j                        dk(  xrp |j                  j                  d      d u xrQ t        |j                        dk(  xr7 |j                  j                  d      d u xr t        |j                        dk(         y r(   )r&   r  r4   r   rT   r  r  rk   r   r)   r   rh   )r1   r   r  s      r   testCloneDocumentTypeShallowOkz*MinidomTest.testCloneDocumentTypeShallowOk	  s   )+!!!$U$& 	/NNg&6&66	/JJ',,.	/ NNg&6&66	/ NNg&6&66		/
 '1,	/ NN''*d2	/ (A-	/ OO((+t3	/ (()Q.		0r   c                 v    t               }|j                  j                  d      }| j                  |d u d       y )Nr   !testCloneDocumentTypeShallowNotOkr  r  s      r   r  z-MinidomTest.testCloneDocumentTypeShallowNotOk  s1    %'%%a(Ud]$GHr   c                     t        d      }t        d      }| j                  t        j                  j                  |j
                  ||       y )Nrx   )r   r   r   r   NotSupportedErr
importNode)r1   r  testNamedoc1r  s        r   check_import_documentz!MinidomTest.check_import_document  s8    8$8$#''114??D$Or   c                 (    | j                  dd       y )Nr   testImportDocumentShallowr  r   s    r   r  z%MinidomTest.testImportDocumentShallow!      ""1&ABr   c                 (    | j                  dd       y )Nrd   testImportDocumentDeepr  r   s    r   r  z"MinidomTest.testImportDocumentDeep$      ""1&>?r   c                     t               }t               }| j                  t        j                  j
                  |j                  |j                  d       y r(   r+   r   r   r   r   r  r  r   r1   srcr7  s      r   testImportDocumentTypeShallowz)MinidomTest.testImportDocumentTypeShallow'  =    %'+-#''1163D3D++q	*r   c                     t               }t               }| j                  t        j                  j
                  |j                  |j                  d       y Nrd   r  r  s      r   testImportDocumentTypeDeepz&MinidomTest.testImportDocumentTypeDeep-  r  r   c                 
   t        d      }|j                  j                  d      }| j                  |d        |j	                  |      }| j                  |j                  |              | j                  |j                  |              | j                  |j                  d u |dz          | j                  |j                  j                  |j                        |dz          | j                  |j                  |dz          y )Nz<doc attr='value'/>rV   z: ownerElement should be Nonez: ownerDocument does not matchz.: cloned attribute must have specified == True)
r   r]   r   assertNotEqualr  r4   rb  r   r*   	specified)r1   r  r  r   rV   r  s         r   check_clone_attributez!MinidomTest.check_clone_attribute5  s    /0""33F;D$'t$))$//0//0U''4/::	<U((33D4F4FG;;	=U__KK	Mr   c                 (    | j                  dd       y )Nr   testCloneAttributeShallowr  r   s    r   r  z%MinidomTest.testCloneAttributeShallowC  r  r   c                 (    | j                  dd       y )Nrd   testCloneAttributeDeepr  r   s    r   r  z"MinidomTest.testCloneAttributeDeepF  r  r   c                 .   t        d      }|j                  }| j                  |j                  t        j
                         |j                  |      }| j                  |j                  |j                  k(  xr |j                  |j                  k(         y )Nz<?target data?><doc/>)
r   rm   rS   r8  r   r9  r  r4   r7  r   )r1   r  r  r   r<  r  s         r   check_clone_pizMinidomTest.check_clone_piI  sn    12^^d&F&FGT"U\\RYY. *JJ"'')	+r   c                 (    | j                  dd       y )Nr   testClonePIShallowr  r   s    r   r  zMinidomTest.testClonePIShallowQ  s    A34r   c                 (    | j                  dd       y )Nrd   testClonePIDeepr  r   s    r   r  zMinidomTest.testClonePIDeepT  s    A01r   c                    t         j                  j                  j                  dj	                               } G d d      } |       }|j
                  }|j                  d   }|j                  dd|       |r|j                  d      }| j                  |j                  j                  j                  d	       t         j                  j                  j                  }|j
                  j                  d   }	net        j                   |d
d       5  |j                  d      }d d d        t         j                  j                  j"                  }j                  d   }	| j                  |j$                  |       | j                  |j&                  d       | j                  |j(                  d       | j+                  |j,                  |       | j+                  |j.                  |	       y # 1 sw Y   xY w)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y)4MinidomTest.check_clone_node_entity.<locals>.Handlerc                 J    || _         || _        || _        || _        || _        y r/   )	operationkeyr   r  dstr1   r  r  r   r  r  s         r   handlez;MinidomTest.check_clone_node_entity.<locals>.Handler.handled  s%    !* 	r   N)__name__
__module____qualname__r  r   r   r   Handlerr  c  s    r   r  smiler  r   T)r  u%   Don't let entities make you frown ☺r*   )r   r   r   r   stripr   r   setUserDatar  rS   r]   rm   r6   UserDataHandlerNODE_IMPORTEDr   	swap_attrNODE_CLONEDr  r  r   r   r  r  )
r1   clone_documentdocumentr  handlerr   r%   r  r  r  s
             r   check_clone_node_entityz#MinidomTest.check_clone_node_entityW  s    77??.. 0 EG	 	 )""!!'*5&'2&&D&1EU22==GGDF//==I--((1C ""7OTB 5))t)45 //;;I..)C**I6e,v.gkk6*gkk3'5 5s   G++G4c                 H    | j                  d       | j                  d       y )NFT)r  r   s    r   testCloneNodeEntityzMinidomTest.testCloneNodeEntity  s    $$U+$$T*r   c                    t        d      }|j                  }|j                  |j                  d             |j                  |j                  d             | j	                  t        |j                        dk(  xr |j                  j                  dk(  d       |j                          | j	                  t        |j                        dk(  xrN |j                  j                  dk(  xr3 |j                  |j                  u xr |j                  j                  dk(  d       |j                          t        d      }|j                  }|j                  |j                  d	             |j                          | j	                  t        |j                        d
k(  xr |j                  j                  d
k(  d       |j                          y )Nrx   firstsecondrc   ztestNormalize -- preparationrd   firstsecondztestNormalize -- resultr   r   z*testNormalize -- single empty node removed)r   r]   r}   r|   r4   rk   rh   rl   	normalizerm   rn   r   rE   r1   r   rr   s      r   testNormalizezMinidomTest.testNormalize  sq   (#""++G45++H56S)Q. 0OO**a/.	0 	S)Q. :OO**a/:OOt~~5: OO((M9+		-
 	

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

r   c                    t        d      }|j                  }|j                  |j                  d             |j                  |j                  d             |j                  |j	                  d             | j                  t        |j                        dk(  xr |j                  j                  dk(  d       |j                          | j                  t        |j                        dk(  xr |j                  j                  dk(  xr |j                  j                  dk(  xr |j                  |j                  uxrz |j                  j                  |j                  u xrV |j                  j                  d u xr< |j                  j                  |j                  u xr |j                  j                  d u d	       |j                          y )
Nrx   r  r  r  re   z1testNormalizeCombineAndNextSibling -- preparationrc   r  z-testNormalizeCombinedAndNextSibling -- result)r   r]   r}   r|   ri   r4   rk   rh   rl   r  rm   r   rn   rq   rp   rE   r  s      r   "testNormalizeCombineAndNextSiblingz.MinidomTest.testNormalizeCombineAndNextSibling  s   (#""++G45++H56**3/0S)Q. 0OO**a/C	E 	S)Q. 7OO**a/7OO((M97 OO4>>97 OO//4>>A	7
 OO33t;7 NN22dooE7 NN..$6A	C 	

r   c                    t        d      }|j                  }|j                  |j                  d             |j                  |j                  d             | j	                  t        |j                        dk(  xr |j                  j                  dk(  d       |j                          | j	                  t        |j                        dk(  xr |j                  j                  dk(  xrg |j                  j                  dk(  xrL |j                  |j                  u xr2 |j                  j                  d u xr |j                  j                  d u d       |j                          y )Nrx   r  r   rc   z1testNormalizeDeleteWithPrevSibling -- preparationrd   z,testNormalizeDeleteWithPrevSibling -- resultr   r]   r}   r|   r4   rk   rh   rl   r  rm   r   rn   rq   rp   rE   r  s      r   "testNormalizeDeleteWithPrevSiblingz.MinidomTest.testNormalizeDeleteWithPrevSibling  s-   (#""++G45++B/0S)Q. 0OO**a/C	E 	S)Q. <OO**a/<OO((G3< OOt~~5< OO//47	<
 OO33t;@	B 	

r   c                    t        d      }|j                  }|j                  |j                  d             |j                  |j                  d             | j	                  t        |j                        dk(  xr |j                  j                  dk(  d       |j                          | j	                  t        |j                        dk(  xr |j                  j                  dk(  xrg |j                  j                  dk(  xrL |j                  |j                  u xr2 |j                  j                  d u xr |j                  j                  d u d       |j                          y )Nrx   r   r  rc   z1testNormalizeDeleteWithNextSibling -- preparationrd   z,testNormalizeDeleteWithNextSibling -- resultr  r  s      r   "testNormalizeDeleteWithNextSiblingz.MinidomTest.testNormalizeDeleteWithNextSibling  s-   (#""++B/0++H56S)Q. 0OO**a/C	E 	S)Q. <OO**a/<OO((H4< OOt~~5< OO//47	<
 OO33t;@	B 	

r   c                 j   t        d      }|j                  }|j                  |j                  d             |j                  |j	                  d             |j                  |j                  d             | j                  t        |j                        dk(  xr |j                  j                  dk(  d       |j                          | j                  t        |j                        dk(  xr |j                  j                  dk(  xr |j                  |j                  uxrz |j                  j                  |j                  u xrV |j                  j                  d u xr< |j                  j                  |j                  u xr |j                  j                  d u d       |j                          y )Nrx   r  r   re   z1testNormalizeDeleteWithTwoSiblings -- preparationrc   z,testNormalizeDeleteWithTwoSiblings -- result)r   r]   r}   ri   r|   r4   rk   rh   rl   r  rm   rn   rq   rp   rE   r  s      r   )testNormalizeDeleteWithTwoNonTextSiblingsz5MinidomTest.testNormalizeDeleteWithTwoNonTextSiblings  sg   (#""**3/0++B/0**3/0S)Q. 0OO**a/C	E 	S)Q. 7OO**a/7OO4>>97 OO//4>>A7 OO33t;	7
 NN22dooE7 NN..$6@	B 	

r   c                    t        d      }|j                  }|j                  |j                  d             |j                  |j                  d             |j                  |j                  d             |j                  |j                  d             |j                  |j                  d             | j	                  t        |j                        dk(  xr |j                  j                  dk(  d       |j                          | j	                  t        |j                        dk(  xr |j                  j                  dk(  xrg |j                  |j                  u xrM |j                  j                  dk(  xr2 |j                  j                  d u xr |j                  j                  d u d	       |j                          y )
Nrx   r   r  fourth   z,testNormalizeDeleteAndCombine -- preparationrd   secondfourthz'testNormalizeDeleteAndCombine -- result)r   r]   r}   r|   r4   rk   rh   rl   r  rm   rn   r   rp   rq   rE   r  s      r   testNormalizeDeleteAndCombinez)MinidomTest.testNormalizeDeleteAndCombine  sw   (#""++B/0++H56++B/0++H56++B/0S)Q. 0OO**a/>	@ 	S)Q. 8OO**a/8OOt~~58 OO((N:8 OO33t;	8
 OO//47;	= 	

r   c                 .   t        d      }|j                  }|j                  d   j                  |j	                  d             |j                  d   j                  |j	                  d             |j                  d   j                  d   j                  |j	                  d             |j                  d   j                  |j	                  d             |j                  |j	                  d             | j                  t        |j                        dk(  xr! |j                  j                  dk(  xr t        |j                  d   j                        d	k(  xr |j                  d   j                  j                  d	k(  xr t        |j                  d   j                        dk(  xr |j                  d   j                  j                  dk(  xrg t        |j                  d   j                  d   j                        d
k(  xr3 |j                  d   j                  d   j                  j                  d
k(  d       |j                          | j                  t        |j                        d
k(  xr! |j                  j                  d
k(  xr t        |j                  d   j                        d
k(  xr |j                  d   j                  j                  d
k(  xr t        |j                  d   j                        d
k(  xr |j                  d   j                  j                  d
k(  xrg t        |j                  d   j                  d   j                        dk(  xr3 |j                  d   j                  d   j                  j                  dk(  d       | j                  |j                  d   j                  d   j                  dk(  xra |j                  d   j                  d   j                  d   j                  dk(  xr) |j                  d   j                  d   j                  dk(  d       | j                  |j                  d   j                  d   j                  d u xr |j                  d   j                  d   j                  |j                  d   j                  d   u xrI |j                  d   j                  d   j                  d u xr |j                  d   j                  d   j                  |j                  d   j                  d   u xr |j                  d   j                  d   j                  d u xr |j                  d   j                  d   j                  |j                  d   j                  d   u xrl |j                  d   j                  d   j                  d u xrB |j                  d   j                  d   j                  |j                  d   j                  d   u d       |j                          y )Nz)<doc><o><i/>t</o><o><o>t2</o>t3</o></doc>r   r   xrd   x2x3re   rg   rc   ztestNormalize2 -- preparationz$testNormalize2 -- childNodes lengthstxt2x2t3x3z$testNormalize2 -- joined text fieldsz"testNormalize2 -- sibling pointers)r   r]   rh   r}   r|   r4   rk   rl   r  r   rq   rp   rE   r  s      r   testNormalizeRecursionz"MinidomTest.testNormalizeRecursion  sd    # $" ""&&s'9'9"'=>&&s'9'9#'>?%%a(44S5G5G5MN&&s'9'9$'?@++B/0S)Q. LOO**a/L*556!;L OOA&1188A=L *556!;	L
 OOA&1188A=L *55a8CCDIL OOA&11!4??FF!K1	3 	S)Q. LOO**a/L*556!;L OOA&1188A=L *556!;	L
 OOA&1188A=L *55a8CCDIL OOA&11!4??FF!K8	: 	T__Q'2215::dB DOOA&11!4??BGG6QDOOA&11!499VC8	: 	T__Q'2215AATI <OOA&11!4DD??1-88;<< OOA&11!4DDL< OOA&11!4@@??1-88;<	< OOA&11!4@@DH< OOA&11!4DD??1-88;<< OOA&11!4DDL< OOA&11!4@@??1-88;<6	8 	

r   c                     t        d      }|j                  j                  d   }| j                  |j                  t
        j                         |j                          |j                          y )Nz<o>text</o>r   )	r   r]   rh   rS   r8  r   	TEXT_NODEr  rE   )r1   r   r   s      r   testBug0777884zMinidomTest.testBug0777884D  sM    -(""--a07

r   c                     t        d      }|j                  }d|j                  d   _        |j	                          | j                  |j                  d   j                  d u d       y )Nz<o><i/>t</o>r   rd   r   z)Final child's .nextSibling should be None)r   r]   rh   r   r  r4   rq   r1   r   r7   s      r   testBug1433694zMinidomTest.testBug1433694L  sX    .)""')$T__R(44<@	Br   c                 N   t        d      }|j                  }|j                  \  }}}| j                  |j                  |u xrN |j
                  d u xr> |j                  |u xr. |j
                  |u xr |j                  d u xr |j
                  |u d       |j                          y )Nz<doc><?pi?>text?<elm/></doc>testSiblings)r   r]   rh   r4   rq   rp   rE   )r1   r   rr   r<  r   elms         r   r&  zMinidomTest.testSiblingsT  s    89""//T3R^^t+ ,""d*,  C', $$*, 4'	,
 ##t+^	= 	

r   c                 h   t        d      }|j                  }|j                  d   }|j                  \  }}|j                  d   }| j                  |j                  |u xr> |j                  |u xr. |j                  |u xr |j                  |u xr |j                  |u d       |j                          y )Nz3<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>r   testParents)r   r]   rh   r4   r  rE   )r1   r   rr   elm1elm2aelm2belm3s          r   r)  zMinidomTest.testParentsb  s    AC""q!"T__+ )4')  D()   D() 5(-		9
 	

r   c                    t        d      }|j                  }|d   }| j                  |d   |j                  d      u xr |j                  d      d u xr |j                  j                  d      |j                  d   u xrb |j                  j                  d      |j                  d   u xr6 |j                  j                  d      j                  j                  d      d u d       |j	                          y )Nz<doc><e/><e/></doc>r   rd   ztest NodeList.item())r   rh   r4   r)   rE   )r1   r   childrendocelems       r   testNodeListItemzMinidomTest.testNodeListItemq  s    /0>>1+Xa[HMM!$44 JMM!$,J&&++A.'2D2DQ2GGJ &&++A.'2D2DQ2GGJ &&++A.99>>qATI&	( 	

r   c                    t        d      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d	      d
j                  d	             | j	                  t
        t        f      5  t        d       d d d        |j                          y # 1 sw Y   xY w)N<foo>&#x20ac;</foo>$   <?xml version="1.0" ?><foo>€</foo>r   s4   <?xml version="1.0" encoding="utf-8"?><foo>€</foo>ziso-8859-15s8   <?xml version="1.0" encoding="iso-8859-15"?><foo></foo>r   s;   <?xml version="1.0" encoding="us-ascii"?><foo>&#8364;</foo>zutf-16u5   <?xml version="1.0" encoding="utf-16"?><foo>€</foo>s0   <franais>Comment a va ? Trs bien ?</franais>)r   rS   ro   encoder   UnicodeDecodeErrorr
   rE   r>   s     r   testEncodingszMinidomTest.testEncodings}  s    /0B	D7+L	N=1J	L:.J	L8,  &x 0	2  2J?@ 	O	
 	

	 	s   C??Dc                    t        d      }| j                  |j                         d       | j                  |j                  d       d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dd      d	       |j                          y )
Nr3  r4  )
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   rS   ro   rE   r>   s     r   testStandalonezMinidomTest.testStandalone  s    /0B	Dd3B	Dd3E	Ge4D	F7D1'	( 	

r   c                       e Zd ZdZd Zy)MinidomTest.UserDataHandlerr   c                 d    |j                  ||dz   |        |j                  |d d        d| _        y r  )r  calledr  s         r   r  z"MinidomTest.UserDataHandler.handle  s-    OOC40OOCt,DKr   N)r  r  r  r>  r  r   r   r   r  r<    s    	r   r  c                    t               }|j                  d      }| j                  |j                  d      d u        |j	                  dd d        | j                  |j                  d      d u        |j	                  ddd       |j	                  ddd       | j                  |j                  d      dk(         | j                  |j                  d      dk(         |j	                  dd d        | j                  |j                  d      d u        | j                  |j                  d      dk(         | j                         }|j	                  dd|       |j                  d      }| j                  |j                  xr) |j                  d      d u xr |j                  d      dk(         |j                          |j                          |j                          y )Nr  rz      rf      rd   )	r   ri   r4   getUserDatar  r  r  r>  rE   )r1   r   nr  cs        r   testUserDatazMinidomTest.testUserData  s{   jc"Q]]5)T12	eT4(Q]]5)T12	eR$	eR$Q]]5)R/0Q]]5)R/0	eT4(Q]]5)T12Q]]5)R/0&&(	eR)KKNW^^ /MM%(D0/MM%(B.	0 	

	


r   c                 &   | j                  t        j                  j                  |j                  |dd       t        d      }| j                  t        j                  j                  |j                  |t        j                  j                  d       y )Nhttp://xml.python.org/nsz	xmlns:foorx   rz   )r   r   r   NamespaceErr
renameNoder   WrongDocumentErrr;  )r1   r   r7   r  s       r    checkRenameNodeSharedConstraintsz,MinidomTest.checkRenameNodeSharedConstraints  se    #''..4k	C8$#''22DOOT''115	:r   c                    t        d      }|j                  }|j                  }|j                  d   }|j                  |t        j
                  j                  d      }| j                  |j                  dk(  xr |j                  dk(  xr |j                  d u xr |j                  t        j
                  j                  k(  xr |j                  d u xr |j                  dk(  xr |j                  d      d u xrp |j                  d      j                  |      xrN |d   j                  |      xr8 |j                   j                  |      xr |j"                  j                  |             |j                  |dd      }| j                  |j                  dk(  xr |j                  dk(  xr |j                  dk(  xr |j                  dk(  xr |j                  d u xr |j                  dk(  xr |j                  d      d u xr |j                  d      d u xro |j                  d      j                  |      xrM |j%                  dd      j                  |      xr* |d   j                  |      xr |d   j                  |             |j                  |dd	      }| j                  |j                  d	k(  xr |j                  d	k(  xr |j                  d
k(  xr |j                  dk(  xr |j                  dk(  xr |j                  dk(  xr |j                  d      d u xr |j                  d      d u xr |j                  d      d u xr |j%                  dd      d u xro |j                  d	      j                  |      xrM |j%                  dd
      j                  |      xr* |d	   j                  |      xr |d   j                  |             |j                  |t        j
                  j                  d      }| j                  |j                  dk(  xr |j                  dk(  xr |j                  d u xr |j                  t        j
                  j                  k(  xr |j                  d u xr |j                  dk(  xr |j                  d      d u xr |j                  d      d u xrv |j                  d      d u xra |j                  d	      d u xrL |j%                  dd      d u xr6 |j                  d      j                  |      xr |d   j                  |             | j'                  t        j
                  j(                  |j                  |dd       | j+                  ||       |j-                          y )Nz<doc a='v'/>r   rh  vrG  rD  )rG  rD  http://xml.python.org/ns2zp:dr   p)rN  r   r  xmlns)r   r]   r   rI  r   r   r;  r4   rT   r   rP   rO   rQ   r   r   rb  r*   r   ri  r   rH  rK  rE   )r1   r   rs   attrmaprV   s        r   testRenameAttributezMinidomTest.testRenameAttribute  s   .)""//s# ~~dCGG$;$;SATYY#% 
7MMS(
7NNd*
7 %%)@)@@
7 KK4'	
7
 JJ#%
7 ))#.$6
7 ))#.99$?
7 CL++D1
7 &&11#6
7 %%006
	8 ~~d$>DTYY#% PMMS(PNNc)P %%)CCP KK4'	P
 JJ#%P ))#.$6P ))#.$6P ))#.99$?P ++.55?Z5EP CL++D1P =>II$O	Q ~~d$?GTYY%' QMMU*QNNc)Q %%)DDQ KK3&	Q
 JJ#%Q ))#.$6Q ))#.$6Q ))#.$6Q ++.58<=Q ))%0;;DAQ ++/66@j6FQ EN--d3Q >?JJ4P	R$ ~~dCGG$;$;SATYY#% 2MMS(2NNd*2 %%)@)@@2 KK4'	2
 JJ#%2 ))#.$62 ))#.$62 ))#.$62 ))%0D82 ++.58<=2 ))#.99$?2 CL++D1	3 	#''..4g	?--c48

r   c                    t        d      }|j                  }|j                  |t        j                  j
                  d      }| j                  |j                  dk(  xru |j                  dk(  xrd |j                  d u xrT |j                  t        j                  j
                  k(  xr+ |j                  d u xr |j                  j                  |             |j                  |dd      }| j                  |j                  dk(  xr^ |j                  dk(  xrM |j                  dk(  xr< |j                  dk(  xr+ |j                  d u xr |j                  j                  |             |j                  |dd      }| j                  |j                  dk(  xr_ |j                  dk(  xrN |j                  dk(  xr= |j                  dk(  xr, |j                  dk(  xr |j                  j                  |             |j                  |t        j                  j
                  d	      }| j                  |j                  d	k(  xru |j                  d	k(  xrd |j                  d u xrT |j                  t        j                  j
                  k(  xr+ |j                  d u xr |j                  j                  |             | j                  ||       |j                          y )
Nrx   r   rG  rh  rN  zp:crD  rO  r   )r   r]   rI  r   r   r;  r4   r   r   rP   rO   rQ   r*   rb  rK  rE   rI  s      r   testRenameElementzMinidomTest.testRenameElement  s   (#"" ~~dCGG$;$;SAT\\S( 7MMS(7NNd*7 %%)@)@@7 KK4'	7
 &&11#6	8 ~~d$>DT\\S( 7MMS(7NNc)7 %%)CC7 KK4'	7
 &&11#6	8 ~~d$?GT\\U* 7MMU*7NNc)7 %%)DD7 KK3&	7
 &&11#6	8 ~~dCGG$;$;SAT\\S( 7MMS(7NNd*7 %%)@)@@7 KK4'	7
 &&11#6	8 	--c48

r   c                    t         j                  j                  j                         j	                  t         j                  j
                  dd       }|j                  d      }| j                  t         j                  j                  |j                  |t         j                  j
                  d       |j                          y )Nr  commentrz   )r   r   r   r	   r   r;  r   r   r  rI  rE   r#  s      r   testRenameOtherzMinidomTest.testRenameOtherC  s     ggoo224CCGG##S$0  +#''113>>4''115	:

r   c                    t        d      }|j                  }|j                  d   }| j                  |j                  t
        j                         | j                  |d       |j                  |j                  d             | j                  |d       |j                  |j                  d      |       | j                  |d       |j                  d      }|j                  |       |j                  d	      }|j                  |       | j                  |d       | j                  |d	       |j                  d
      }|j                  ||       |}| j                  |d       | j                  |d	       |j                  dd      }|j                  ||       |}| j                  |d       | j                  |d	       |j!                  |       | j                  |d       | j                  |d       y )Nz<doc>a</doc>r   r   rh  abrD  cabrV  r   r  yzcabd)r   r]   rh   rS   r8  r   r   r:   r}   r|   rj   createCDATASectionr   ri   r   createProcessingInstructionremoveChild)r1   r   rs   r   splittertext2r  s          r   testWholeTextzMinidomTest.testWholeTextM  s   .)""q!7D#&++C01D$'#005t<D%( $$Y/"""3'D%(E3'c"!X&D%(E3'++C5!X&D%(E3'"D&)E6*r   c                     t        d      }|j                  }|j                  }| j                  |j                  |u d       |j                  ||       | j                  |j                  |u d       y )Nz<doc><e/></doc>zBefore replaceChild()zAfter replaceChild())r   r]   rm   r4   r  r   )r1   r   rs   r  s       r   testPatch1094164zMinidomTest.testPatch1094164q  sa    +,""OOQ\\T)+BC!QQ\\T)+ABr   c                 h   d } |       \  }}}}}|j                  d      }| j                  |d       | j                  |d       | j                  t        |j                        dk(          |       \  }}}}}|j                  d      }| j                  |d       | j                  |d       | j                  t        |j                        dk(          |       \  }}}}}|j                  d      }| j                  |d       | j                  |d u xr t        |j                        dk(         y )	Nc                  
   t        d      } | j                  }|j                  }|j                  }|j                  }|j                  | j                  d      |       |j                  | j                  d      |       | ||||fS )Nz<doc>a<e/>d</doc>rh  rD  )r   r]   rm   rn   rq   rj   r|   r^  )r   rs   text1rb  ra  s        r   setupz/MinidomTest.testReplaceWholeText.<locals>.setup{  s|    12C&&DOOENNE((Hc005x@c44S95AeXu44r   znew contentr   re   rZ  r  r   rc   )replaceWholeTextr:   r4   rk   rh   )r1   ri  r   rs   rh  ra  rb  r   s           r   testReplaceWholeTextz MinidomTest.testReplaceWholeTextz  s   	5 -2G)T5(E%%m4D-0E3'S)Q./,1G)T5(E%%m4D-0E5)S)Q./,1G)T5(E%%b)E3'TT\ .(A-	/r   c                    t        d      }|j                  }|j                  }| j                  |j                  d u xr' |j
                  t        j                  j                  k(         dj                         }|D ]c  }|j                  |      }|j                  }| j                  t        |d      xr' |j
                  t        j                  j                  k(         e y )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 nmsrT   )r   r]   
schemaTyper4   rT   	namespacer   r   r;  splitr   hasattr)r1   r   rs   r9   namesrT   r   s          r   testSchemaTypezMinidomTest.testSchemaType  s    /0" ""
 OOQVVt^ ;KK377#:#::	<=CCE 	@D%%d+AALLF+ ?sww'>'>>@	@r   c                    t        d      }|j                  }|j                  d      }|j                  d      }| j                  |j	                  d      d u xr |j
                   xr |j
                          |j                  d       | j                  |j                  |j	                  d            xr |j
                  xr |j
                          |j                  d       | j                  |j                  |j	                  d            xr< |j                  |j	                  d            xr |j
                  xr |j
                         |j                  d      }d|_	        |j                  |       | j                  |j	                  d      d u xrL |j                  |j	                  d            xr* |j
                   xr |j
                  xr |j
                          |j                  |t        j                  j                  d       | j                  |j                  |j	                  d            xr |j
                         y )Nz<doc a1='v' a2='w'/>rd  re  rM  wan)r   r]   r   r4   getElementByIdr   r   rb  createAttributer   setAttributeNoderI  r   r   r;  )r1   r   r  rd  re  a3s         r   testSetIdAttributezMinidomTest.testSetIdAttribute  s   01%%S'',4  K K	! 	
Q\\#"4"4S"9:  GG K	! 	
Q\\#"4"4S"9: LL!3!3C!89GG GG	
   &	2S'',4  LL!3!3C!89 K  GG  K		! 	r37722D9Q\\#"4"4S"9: GG	r   c                 @   d}d}t        d|z   dz   |z   dz         }|j                  }|j                  |d      }|j                  |d      }| j                  |j	                  d      d u xr |j
                   xr |j
                          |j                  |d       | j                  |j                  |j	                  d            xr |j
                  xr |j
                          |j                  |d       | j                  |j                  |j	                  d            xr< |j                  |j	                  d	            xr |j
                  xr |j
                         |j                  |d      }d|_	        |j                  |       | j                  |j                  |j	                  d	                   | j                  |j
                          | j                  |j
                         | j                  |j
                          | j                  |j	                  d      d u        |j                  |t        j                  j                  d
       | j                  |j                  |j	                  d	            xr |j
                         y Nzhttp://xml.python.org/ns1rN  z<doc xmlns:ns1='z' xmlns:ns2='z' ns1:a1='v' ns2:a2='w'/>rd  re  rM  rt  ru  )r   r]   ri  r4   rv  r   setIdAttributeNSrb  createAttributeNSr   rx  rI  r   r   r;  r1   NS1NS2r   r  rd  re  ry  s           r   testSetIdAttributeNSz MinidomTest.testSetIdAttributeNS  sC   )) )+./2))+./255 6 !!#t,!!#t,S'',4  K K	! 	
3%Q\\#"4"4S"9:  GG K	! 	
3%Q\\#"4"4S"9: LL!3!3C!89GG GG	
 ""3-	2Q\\#"4"4S"9:;[!RWW[!S'',45r37722D9Q\\#"4"4S"9: GG	r   c                 <   d}d}t        d|z   dz   |z   dz         }|j                  }|j                  |d      }|j                  |d      }| j                  |j	                  d      d u xr |j
                   xr |j
                          |j                  |       | j                  |j                  |j	                  d            xr |j
                  xr |j
                          |j                  |       | j                  |j                  |j	                  d            xr< |j                  |j	                  d	            xr |j
                  xr |j
                         |j                  |d      }d|_	        |j                  |       | j                  |j                  |j	                  d	                   | j                  |j
                          | j                  |j
                         | j                  |j
                          | j                  |j	                  d      d u        |j                  |t        j                  j                  d
       | j                  |j                  |j	                  d	            xr |j
                         y r|  )r   r]   ri  r4   rv  r   setIdAttributeNoderb  r~  r   rx  rI  r   r   r;  r  s           r   testSetIdAttributeNodez"MinidomTest.testSetIdAttributeNode  s?   )) )+./2))+./255 6 !!#t,!!#t,S'',4  K K	! 	
R Q\\#"4"4S"9:  GG K	! 	
R Q\\#"4"4S"9: LL!3!3C!89GG GG	
 ""3-	2Q\\#"4"4S"9:;[!RWW[!S'',45r37722D9Q\\#"4"4S"9: GG	r   c                    ||fg}|r;|j                         \  }}| j                  |j                  |j                         | j                  t        |j                        t        |j                               | j                  |j
                  |j
                         | j                  |j                  |             | j                  |j                  |             |j                  t        j                  k(  rt        |j                         t        |j                         t        |j                         t        |j                         | j                  t        |j                        t        |j                               | j                  t        |j                        t        |j                               t        t        |j                              D ]  }|j                  j                  |      }|j                  j                  |      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                   |j                          |j#                  ||f        t        t        |j                              D ]  }|j                  j                  |      }	|j                  j                  |      }
| j                  |	j$                  |
j$                         | j                  |	j                  |
j                         | j                  |	j                   |
j                          |j#                  |	|
f        |j                  t        j&                  k7  rT| j)                  |j*                  j                  |             | j)                  |j*                  j                  |             t        t        |j                              D ]/  }|j#                  |j                  |   |j                  |   f       1 |r:y y r/   )poprS   r8  rk   rh   r   r<   rb  r   r  r   r   r  r)   rT   r  r  r   r  DOCUMENT_NODEr0   r*   )r1   r   r  stackn1n2r  no1no2r  r  s              r   assert_recursive_equalz"MinidomTest.assert_recursive_equal  s   tYY[FBR[["++6S/R]]1CDR[["++6R]]2./R]]2./{{d555BKK BKK BLL!BLL!  R[[!13r{{3CD  R\\!2C4EFs2<<01 -A,,++A.C,,++A.C$$SXXsxx8$$S\\3<<@$$S\\3<<@LL#s,- s2;;/0 +A))!,B))!,B$$R__booF$$R[["++>$$R[["++>LL"b*+ {{d000 0 0 ; ;C @A 0 0 ; ;D AB3r}}-. CbmmA.a0@ABCA r   c                     t        t              }t        dt        j                  dz         D ]?  }t        j
                  ||      }t        j                  |      }| j                  ||       A y )Nrc   rd   )r   sampler  pickleHIGHEST_PROTOCOLdumpsloadsr  )r1   r   protor8   r  s        r   testPickledDocumentzMinidomTest.testPickledDocumentD  sZ    &!1f559: 	3ES%(A<<?D''T2	3r   c                 p    t        t              }t        j                  |      }| j	                  ||       y r/   )r   r  copydeepcopyr  r  s      r   testDeepcopiedDocumentz"MinidomTest.testDeepcopiedDocumentK  s*    &!}}S!##C.r   c                     t               }|j                  |j                  d             | j                  t        |j
                         y )Nzfoo--bar)r   r}   r   r   
ValueErrorro   r>   s     r   (testSerializeCommentNodeWithDoubleHyphenz4MinidomTest.testSerializeCommentNodeWithDoubleHyphenP  s5    (*))*56*cii0r   c                     t        d      }t        |j                               }| j                  |j                  t        j
                  j                  k(         y )Nz$<element xmlns=''>
<foo/>
</element>)r   ro   r4   rO   r   r   r;  r  s      r   testEmptyXMLNSValuezMinidomTest.testEmptyXMLNSValueV  sB     / 0399;'T&&#''*A*AABr   c                 z    | j                  t        t        f      5  t        d       d d d        y # 1 sw Y   y xY w)NzE<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>)r   r  r
   r   r   s    r   !testExceptionOnSpacesInXMLNSValuez-MinidomTest.testExceptionOnSpacesInXMLNSValue\  s7    
J78 	(	 	 	s   1:c                    t        t              }|j                  j                  d      d   }| j	                  t
        j                  j                  |j                  |       t        |j                        }|j                  |j                  d          t        |j                        }| j                  ||dz
  k(         y )NTITLEr   rd   )r   rD   r]   r\   r   r   r   r   r`  rk   rh   r0   )r1   r   	title_tagnum_children_beforenum_children_afters        r   testDocRemoveChildzMinidomTest.testDocRemoveChildc  s    Gn''<<WEaH	377..K!#..1q)* 0*.AA.EEFr   c                 T    t        t              }|j                  dd      }d|_        y )Nr[  r\  crash)r   rD   r_  r   )r1   r   r<  s      r   "testProcessingInstructionNameErrorz.MinidomTest.testProcessingInstructionNameErrorl  s&     Gn,,S#6r   c                     d}t        |      }t        j                         }|j                  |       | j	                  |j                         |       y NE<?xml version="1.0" ?><curriculum status="public" company="example"/>)r   ioStringIOwritexmlrS   getvalue)r1   xml_strr   outputs       r   test_minidom_attribute_orderz(MinidomTest.test_minidom_attribute_orders  s?    Y'"V*G4r   c                 ^    d}t        |      }| j                  |j                         |       y r  )r   rS   ro   r1   r  r   s      r   "test_toxml_with_attributes_orderedz.MinidomTest.test_toxml_with_attributes_orderedz  s'    Y'"g.r   c                 ^    d}t        |      }| j                  |j                         d       y )Nr  zG<?xml version="1.0" ?>
<curriculum status="public" company="example"/>
r   rS   r'  r  s      r   (test_toprettyxml_with_attributes_orderedz4MinidomTest.test_toprettyxml_with_attributes_ordered  s/    Y'"*M	Nr   c                 ^    d}t        |      }| j                  |j                         d       y )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  s-    W'"*%	&r   c                    d}t        |      }| j                  |j                  d      d   j                  d       t        |j	                               }| j                  |j                  d      d   j                  d       y )Nr  r7   r   z</data>)r   r:   r\   rm   r'  )r1   r  dom1r   s       r   test_cdata_parsingzMinidomTest.test_cdata_parsing  sp    W7#D55f=a@KKYW4++-.D55f=a@KKYWr   N)Test)r  r  r  r4   r:   r?   rI   rL   rW   rY   r_   rv   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.  r1  r4  r=  r?  rA  rC  rE  rJ  rL  rN  rP  rR  rT  rV  rX  rZ  r]  r_  rf  rk  rm  ro  rq  rt  rv  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r!  r$  r&  r)  r1  r7  r:  r  rE  rK  rR  rT  rW  rc  re  rk  rr  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r-   r-   6   s   (B*
4464)V+"*"))

*		$1$L< ))
=" %$:L	EI@ 2 !' ()#$%&$&K9 '&++0$'.03""/?(

AC2 4DF
0I
P
C@**MC@+52-(^+2*$$(*<~B
.  0:KZ)V"+HC/:@B>"H"H#CJ3/
1CG5/
N&Xr   r-   __main__r/   )r  r  r  r2   r   unittestxml.dom.minidomr   r   r   r   r   r   r	   xml.parsers.expatr
   findfilerD   r  r   r&   r+   TestCaser-   r  mainr   r   r   <module>r     s      	    D D 0 ( '

:m
<7G ^X(## ^X@3 zHMMO r   