m
fIc           @   s  d  k  Z  d  k Z d  k Z d  k Z d k l Z d k l Z d  k Z d  k	 Z d  k
 Z d k	 l Z l Z l Z l Z d k	 l Z e d j o e i d Z n e Z e  i i e  i i e  d e  i d  Z [ d	 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!   Z0 d"   Z1 d#   Z2 d$   Z3 d%   Z4 d&   Z5 d'   Z6 d(   Z7 d)   Z8 d*   Z9 d+   Z: d,   Z; d-   Z< d.   Z= d/   Z> d0   Z? d1   Z@ d2   ZA d3   ZB d4   ZC d5   ZD d6   ZE d7   ZF d8   ZG d9   ZH d:   ZI d;   ZJ d<   ZK d=   ZL d>   ZM d?   ZN d@   ZO dA   ZP dB   ZQ dC   ZR dD   ZS dE   ZT dF   ZU dG   ZV dH   ZW dI   ZX dJ   ZY dK   ZZ dL   Z[ dM   Z\ dN   Z] dO   Z^ dP   Z_ dQ   Z` dR   Za dS   Zb dT   Zc dU   Zd dV   Ze dW   Zf dX   Zg dY   Zh dZ   Zi d[   Zj d  d\  Zl d]   Zm d^   Zn d_   Zo d`   Zp da   Zq db   Zr dc   Zs dd   Zt de   Zu df   Zv dg   Zw dh   Zx di   Zy dj   Zz dk   Z{ dl   Z| dm f  dn     YZ} do   Z~ dp   Z dq   Z dr   Z ds   Z dt   Z du   Z dv   Z dw   Z dx   Z dy   Z dz   Z d{   Z d|   Z e   i   Z e i   g  Z y e i Wn e j
 o d}   Z n Xd~   Z x e D] Z e i d  o e   e Z y e   e   Wqe i e  d Ge GHe i i   e i e i     e e i   d  GHh  e _ qXqCqCWe o# d GHx e D] Z d e GHqWn d  S(   N(   s   StringIO(   s   verbose(   s   parses   Nodes   Documents   parseString(   s   getDOMImplementationt   __main__i    t   testt   xmlt   Testc         C   s   |  p d | GHt  n d  S(   Ns   Failed (   R   t   testnamet	   Exception(   R   R   (    (    t.   /mit/python/lib/python2.4/test/test_minidom.pyt   confirm   s    	c          C   s?   t  t t t  i     }  |  i   t t |  t	   d  S(   N(
   t   parset   StringIOt   opent   tstfilet   readt   domt   unlinkR   t
   isinstancet   Document(   R   (    (    R   t   testParseFromFile   s    
c          C   s?   t  t  }  t |  i d  |  i i d  j  |  i   d  S(   Nt   LI(   R   R   R   R   t   getElementsByTagNamet   documentElementR   (   R   (    (    R   t   testGetElementsByTagName#   s    %c          C   s  t  d  } | i } | i d } | i d  } | i | |  t	 t
 | i  d j o | i i d j o | i d | j ov | i i d  | j o] | i d | j oI | i i d  | j o0 | i | j o  | i | j o | i   d j d  | i d  } | i | d   t	 t
 | i  d j o | i i d j o | i d | j ov | i i d  | j o] | i d | j oI | i i d  | j o0 | i | j o  | i | j o | i   d	 j d  | i d
  }  | i |  |  t	 t
 | i  d j o | i i d j o | i d |  j ov | i i d  |  j o] | i d | j oI | i i d  | j o0 |  i | j o  | i |  j o | i   d j d  | i   d  S(   Ns   <doc><foo/></doc>i    t   elementi   i   s   <doc><element/><foo/></doc>s0   testInsertBefore -- node properly placed in treei   s%   <doc><element/><foo/><element/></doc>t   bari   s+   <doc><element/><foo/><bar/><element/></doc>(   t   parseStringR   R   t   roott
   childNodest   elemt   createElementt   nelemt   insertBeforeR   t   lent   lengtht   itemt
   firstChildt	   lastChildt   toxmlt   Nonet   previousSiblingt   nelem2t   nextSiblingR   (   R'   R   R   R   R   (    (    R   t   testInsertBefore)   s     				c          C   s   t  d  } | i d  } | i d  } | i d  } | i d  } | i i |  | i	   }  |  i |  |  i |  |  i |  | | | | | |  f S(   Ns   <doc/>t   originalt   fooR   t   bat(   R   R   t   createTextNodet   origt   c1t   c2t   c3R   t   appendChildt   createDocumentFragmentt   frag(   R4   R   R1   R0   R/   R.   (    (    R   t   _create_fragment_test_nodesS   s    c          C   s   t    \ } } } } } }  | i i |  d   t
 t | i i  | | | | f j d  |  i   | i   t    \ } } } } } }  | i i |  |  t
 t | i i  | | | | f j d  |  i   | i   d  S(   Ns   insertBefore(<fragment>, None)s   insertBefore(<fragment>, orig)(   R5   R   R.   R/   R0   R1   R4   R   R   R%   R   t   tupleR   R   (   R4   R   R1   R0   R/   R.   (    (    R   t   testInsertBeforeFragment`   s    $

$
c          C   sm   t  t  }  |  i i |  i d   t |  i i d i d j  t |  i i d i	 d j  |  i
   d  S(   Nu   Hellois   #commentt   Hello(   R   R   R   R   R2   t   createCommentR   R   t   nodeNamet   dataR   (   R   (    (    R   t   testAppendChildo   s
    c          C   sn   t    \ } } } } } }  | i i |   t	 t
 | i i  | | | | f j d  |  i   | i   d  S(   Ns   appendChild(<fragment>)(   R5   R   R.   R/   R0   R1   R4   R   R2   R   R6   R   R   (   R4   R   R1   R0   R/   R.   (    (    R   t   testAppendChildFragmentv   s    $
c          C   sx   t    \ } } } } } }  | i i |  |  | i	   t
 t | i i  | | | f j d  |  i	   | i	   d  S(   Ns   replaceChild(<fragment>)(   R5   R   R.   R/   R0   R1   R4   R   t   replaceChildR   R   R6   R   (   R4   R   R1   R0   R/   R.   (    (    R   t   testReplaceChildFragment~   s    
!
c          C   sX  t    }  |  i d  } |  i d  } y |  i |  Wn t i i j
 o n Xd GH|  i |  y |  i	 | |  Wn t i i j
 o n Xd GHy |  i
 | |  Wn t i i j
 o n Xd GH| i } y | i |  Wn t i i j
 o n Xd GHy | i |  Wn t i i j
 o n Xd GH| i |  |  i   d  S(   NR   t   texts0   dom.appendChild didn't raise HierarchyRequestErrs:   NamedNodeMap.setNamedItem didn't raise HierarchyRequestErrs<   NamedNodeMap.setNamedItemNS didn't raise HierarchyRequestErr(   R   R   R   R   R-   R@   R2   R   t   HierarchyRequestErrR   R>   t
   attributest   nodemapt   setNamedItemt   setNamedItemNSR   (   R   R@   R   RC   (    (    R   t   testLegalChildren   s@    	      	    c          C   s   t    } | i d  } | i } d | d <| i d  }  t |  i	 | j d  t |  i
 | j d  t |  i d j d  t |  i d j d  | i   | i   d  S(	   NR   R   R+   i    s-   NamedNodeMap.__setitem__() sets ownerDocuments,   NamedNodeMap.__setitem__() sets ownerElements%   NamedNodeMap.__setitem__() sets values)   NamedNodeMap.__setitem__() sets nodeValue(   R   R   R   R   RB   t   attrsR!   t   aR   t   ownerDocumentt   ownerElementt   valuet	   nodeValueR   (   RH   R   R   RG   (    (    R   t   testNamedNodeMapSetItem   s    		

c          C   sO   t  t  }  t |   |  i |  i d   t |  i d i  |  i   d  S(   NR+   i(   R   R   R   R   R2   R9   R   R   (   R   (    (    R   t   testNonZero   s
    
c          C   s   t  t  }  |  i   d  S(   N(   R   R   R   R   (   R   (    (    R   t
   testUnlink   s    c          C   s:   t    }  |  i |  i d   t |  i  |  i   d  S(   Nt   abc(   R   R   R2   R   R   R   R   (   R   (    (    R   t   testElement   s    	c          C   s   t  d  } | i } | i d d  t | i   d j d  | i d  }  t |  i	 | j d  t |  i
 | i j d  | i   d  S(   Ns   <abc/>t   spamt   jam2s   <abc spam="jam2"/>t   testAAAs!   setAttribute() sets ownerDocuments    setAttribute() sets ownerElement(   R   R   R   t   elt   setAttributeR   R$   t   getAttributeNodeRH   RI   RJ   R   (   RH   RU   R   (    (    R   RT      s    	c          C   s\   t  d  } | i }  |  i d d  |  i d d  t |  i   d j d  | i   d  S(   Ns   <abc/>RR   t   jamRS   s   <abc spam="jam2"/>t   testAAB(   R   R   R   RU   RV   R   R$   R   (   RU   R   (    (    R   RY      s    	c          C   s*  t    } | i | i d   }  |  i d d  t |  i d  d j  t |  i d i	 d j  |  i d d  t |  i d  d j  t |  i d i	 d j  t t
 |  i  d j  |  i d d  t |  i d  d j  t |  i d i	 d j  t t
 |  i  d j  | i   d  S(   NRP   t   deft   ghit   jklt   mnoi   t   newval(   R   R   R2   R   t   childRV   R   t   getAttributeRB   RK   R   R   (   R_   R   (    (    R   t   testAddAttr   s    	c          C   s   t    } | i | i d   }  t t |  i  d j  |  i d d  t t |  i  d j  |  i d =t t |  i  d j  | i	   d  S(   NRP   i    RZ   R[   i   (
   R   R   R2   R   R_   R   R   RB   RV   R   (   R_   R   (    (    R   t   testDeleteAttr   s    	
c          C   s~   t    } | i | i d   }  |  i d d  t t |  i  d j  |  i	 d  t t |  i  d j  | i
   d  S(   NRP   RZ   R[   i   i    (   R   R   R2   R   R_   RV   R   R   RB   t   removeAttributeR   (   R_   R   (    (    R   t   testRemoveAttr   s    	c          C   s   t    } | i | i d d   }  |  i d d d  |  i d d d  t t |  i  d j  |  i	 d d  t t |  i  d	 j  | i
   d  S(
   Ns   http://www.python.orgs
   python:abcs   http://www.w3.orgs   xmlns:pythons   python:abcattrR+   i   t   abcattri   (   R   R   R2   t   createElementNSR_   t   setAttributeNSR   R   RB   t   removeAttributeNSR   (   R_   R   (    (    R   t   testRemoveAttrNS  s    	c          C   s   t    } | i | i d   } | i d d  t t | i  d j  | i	 d  }  | i |   t t | i  d j o | i	 d  d  j  | i   d  S(   NR+   RR   RX   i   i    (   R   R   R2   R   R_   RV   R   R   RB   RW   t   nodet   removeAttributeNodeR%   R   (   Rj   R   R_   (    (    R   t   testRemoveAttributeNode  s    	/c          C   s  t  d  } | i }  |  i d d  t t |  i  d j  |  i d d  |  i d  t t |  i  d j oT |  i d i	 d j o= |  i d i
 d j o& |  i d  d j o |  i d  i  d |  i d <t t |  i  d j oR |  i d i	 d j o; |  i d i
 d j o$ |  i d  d j o |  i d i  |  i d d  t t |  i  d j o |  i d i	 d j on |  i d i
 d j oW |  i d  d j oA |  i d i	 d j o* |  i d i
 d j o |  i d  d j  d	 |  i d <t t |  i  d j o |  i d i	 d j on |  i d i
 d j oW |  i d  d j oA |  i d i	 d	 j o* |  i d i
 d	 j o |  i d  d	 j  | i   d  S(
   Ns   <abc/>RR   RX   i   t   bamt   hamt   spam2i   t   bam2(   R   R   R   RU   RV   R   R   RB   t   setIdAttributeRK   RL   R`   RW   t   isIdR   (   RU   R   (    (    R   t   testChangeAttr$  s    	pnc           C   s   d  S(   N(    (    (    (    R   t   testGetAttrListJ  s    c           C   s   d  S(   N(    (    (    (    R   t   testGetAttrValuesM  s    c           C   s   d  S(   N(    (    (    (    R   t   testGetAttrLengthO  s    c           C   s   d  S(   N(    (    (    (    R   t   testGetAttributeQ  s    c           C   s   d  S(   N(    (    (    (    R   t   testGetAttributeNSS  s    c           C   s   d  S(   N(    (    (    (    R   t   testGetAttributeNodeU  s    c          C   s   d } t |  }  |  i d d  } t t |  d j oa | d i d j oM | d i d j o9 | d i	 d j o% | d i
 d j o | d i d j  |  i   d  S(   NsR   <foo xmlns:minidom='http://pyxml.sf.net/minidom'>
    <minidom:myelem/>
    </foo>s   http://pyxml.sf.net/minidomt   myelemi   i    t   minidoms   minidom:myelem(   t   dR   R   t   getElementsByTagNameNSt   elemsR   R   t   namespaceURIt	   localNamet   prefixt   tagNameR:   R   (   R   R~   R|   (    (    R   t   testGetElementsByTagNameNSW  s
    zc         C   s,   |  i | |  } t t |  d j  d  S(   Ni    (   t   docR}   t   nsurit   lnamet   nodelistR   R   (   R   R   R   R   (    (    R   t5   get_empty_nodelist_from_elements_by_tagName_ns_helpere  s    c          C   s|   t  d  }  t |  d d  t |  d d  t |  d d  t  d  }  t |  d d  t |  d d  t |  d	 d
  d  S(   Ns   <doc/>s"   http://xml.python.org/namespaces/at	   localnamet   *t   splats3   <doc xmlns="http://xml.python.org/splat"><e/></doc>s   http://xml.python.org/splats	   not-theres#   http://somewhere.else.net/not-theret   e(   R   R   R   (   R   (    (    R   t+   testGetEmptyNodeListFromElementsByTagNameNSi  s    c          C   sW   t    } | i | i d   }  t |   } t |   } t	 | | j  | i
   d  S(   NRP   (   R   R   R2   R   RU   t   reprt   string1t   strt   string2R   R   (   RU   R   R   R   (    (    R   t   testElementReprAndStrz  s    	c          C   sW   t    } | i | i d   }  t |   } t |   } t	 | | j  | i
   d  S(   Nu   abc(   R   R   R2   R   RU   R   R   R   R   R   R   (   RU   R   R   R   (    (    R   t   _testElementReprAndStrUnicode  s    	c          C   ss   t    } | i | i d d   }  t |   } t |   } t	 | | j  t	 | i
 d  d j  | i   d  S(   Nu   http://www.slashdot.orgu	   slash:abcs	   slash:abci(   R   R   R2   Rf   RU   R   R   R   R   R   t   findR   (   RU   R   R   R   (    (    R   t   _testElementReprAndStrUnicodeNS  s    	c          C   s]   t    } | i | i d   } | i d d  }  t t |   t	 |   j  | i
   d  S(   Nu   abcRP   RZ   (   R   R   R2   R   RU   RV   Rj   R   R   R   R   (   Rj   RU   R   (    (    R   t   testAttributeRepr  s
    	c           C   s   d  S(   N(    (    (    (    R   t   testTextNodeRepr  s    c          C   s<   d } t |  } | i   }  | i   t | |  j  d  S(   Ns    <?xml version="1.0" ?><a b="c"/>(   R   R   R   R$   t   domstrR   R   (   R   R   R   (    (    R   t   testWriteXML  s
    
c          C   sN   d } t |  } | i d d  }  | i   t |  | i d d  j  d  S(   Ns"   <?xml version="1.0" ?>
<a b="c"/>
t   newls   
s   
(   R   R   R   t   toprettyxmlR   R   R   t   replace(   R   R   R   (    (    R   t   testAltNewline  s
    
c          C   s   t  d  }  |  i i } t | i d j o | i d j o | i d j o | i	 t
 i j ow | i d  j og | i   oY t | i  d j oC | i d  j o3 | i d  j o# | i d  j o | i t i i j  d  S(   Ns   <e><?mypi 	
 data 	
 ?></e>t   mypis   data 	
 i    (   R   R   R   R"   t   piR   t   targetR;   R:   t   nodeTypet   Nodet   PROCESSING_INSTRUCTION_NODERB   R%   t   hasChildNodesR   R   R#   R   R   R   t   EMPTY_NAMESPACE(   R   R   (    (    R   t   testProcessingInstruction  s    c           C   s   d  S(   N(    (    (    (    R   t   testProcessingInstructionRepr  s    c           C   s   d  S(   N(    (    (    (    R   t   testTextRepr  s    c           C   s   d  S(   N(    (    (    (    R   t   testWriteText  s    c           C   s   d  S(   N(    (    (    (    R   t   testDocumentElement  s    c          C   se   t  d  }  |  i d  } y |  i |  Wn t i i j
 o n Xd GH| i   |  i   d  S(   Ns   <doc/>t   extrasF   Failed to catch expected exception when adding extra document element.(	   R   R   R   R   R2   R   R   RA   R   (   R   R   (    (    R   t   testTooManyDocumentElements  s    
c           C   s   d  S(   N(    (    (    (    R   t   testCreateElementNS  s    c           C   s   d  S(   N(    (    (    (    R   t   testCreateAttributeNS  s    c           C   s   d  S(   N(    (    (    (    R   t	   testParse  s    c           C   s   d  S(   N(    (    (    (    R   t   testParseString  s    c           C   s   d  S(   N(    (    (    (    R   t   testComment  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrListItem  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrListItems  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrListItemNS  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrListKeys  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrListKeysNS  s    c          C   s   t  d  } | i }  |  i } |  i d  } | i d  } t
 | i |   y | i d  Wn t i i j
 o n Xd  S(   Ns   <doc a=''/>RH   (   R   R   R   R   RB   RG   RW   t   a1t   removeNamedItemt   a2R   t
   isSameNodeR   R   t   NotFoundErr(   R   R   R   R   RG   (    (    R   t   testRemoveNamedItem  s    		c          C   s   t  d  } | i }  |  i } |  i d d  } | i d d  } t
 | i |   y | i d d  Wn t i i j
 o n Xd  S(   Ns.   <doc xmlns:a='http://xml.python.org/' a:b=''/>s   http://xml.python.org/t   b(   R   R   R   R   RB   RG   t   getAttributeNodeNSR   t   removeNamedItemNSR   R   R   R   R   R   (   R   R   R   R   RG   (    (    R   t   testRemoveNamedItemNS  s    		c           C   s   d  S(   N(    (    (    (    R   t   testAttrListValues  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrListLength  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrList__getitem__  s    c           C   s   d  S(   N(    (    (    (    R   t   testAttrList__setitem__  s    c           C   s   d  S(   N(    (    (    (    R   t   testSetAttrValueandNodeValue  s    c           C   s   d  S(   N(    (    (    (    R   t   testParseElement  s    c           C   s   d  S(   N(    (    (    (    R   t   testParseAttributes	  s    c           C   s   d  S(   N(    (    (    (    R   t   testParseElementNamespaces  s    c           C   s   d  S(   N(    (    (    (    R   t   testParseAttributeNamespaces  s    c           C   s   d  S(   N(    (    (    (    R   t   testParseProcessingInstructions  s    c           C   s   d  S(   N(    (    (    (    R   t   testChildNodes  s    c           C   s   d  S(   N(    (    (    (    R   t   testFirstChild  s    c           C   s   d  S(   N(    (    (    (    R   t   testHasChildNodes  s    c          C   sr   t  d  \ } }  t t |  i  d j o3 |  i i d j o  |  i d  j o |  i	   d j d  | i
   d  S(   Ni    s   <doc attr="value"/>t   testCloneElementShallow(   t   _setupCloneElementR   t   cloneR   R   R   R    t
   parentNodeR%   R$   R   (   R   R   (    (    R   R     s    Kc          C   sr   t  d  \ } }  t t |  i  d j o3 |  i i d j o  |  i d  j o |  i	   d j d  | i
   d  S(   Ni   s   <doc attr="value"><foo/></doc>t   testCloneElementDeep(   R   R   R   R   R   R   R    R   R%   R$   R   (   R   R   (    (    R   R      s    Kc         C   s   t  d  } | i } | i |   } t | | d |  o d p d  d | _ | _	 | i
 d d  | i
 d d	  | | f S(
   Ns   <doc attr='value'><foo/></doc>t   testCloneElementt   Deept   Shallowt   MODIFIEDt   attrs	   NEW VALUEt   addedt   VALUE(   R   R   R   R   t	   cloneNodet   deepR   t!   _testCloneElementCopiesAttributesR   R:   RV   (   R   R   R   R   (    (    R   R   )  s    	"c   
      C   s  |  i } | i } | i   } | i   } | i   | i   t	 | | j d  x t
 t |   D] } | i |  } | i |  }	 t	 | |	 j	 oI | i |	 i j o6 | i |	 i j o# | i |	 i j o | i |	 i j d  t	 |	 i | j d  qd Wd  S(   Ns(   clone of element has same attribute keyss3   clone of attribute node has proper attribute valuess'   clone of attribute node correctly owned(   t   e1RB   t   attrs1t   e2t   attrs2t   keyst   keys1t   keys2t   sortR   t   rangeR   t   iR!   R   R   RK   RL   R   R   RJ   (
   R   R   R   R   R   R   R   R   R   R   (    (    R   R   5  s    		

 Xc          C   s2   t  d  } | i d  }  t |  d  j d  d  S(   Ns   <?xml version='1.0'?>
<!-- comment --><!DOCTYPE doc [
<!NOTATION notation SYSTEM 'http://xml.python.org/'>
]>
<doc attr='value'/>i    sF   testCloneDocumentShallow: shallow cloning of documents makes no sense!(   R   R   R   t   doc2R   R%   (   R   R   (    (    R   t   testCloneDocumentShallowI  s    c          C   s#  t  d  } | i d  }  t | i |   p |  i |  d  t t | i  t |  i  j d  t |  i i	 t
 i j d  t |  i i i |   d  t | i i |  i  d  | i d  j	 oS t |  i i	 t
 i j d  t |  i i i |    t | i i |  i   n d  S(	   Ns   <?xml version='1.0'?>
<!-- comment --><!DOCTYPE doc [
<!NOTATION notation SYSTEM 'http://xml.python.org/'>
]>
<doc attr='value'/>i   s4   testCloneDocumentDeep: document objects not distincts8   testCloneDocumentDeep: wrong number of Document childrens:   testCloneDocumentDeep: documentElement not an ELEMENT_NODEs@   testCloneDocumentDeep: documentElement owner is not new documents;   testCloneDocumentDeep: documentElement should not be shareds7   testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE(   R   R   R   R   R   R   R   R   R   R   R   t   ELEMENT_NODERI   t   doctypeR%   t   DOCUMENT_TYPE_NODE(   R   R   (    (    R   t   testCloneDocumentDeepU  s"     c          C   s  t    } | i d  } t | d  j	 o | i | i j o | i | i j o | i | i j o | i	 | i	 j o t
 | i  t
 | i  j ov | i i t
 | i   d  j oT t
 | i  t
 | i  j o5 | i i t
 | i   d  j o t
 | i  d j  x t t
 | i   D] } | i i |  } | i i |  } t | i |  o | i |  o | i | i j oo | i | i j o\ | i | i j oI | i	 | i	 j o6 | i | i j o# | i | i j o | i | i j  q"Wx t t
 | i   D] } | i i |  } | i i |  }  t | i |   oG |  i |  o6 |  i | i j o# |  i | i j o |  i	 | i	 j  qWd  S(   Ni   i    (   t   create_nonempty_doctypeR   R   R   R   R%   R:   t   namet   publicIdt   systemIdR   t   entitiesR!   t	   notationsR   R   R   t   set   ceR   t   notationNamet   encodingt   actualEncodingt   versiont   snt   cn(   R   R   R   R   R   R   R   (    (    R   t   testCloneDocumentTypeDeepOkn  s    	
 	 c          C   s2   t    }  |  i i d  } t | d  j d  d  S(   Ni   t   testCloneDocumentTypeDeepNotOk(   t   create_doc_with_doctypeR   R   R   R   R   R%   (   R   R   (    (    R   R     s    	c          C   s   t    } | i d  }  t |  d  j	 o |  i | i j o |  i | i j o |  i | i j o |  i	 | i	 j oq t
 |  i  d j o[ |  i i d  d  j oB t
 |  i  d j o, |  i i d  d  j o t
 |  i  d j  d  S(   Ni    (   R   R   R   R   R   R%   R:   R   R   R   R   R   R!   R   R   (   R   R   (    (    R   t   testCloneDocumentTypeShallowOk  s    	c          C   s2   t    }  |  i i d  } t | d  j d  d  S(   Ni    t!   testCloneDocumentTypeShallowNotOk(   R   R   R   R   R   R   R%   (   R   R   (    (    R   R     s    	c         C   s\   t  d  } t  d  } y | i | |   Wn t i i j
 o n Xt | d   d  S(   Ns   <doc/>s4   : expected NotSupportedErr when importing a document(
   R   t   doc1R   t
   importNodeR   R   R   t   NotSupportedErrR   t   testName(   R   R  R   R   (    (    R   t   check_import_document  s    c           C   s   t  d d  d  S(   Ni    t   testImportDocumentShallow(   R  (    (    (    R   R    s    c           C   s   t  d d  d  S(   Ni   t   testImportDocumentDeep(   R  (    (    (    R   R    s    c         C   s   t    i d  d |   S(   NR   (   t   getDOMImplementationt   createDocumentR%   R   (   R   (    (    R   t   create_doc_without_doctype  s    c          C   s   t    i d d  d   } g  | i _ g  | i _ t i i	 i
 d d  d  }  | i i i |   t i i	 i d d  d d  } d | _ d | _ d | _ | i i i |  | S(	   NR   s   my-notations"   http://xml.python.org/notations/mys	   my-entitys!   http://xml.python.org/entities/mys   1.0s   utf-8s   us-ascii(   R  t   createDocumentTypeR%   R   R   t   _seqR   R   R   R{   t   Notationt   notationt   appendt   Entityt   entityR   R   R   (   R  R   R  (    (    R   R     s    					c          C   sC   t    } t |  }  |  | i i d  _ |  | i i d  _ |  S(   Ni    (   R   R   R	  R   R   R!   RI   R   (   R   R   (    (    R   R     s
    	c          C   sW   t    }  t   } y | i |  i d  } Wn t i i	 j
 o n Xt
 d   d  S(   Ni    s7   testImportDocumentTypeShallow: expected NotSupportedErr(   R   t   srcR	  R   R  R   t   importedR   R   R  R   (   R  R  R   (    (    R   t   testImportDocumentTypeShallow  s    		c          C   sW   t    }  t   } y | i |  i d  } Wn t i i	 j
 o n Xt
 d   d  S(   Ni   s4   testImportDocumentTypeDeep: expected NotSupportedErr(   R   R  R	  R   R  R   R  R   R   R  R   (   R  R  R   (    (    R   t   testImportDocumentTypeDeep  s    		c         C   s   t  d  } | i i d  } | d  j	 p t  | i |   } t
 | i |   t
 | i |   t
 | i d  j | d  t
 | i i | i  | d  t
 | i | d  d  S(   Ns   <doc attr='value'/>R   s   : ownerElement should be Nones   : ownerDocument does not matchs.   : cloned attribute must have specified == True(   R   R   R   RW   R   R%   t   AssertionErrorR   R   R   R   R   RJ   R  RI   t	   specified(   R   R  R   R   R   (    (    R   t   check_clone_attribute  s    	c           C   s   t  d d  d  S(   Ni    t   testCloneAttributeShallow(   R  (    (    (    R   R    s    c           C   s   t  d d  d  S(   Ni   t   testCloneAttributeDeep(   R  (    (    (    R   R     s    c         C   sk   t  d  } | i } | i t i j p t  | i |   } t | i | i j o | i | i j  d  S(   Ns   <?target data?><doc/>(   R   R   R"   R   R   R   R   R  R   R   R   R   R   R;   (   R   R  R   R   R   (    (    R   t   check_clone_pi  s
    	c           C   s   t  d d  d  S(   Ni    t   testClonePIShallow(   R  (    (    (    R   R    s    c           C   s   t  d d  d  S(   Ni   t   testClonePIDeep(   R  (    (    (    R   R    s    c          C   sK  t  d  }  |  i } | i |  i d   | i |  i d   t t | i  d j o | i i	 d j d  |  i
   t t | i  d j o6 | i i	 d j o# | i | i j o | i i d j d  |  i   t  d  }  |  i } | i |  i d	   |  i
   t t | i  d
 j o | i i	 d
 j d  |  i   d  S(   Ns   <doc/>t   firstt   secondi   s   testNormalize -- preparationi   t   firstseconds   testNormalize -- resultt    i    s*   testNormalize -- single empty node removed(   R   R   R   R   R2   R-   R   R   R   R    t	   normalizeR"   R#   R;   R   (   R   R   (    (    R   t   testNormalize  s"    	(
N
	
(c          C   s   t  d  } | i } | i \ } } }  t | i	 | j oM | i
 d  j o= | i	 |  j o- | i
 | j o |  i	 d  j o |  i
 | j d  | i   d  S(   Ns   <doc><?pi?>text?<elm/></doc>t   testSiblings(   R   R   R   R   R   R   R@   t   elmR   R(   R&   R%   R   (   R$  R   R@   R   R   (    (    R   R#  )  s    	_c          C   s   t  d  }  |  i } | i d } | i \ } } | i d } t	 | i
 |  j o= | i
 | j o- | i
 | j o | i
 | j o | i
 | j d  |  i   d  S(   Ns3   <doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>i    t   testParents(   R   R   R   R   R   t   elm1t   elm2at   elm2bt   elm3R   R   R   (   R   R&  R)  R   R(  R'  (    (    R   R%  7  s    	Oc          C   s   t  d  }  |  i } | d } t | d | i d  j ox | i d  d  j ob | i i d  | i d j oB | i i d  | i d j o" | i i d  i i d  d  j d  |  i   d  S(   Ns   <doc><e/><e/></doc>i    i   s   test NodeList.item()(	   R   R   R   t   childrent   docelemR   R!   R%   R   (   R   R+  R*  (    (    R   t   testNodeListItemF  s    	
c          C   s  d k  l }  |  i   } | i   | i d h   | i d  | i d h   | i d  | i d  | i d  | i d  | i   | i	 } | i } | i \ } } } | i d } t | i d  j om | i | j o] | i | j oM | i | j o= | i | j o- | i d  j o | i d  j o | i d  j d  t | i | j o= | i | j o- | i | j o | i | j o | i | j d  | i   d  S(   N(   s   pulldomR   R@   t   subelmi    s   testSAX2DOM - siblingss   testSAX2DOM - parents(   t   xml.domt   pulldomt   SAX2DOMt   sax2domt   startDocumentt   startElementt
   characterst
   endElementt   endDocumentt   documentR   R   R   R   t   text1R&  t   text2t   text3R   R&   R%   R(   R   R   (   R/  R:  R   R9  R1  R8  R&  R   (    (    R   t   testSAX2DOMR  s(    

		Oc          C   s   t  d  }  t |  i   d j o) |  i d  d j o |  i d  d j d  y t  d  }  Wn t j
 o n Xd	 GH|  i   d  S(
   Ns   <foo>&#x20ac;</foo>u$   <?xml version="1.0" ?><foo>€</foo>s   utf-8s4   <?xml version="1.0" encoding="utf-8"?><foo>€</foo>s   iso-8859-15s8   <?xml version="1.0" encoding="iso-8859-15"?><foo></foo>s"   testEncodings - encoding EURO SIGNs0   <franais>Comment a va ? Trs bien ?</franais>s;   parsing with bad encoding should raise a UnicodeDecodeError(   R   R   R   R$   t   UnicodeDecodeErrorR   (   R   (    (    R   t   testEncodingsv  s    >t   UserDataHandlerc           B   s   t  Z d Z d   Z RS(   Ni    c         C   s7   | i | | d |   | i | d  d   d |  _ d  S(   Ni   (   t   dstt   setUserDatat   keyR;   t   selfR  R%   t   called(   RB  t	   operationRA  R;   R  R?  (    (    R   t   handle  s    (   t   __name__t
   __module__RC  RE  (    (    (    R   R>    s   c          C   s  t    }  |  i d  } t | i d  d  j  | i d d  d   t | i d  d  j  | i d d d  | i d d d  t | i d  d j  t | i d  d j  | i d d  d   t | i d  d  j  t | i d  d j  t   } | i d d |  | i
 d  } t | i o) | i d  d  j o | i d  d j  | i   | i   |  i   d  S(   NR   R+   i   R   i   i   (   R   R   R   t   nR   t   getUserDataR%   R@  R>  t   handlerR   t   cRC  R   (   R   RK  RH  RJ  (    (    R   t   testUserData  s&    		9

c          C   s  t  d  } | i } | i } | i d }  | i |  t i	 i
 d  }  t |  i d j o |  i d j o |  i t j o |  i t i	 i
 j o |  i t j ov |  i d j of | i d  t j oP | i d  i |   o7 | d i |   o# |  i i |  o |  i i |   | i |  d d  }  t |  i d j o |  i d j o |  i d j o |  i d j o |  i t j o |  i d j o | i d  t j ov | i d  t j o` | i d  i |   oG | i d d  i |   o+ | d i |   o | d d f i |    | i |  d d  }  t |  i d j o|  i d j o |  i d	 j o |  i d j o |  i d
 j o |  i d j o | i d  t j o | i d  t j o | i d  t j oy | i d d  t j o` | i d  i |   oG | i d d	  i |   o+ | d i |   o | d d	 f i |    | i |  t i	 i
 d  }  t |  i d j o |  i d j o |  i t j o |  i t i	 i
 j o |  i t j o |  i d j o | i d  t j o | i d  t j oo | i d  t j oY | i d  t j oC | i d d  t j o* | i d  i |   o | d i |    y | i |  d d  Wn t i	 i j
 o n Xd GHt | |   | i   d  S(   Ns   <doc a='v'/>RH   R   t   vs   http://xml.python.org/nsRK  s   http://xml.python.org/ns2s   p:dR|   t   pR   t   xmlnss   expected NamespaceErr(   R   R   R   R   RB   t   attrmapR   t
   renameNodeR   R   R   R   R   R:   R   R%   R   R   RK   RW   R   RI   RJ   R   t   NamespaceErrt    checkRenameNodeSharedConstraintsR   (   R   R   R   RP  (    (    R   t   testRenameAttribute  s*    		 " c          C   s4  t  d  }  |  i } |  i | t i i d  } t | i	 d j oV | i
 d j oF | i d  j o6 | i t i i j o  | i d  j o | i i |    |  i | d d  } t | i	 d j oP | i
 d j o@ | i d j o0 | i d j o  | i d  j o | i i |    |  i | d d  } t | i	 d j oP | i
 d j o@ | i d j o0 | i d j o  | i d j o | i i |    |  i | t i i d	  } t | i	 d	 j oV | i
 d	 j oF | i d  j o6 | i t i i j o  | i d  j o | i i |    t |  |  |  i   d  S(
   Ns   <doc/>RH   s   http://xml.python.org/nsR   s   http://xml.python.org/ns2s   p:cRK  RN  R|   (   R   R   R   R   RQ  R   R   R   R   R   R:   R   R%   R   R   RI   R   RS  R   (   R   R   (    (    R   t   testRenameElement  s    	lfflc         C   s   y |  i | d d  Wn t i i j
 o n Xd GHt d  } y | i | t i i d  Wn t i i	 j
 o n Xd GHd  S(   Ns   http://xml.python.org/nss	   xmlns:foos   expected NamespaceErrs   <doc/>R+   s   expected WrongDocumentErr(
   R   RQ  Rj   R   R   RR  R   R   R   t   WrongDocumentErr(   R   Rj   R   (    (    R   RS  #  s    c          C   s   t  i i i   i t  i i d d   }  |  i d  } y |  i
 | t  i i d  Wn t  i i j
 o n Xd GH|  i   d  S(   NR   t   commentR+   s3   expected NotSupportedErr when renaming comment node(   R   R   R{   R  R  R   R%   R   R9   Rj   RQ  R  R   (   R   Rj   (    (    R   t   testRenameOther4  s    'c         C   s6   |  i } t | | j d t |  t |  f  d  S(   Ns   looking for %s, found %s(   Rj   t	   wholeTextt   tR   t   sR   (   Rj   R[  RZ  (    (    R   t   checkWholeTextB  s    	c          C   s  t  d  } | i } | i d } | i t i j p t	  t
 | d  | i | i d   t
 | d  | i | i d  |  t
 | d  | i d  }  | i |   | i d	  } | i |  t
 | d  t
 | d	  | i d
  } | i | |   | }  t
 | d  t
 | d	  | i d d  } | i | |   | }  t
 | d  t
 | d	  | i |   t
 | d  t
 | d  d  S(   Ns   <doc>a</doc>i    RH   R   t   abRK  t   cabRW  R|   t   xt   yt   zt   cabd(   R   R   R   R   R   R@   R   R   t	   TEXT_NODER  R\  R2   R-   R   t   createCDATASectionR9   t   splitterR9  R   R_  R>   t   createProcessingInstructiont   removeChild(   Re  R   R   R9  R@   R_  (    (    R   t   testWholeTextF  s8    	c          C   s^   t  d  }  |  i } | i } t | i | j d  | i | |  t | i | j d  d  S(   Ns   <doc><e/></doc>s   Before replaceChild()s   After replaceChild()(	   R   R   R   R   R"   R   R   R   R>   (   R   R   R   (    (    R   t   testPatch1094164j  s    		c          C   s  d   } |   \ } } } }  } | i d  } t | d  t | d  t	 t
 | i  d j  |   \ } } } }  } | i d  } t | d  t | d  t	 t
 | i  d j  |   \ } } } }  } | i d  } t | d  t	 | d  j o t
 | i  d j  d  S(	   Nc          C   su   t  d  } | i } | i } | i } | i }  | i
 | i d  |   | i
 | i d  |  | | | |  | f S(   Ns   <doc>a<e/>d</doc>R   RK  (   R   R   R   R   R"   R8  R#   R9  R(   Re  R   R-   Rd  (   Re  R   R   R9  R8  (    (    R   t   setupv  s    				s   new contentR|   i   R^  i   R   i   (   Rj  R   R   R8  Re  R9  t   replaceWholeTextR@   R\  R   R   R   R%   (   Re  R   Rj  R   R9  R8  R@   (    (    R   t   testReplaceWholeTextu  s    	
c          C   s   t  d  } | i } | i } t | i d  j o | i	 t
 i i j  d i   } xO | D]G } | i |  }  |  i } t t | d  o | i	 t
 i i j  qZ Wd  S(   Nsl  <!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' />s+   id notid text enum ref refs ent ents nm nmsR   (   R   R   R   R   t
   schemaTypeRZ  R   R   R%   t	   namespaceR   R   R   t   splitt   namesRW   RH   t   hasattr(   RH   R   R   R   RZ  Rp  (    (    R   t   testSchemaType  s    		) 	c          C   s  t  d  } | i }  |  i d  } |  i d  } t | i d  d  j o | i
 o | i
  |  i d  t |  i | i d   o | i
 o | i
  |  i d  t |  i | i d   o* |  i | i d   o | i
 o | i
  | i d  } d | _ |  i |  t | i d  d  j o6 |  i | i d   o | i
 o | i
 o | i
  | i | t i i d  t |  i | i d   o | i
  d  S(   Ns   <doc a1='v' a2='w'/>R   R   RM  t   wt   an(   R   R   R   R   RW   R   R   R   t   getElementByIdR%   Rr   Rq   R   t   createAttributet   a3RK   t   setAttributeNodeRQ  R   R   R   (   R   R   R   Rw  R   (    (    R   t   testSetIdAttribute  s    	/1I	Rc          C   s  d } d } t d | d | d  } | i }  |  i | d  } |  i | d  } t	 | i
 d  d  j o | i o | i  |  i | d  t	 |  i | i
 d   o | i o | i  |  i | d  t	 |  i | i
 d   o* |  i | i
 d	   o | i o | i  | i | d  } d | _ |  i |  t	 |  i | i
 d	    t	 | i  t	 | i  t	 | i  t	 | i
 d  d  j  | i | t i i d
  t	 |  i | i
 d	   o | i  d  S(   Ns   http://xml.python.org/ns1s   http://xml.python.org/ns2s   <doc xmlns:ns1='s   ' xmlns:ns2='s   ' ns1:a1='v' ns2:a2='w'/>R   R   RM  Rs  Rt  (   t   NS1t   NS2R   R   R   R   R   R   R   R   Ru  R%   Rr   t   setIdAttributeNSR   t   createAttributeNSRw  RK   Rx  RQ  R   R   R   (   R   R   R   Rw  R   Rz  R{  (    (    R   t   testSetIdAttributeNS  s*    	/1I	c          C   s  d } d } t d | d | d  } | i }  |  i | d  } |  i | d  } t	 | i
 d  d  j o | i o | i  |  i |  t	 |  i | i
 d   o | i o | i  |  i |  t	 |  i | i
 d   o* |  i | i
 d	   o | i o | i  | i | d  } d | _ |  i |  t	 |  i | i
 d	    t	 | i  t	 | i  t	 | i  t	 | i
 d  d  j  | i | t i i d
  t	 |  i | i
 d	   o | i  d  S(   Ns   http://xml.python.org/ns1s   http://xml.python.org/ns2s   <doc xmlns:ns1='s   ' xmlns:ns2='s   ' ns1:a1='v' ns2:a2='w'/>R   R   RM  Rs  Rt  (   Rz  R{  R   R   R   R   R   R   R   R   Ru  R%   Rr   t   setIdAttributeNodeR   R}  Rw  RK   Rx  RQ  R   R   R   (   R   R   R   Rw  R   Rz  R{  (    (    R   t   testSetIdAttributeNode  s*    	/1I	c          C   s  t  d  } t i |  } t i |  } | | f g } x| o| i   \ } } t | i | i j oQ t | i  t | i  j o2 | i | i j o | i |  o | i |   | i t i j ot | i  t | i  t | i  t | i  t t | i  t | i  j o t | i  t | i  j  x t t | i   D]y } | i i |  } | i i |  }	 t | i |	 i j o# | i |	 i j o | i |	 i j  t i | |	 f  q]Wx t t | i   D]y } | i i |  }  | i i |  }
 t |  i! |
 i! j o# |  i |
 i j o |  i |
 i j  | i |  |
 f  qWn | i t i" j o- t | i# i |  o | i# i |   n x> t t | i   D]' } | i | i | | i | f  qWq< Wd  S(   Ns  <?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>($   R   R   t   picklet   dumpsR[  t   loadsR   t   stackt   popt   n1t   n2R   R   R   R   R:   R   R   R   R   R   R   R   R!   t   no1t   no2R   R   R   t   statckR  R   R   R   t   DOCUMENT_NODERI   (   R   R   R   R  R   R[  R  R  R  R  R   (    (    R   t   testPickledDocument  s>     jA < <- c           C   s   d  S(   N(    (    (    (    R   t   check_allnodesT  s    c           C   sp   t  t t i  d j d  t t i  o7 d GHt o t i i   d d !GHqc t t i  GHn h  t _ d  S(   Ni    s"   assertion: len(Node.allnodes) == 0s   Garbage left over:i
   (   R   R   R   t   allnodest   verboset   items(    (    (    R   R  W  s    s   Test Failed: i   s*   


**** Check for failures in these tests:s     (   t   ost   sysR  t	   tracebackR	   t   test.test_supportR  R.  R   t   xml.dom.minidomt   xml.parsers.expatR   R   R   R   R  RF  t   argvt   baset   __file__t   patht   joint   dirnamet   extsepR   R   R   R   R)   R5   R7   R<   R=   R?   RF   RM   RN   RO   RQ   RT   RY   Ra   Rb   Rd   Ri   Rl   Rs   Rt   Ru   Rv   Rw   Rx   Ry   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R%   R	  R   R   R  R  R  R  R  R  R  R  R"  R#  R%  R,  R;  R=  R>  RL  RT  RU  RS  RX  R\  Rh  Ri  Rl  Rr  Ry  R~  R  R  t   globalsR   Rp  R   t   failedR  t   AttributeErrorR  R   t
   startswitht   funcR  t   stdoutt   flusht   print_exceptiont   exc_infoR   (   R%  RN   R   R  R=   R   R   Rd   Rl   RT   R  R  R	  R#  R   R   Rv   R   R   R  Ra   R   R  RS  R   RY   R   R   R   R   R  R   Rr  R"  R<   R  R   R   R>  R   Rb   Ri   R  R   R   R   R   R   RL  RM   R   R   R   R   R   R  R7   R   R  R   R	   R  R   R)   R   R   R  R   RO   R  Rt   R   Rx   Rl  Rh  R  Rp  R;  Ri  R   R   R  RU  R5   R   R   RQ   R   R   R   R   Ru   Ry  R  R   Ry   R  R  R   R   R   RF   R   R  R   R   R?   R   R   R   R   R\  R   R=  R~  R   RT  R  R   R   Rs   R  R   R   R   RX  R   Rw   R  R   R  R   R,  (    (    R   t   ?   s8  							,			*							#												&														
																																												"																					$			R	+				$			!		$	$	0
	 	 