ó
­«Y]c           @   sÊ   d  d l  Z  d  d l Z d  d l Z d  d l m Z e j d d e ƒZ d e j f d „  ƒ  YZ	 d e	 f d „  ƒ  YZ
 d	 e	 f d
 „  ƒ  YZ d e j f d „  ƒ  YZ d „  Z e d k rÆ e ƒ  n  d S(   iÿÿÿÿN(   t   test_supportt   sgmllibt
   deprecatedt   EventCollectorc           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s,   g  |  _  |  j  j |  _ t j j |  ƒ d  S(   N(   t   eventst   appendR   t
   SGMLParsert   __init__(   t   self(    (    s"   lib/python2.7/test/test_sgmllib.pyR   
   s    	c         C   s‰   g  } d  } xm |  j D]b } | d } | | k o= d k n re d | d d | d f | d <n | j | ƒ | } q W| |  _ | S(   Ni    t   dataiÿÿÿÿi   (   t   NoneR   R   (   R   t   Lt   prevtypet   eventt   type(    (    s"   lib/python2.7/test/test_sgmllib.pyt
   get_events   s    
#
	c         C   s   |  j  d | | f ƒ d  S(   Nt   starttag(   R   (   R   t   tagt   attrs(    (    s"   lib/python2.7/test/test_sgmllib.pyt   unknown_starttag    s    c         C   s   |  j  d | f ƒ d  S(   Nt   endtag(   R   (   R   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   unknown_endtag#   s    c         C   s   |  j  d | f ƒ d  S(   Nt   comment(   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   handle_comment(   s    c         C   s   |  j  d | f ƒ d  S(   Nt   charref(   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   handle_charref+   s    c         C   s   |  j  d | f ƒ d  S(   NR	   (   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   handle_data.   s    c         C   s   |  j  d | f ƒ d  S(   Nt   decl(   R   (   R   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   handle_decl1   s    c         C   s   |  j  d | f ƒ d  S(   Nt	   entityref(   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   handle_entityref4   s    c         C   s   |  j  d | f ƒ d  S(   Nt   pi(   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyt	   handle_pi7   s    c         C   s   |  j  d | f ƒ d  S(   Ns   unknown decl(   R   (   R   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   unknown_decl:   s    (   t   __name__t
   __module__R   R   R   R   R   R   R   R   R   R    R!   (    (    (    s"   lib/python2.7/test/test_sgmllib.pyR      s   										t   CDATAEventCollectorc           B   s   e  Z d  „  Z RS(   c         C   s$   |  j  d d | f ƒ |  j ƒ  d  S(   NR   t   cdata(   R   t
   setliteral(   R   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   start_cdata?   s    (   R"   R#   R'   (    (    (    s"   lib/python2.7/test/test_sgmllib.pyR$   >   s   t   HTMLEntityCollectorc           B   sD   e  Z e j d  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   s:   (?:&([a-zA-Z][-.a-zA-Z0-9]*)|&#(x[0-9a-zA-Z]+|[0-9]+))(;?)c         C   s:   |  j  d d | f ƒ | d d k r6 t j |  | ƒ Sd  S(   NR   t   converti    t   x(   R   R   t   convert_charref(   R   t   name(    (    s"   lib/python2.7/test/test_sgmllib.pyR+   I   s    c         C   s*   |  j  d d | f ƒ t j |  | ƒ d  S(   Nt	   codepointR)   (   R   R   t   convert_codepoint(   R   R-   (    (    s"   lib/python2.7/test/test_sgmllib.pyR.   N   s    c         C   s&   |  j  d d | f ƒ t j |  | ƒ S(   NR   R)   (   R   R   t   convert_entityref(   R   R,   (    (    s"   lib/python2.7/test/test_sgmllib.pyR/   R   s    c         C   s*   |  j  d | f ƒ t j j |  | ƒ d  S(   NR   (   R   R   R   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyR   Z   s    c         C   s*   |  j  d | f ƒ t j j |  | ƒ d  S(   NR   (   R   R   R   R   (   R   R	   (    (    s"   lib/python2.7/test/test_sgmllib.pyR   ^   s    (
   R"   R#   t   ret   compilet   entity_or_charrefR+   R.   R/   R   R   (    (    (    s"   lib/python2.7/test/test_sgmllib.pyR(   D   s   				t   SGMLParserTestCasec           B   s  e  Z e 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! RS(   c         C   sO   |  j  ƒ  } y, x | D] } | j | ƒ q W| j ƒ  Wn
 ‚  n X| j ƒ  S(   N(   t	   collectort   feedt   closeR   (   R   t   sourcet   parsert   s(    (    s"   lib/python2.7/test/test_sgmllib.pyR   g   s    c         C   s^   y |  j  | ƒ } Wn
 ‚  n X| | k rZ |  j d t j | ƒ d t j | ƒ ƒ n  d  S(   Ns8   received events did not match expected events
Expected:
s   
Received:
(   R   t   failt   pprintt   pformat(   R   R7   t   expected_eventsR   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   check_eventsr   s    c         C   se   t  ƒ  } y | j | ƒ | j ƒ  Wn t j k
 r: n' X|  j d | t j | j ƒ  ƒ f ƒ d  S(   Ns+   expected SGMLParseError for %r
Received:
%s(	   R   R5   R6   R   t   SGMLParseErrorR:   R;   R<   R   (   R   R7   R8   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   check_parse_error~   s    		c         C   s*   d } |  j  d | g d | f g ƒ d  S(   Nsò  DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'
             SYSTEM 'http://www.w3.org/TR/html401/strict.dtd' [
  <!ELEMENT html - O EMPTY>
  <!ATTLIST html
      version CDATA #IMPLIED
      profile CDATA 'DublinCore'>
  <!NOTATION datatype SYSTEM 'http://xml.python.org/notations/python-module'>
  <!ENTITY myEntity 'internal parsed entity'>
  <!ENTITY anEntity SYSTEM 'http://xml.python.org/entities/something.xml'>
  <!ENTITY % paramEntity 'name|name|name'>
  %paramEntity;
  <!-- comment -->
]s   <!%s>R   (   R>   (   R   t   inside(    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_doctype_decl_internal‰   s    c         C   s'   d } |  j  d | d | f g ƒ d  S(   Ns/   DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN's   <!%s>R   (   R>   (   R   RA   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_doctype_decl_externalœ   s    c         C   s&   |  j  d d d d d g f g ƒ d S(	   s7   Make sure attribute names with underscores are accepteds   <a has_under _under>R   t   at	   has_undert   _underN(   RE   RE   (   RF   RF   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_underscore_in_attrname¢   s    		c         C   s#   |  j  d d d g  f d g ƒ d S(   s1   Make sure tag names with underscores are accepteds   <has_under></has_under>R   RE   R   N(   R   RE   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_underscore_in_tagnameª   s    	c         C   s#   |  j  d d d d g f g ƒ d S(   s@   Be sure quotes in unquoted attributes are made part of the values   <a href=foo'bar"baz>R   RD   t   hrefs   foo'bar"bazN(   RI   s   foo'bar"baz(   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_quotes_in_unquoted_attrs²   s    	c         C   s2   |  j  d d d g  f d	 d d g  f d
 g ƒ d S(   s(   Handling of XHTML-style empty start tagss   <br />text<i></i>R   t   brR	   t   textt   iR   N(   R	   RL   (   R   RM   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_xhtml_empty_tag¹   s
    	c         C   s   |  j  d d g ƒ d  S(   Ns   <?processing instruction>R   s   processing instruction(   R   s   processing instruction(   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt    test_processing_instruction_onlyÂ   s    	c         C   s2   |  j  d d d g  f d d g  f d d g ƒ d  S(   Ns   <a><b></a></b>R   RD   t   bR   (   R   RD   (   R   RP   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_bad_nestingÇ   s
    	c         C   s   |  j  d d g ƒ d  S(   Ns#   this text & contains & ampersands &R	   (   R	   s#   this text & contains & ampersands &(   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_bare_ampersandsÏ   s    	c         C   s   |  j  d d g ƒ d  S(   Ns.   this < text > contains < bare>pointy< bracketsR	   (   R	   s.   this < text > contains < bare>pointy< brackets(   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_bare_pointy_bracketsÔ   s    	c         C   sb   d d d d d d g f g } |  j  d | ƒ |  j  d	 | ƒ |  j  d
 | ƒ |  j  d | ƒ d  S(   NR   RD   RP   t   vt   ct   dt   es   <a b='v' c="v" d=v e>s   <a  b = 'v' c = "v" d = v e>s   <a
b
=
'v'
c
=
"v"
d
=
v
e>s   <a	b	=	'v'	c	=	"v"	d	=	v	e>(   RP   RT   (   RU   RT   (   RV   RT   (   RW   RW   (   R>   (   R   t   output(    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_attr_syntaxÙ   s
    c         C   s¸   |  j  d d d d d d g f g ƒ |  j  d
 d d d d g f g ƒ d } d } d } d | | | f } |  j  d | d d d | f g f g ƒ |  j  d d d d g f g ƒ d  S(   Ns'   <a b='xxx
	xxx' c="yyy	
yyy" d='	xyz
'>R   RD   RP   s   xxx
	xxxRU   s   yyy	
yyyRV   s   	xyz
s   <a b='' c="">t    s   $-_.+s   !*'(),s   ;/?:@&=s+   http://example.com:8080/path/to/file?%s%s%ss   <e a=%s>RW   s   <e a=rgb(1,2,3)>s
   rgb(1,2,3)(   RP   s   xxx
	xxx(   RU   s   yyy	
yyy(   RV   s   	xyz
(   RP   RZ   (   RU   RZ   (   RD   s
   rgb(1,2,3)(   R>   (   R   t   safet   extrat   reservedt   url(    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_attr_valuesâ   s    				c         C   s>   |  j  d d d d d d d d d d d d  d! g
 f g ƒ d S("   s9   Substitution of entities and charrefs in attribute valuessÙ   <a b=&lt; c=&lt;&gt; d=&lt-&gt; e='&lt; '
                                f="&xxx;" g='&#32;&#33;' h='&#500;'
                                i='x?a=b&c=d;'
                                j='&amp;#42;' k='&#38;#42;'>R   RD   RP   t   <RU   s   <>RV   s   &lt->RW   s   < t   fs   &xxx;t   gs    !t   hs   &#500;RM   s
   x?a=b&c=d;t   js   &#42;t   kN(   RP   R`   (   RU   s   <>(   RV   s   &lt->(   RW   s   < (   Ra   s   &xxx;(   Rb   s    !(   Rc   s   &#500;(   RM   s
   x?a=b&c=d;(   Rd   s   &#42;(   Re   s   &#42;(   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_attr_values_entitiesù   s    	c         C   sG   t  |  _ |  j d d d d d d g f d d d d d d d g
 ƒ d  S(   Ns3   <a title="&ldquo;test&#x201d;">foo</a>&foobar;&#42;R   R)   t   ldquoR   t   x201dR   RD   t   titles   &ldquo;test&#x201d;R	   t   fooR   t   foobart   42R-   i*   (   R   R)   Rg   (   R   R)   Rh   (   Ri   s   &ldquo;test&#x201d;(   R	   Rj   (   R   RD   (   R   Rk   (   R   R)   Rk   (   R   Rl   (   R   R)   Rl   (   R-   R)   i*   (   R(   R4   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_convert_overrides  s    		c         C   s)   |  j  d d d d d	 d
 g f g ƒ d  S(   Ns   <a a.b='v' c:d=v e-f=v>R   RD   s   a.bRT   s   c:ds   e-f(   s   a.bRT   (   s   c:dRT   (   s   e-fRT   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_attr_funky_names   s    	c         C   s2   |  j  d d d d g f d d d g f g ƒ d  S(   NsR   <a href='http://[1080::8:800:200C:417A]/'><a href=http://[1080::8:800:200C:417A]/>R   RD   RI   s   http://[1080::8:800:200C:417A]/(   RI   s   http://[1080::8:800:200C:417A]/(   RI   s   http://[1080::8:800:200C:417A]/(   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_attr_value_ip6_url%  s    	c         C   sK   |  j  d d d g  f d d g  f g ƒ |  j  d d d d g  f g ƒ d  S(   Ns   <a<a>R   RD   s   </a<a>R   (   R   RD   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_weird_starttags-  s    		c         C   s   |  j  d ƒ d  S(   Ns   <!DOCTYPE foo $ >(   R@   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_declaration_junk_chars7  s    c         C   s,   d } |  j  | d d d d	 g f g ƒ d  S(
   Ns   <foobar   
   one="1"	two=2   >R   Rk   t   onet   1t   twot   2(   Rr   Rs   (   Rt   Ru   (   R>   (   R   R9   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_get_starttag_text:  s    	c         C   su   d } t  |  _ |  j | d d g  f d d d d g  f d d d d g ƒ d } |  j | d d g  f d d g ƒ d  S(   Nsb   <cdata> <!-- not a comment --> &not-an-entity-ref; </cdata><notcdata> <!-- comment --> </notcdata>R   R%   R	   s,    <!-- not a comment --> &not-an-entity-ref; R   t   notcdatat    R   s	    comment s$   <cdata> <not a='start tag'> </cdata>s    <not a='start tag'> (   R	   s,    <!-- not a comment --> &not-an-entity-ref; (   R   R%   (   R	   Rx   (   R   s	    comment (   R	   Rx   (   R   Rw   (   R	   s    <not a='start tag'> (   R   R%   (   R$   R4   R>   (   R   R9   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_cdata_content@  s     		
	c         C   s#   d } |  j  | d d d	 g ƒ d  S(
   Ns(   abc<!spacer type="block" height="25">defR	   t   abcs   unknown decls   spacer type="block" height="25"t   def(   R	   Rz   (   s   unknown decls   spacer type="block" height="25"(   R	   R{   (   R>   (   R   R9   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_illegal_declarationsU  s
    	c         C   s   d } |  j  | d g ƒ d  S(   Ns-   <!DOCTYPE doc [<!ATTLIST doc attr (a | b) >]>R   s*   DOCTYPE doc [<!ATTLIST doc attr (a | b) >](   R   s*   DOCTYPE doc [<!ATTLIST doc attr (a | b) >](   R>   (   R   R9   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_enumerated_attr_type]  s    	c         C   sd   d } t  t j d ƒ ƒ } t j ƒ  } x6 | j | ƒ } | j | ƒ t | ƒ | k r* Pq* q* Wd  S(   Ni   s   sgml_input.html(   t   openR    t   findfileR   R   t   readR5   t   len(   R   t   CHUNKRa   t   fpR	   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_read_chunksc  s    c         C   s/   d } |  j  | d d d
 d d g f g ƒ d  S(   Ns@   <signs exclamation="&#33" copyright="&#169" quoteleft="&#8216;">R   t   signst   exclamationt   !t	   copyrights   &#169t	   quotelefts   &#8216;(   R†   R‡   (   Rˆ   s   &#169(   R‰   s   &#8216;(   R>   (   R   R9   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   test_only_decode_asciip  s
    	c         C   sB   |  j  d d d d g f g ƒ |  j  d d d d	 g f g ƒ d  S(
   Ns	   <a b='<'>R   RD   RP   R`   s	   <a b='>'>t   >(   RP   R`   (   RP   R‹   (   R>   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   _test_starttag_end_boundary~  s    c         C   s+  d d d* g f g } |  j  d g | ƒ |  j  d d g | ƒ |  j  d d	 g | ƒ |  j  d
 d g | ƒ |  j  d d g | ƒ |  j  d d g | ƒ d d d+ g f g } |  j  d g | ƒ |  j  d d g | ƒ |  j  d d g | ƒ |  j  d
 d g | ƒ |  j  d d g | ƒ |  j  d d g | ƒ d, g } |  j  d d g | ƒ |  j  d d g | ƒ |  j  d d g | ƒ |  j  d d g | ƒ |  j  d d  g | ƒ |  j  d! d" g | ƒ |  j  d# d$ g | ƒ |  j  d% d& g | ƒ |  j  d' d( g | ƒ |  j  d) d g | ƒ |  j  d d g | ƒ d  S(-   NR   RD   RP   R`   s	   <a b='<'>s   <a s   b='<'>s   <a bs   ='<'>s   <a b=s   '<'>s   <a b='<s   '>s   <a b='<'R‹   s	   <a b='>'>s   b='>'>s   ='>'>s   '>'>s   <a b='>s   <a b='>'R   Rz   RZ   s
   <!--abc-->s	   !--abc-->s   <!s   --abc-->s   <!-s   -abc-->s   <!--s   abc-->s   <!--as   bc-->s   <!--abs   c-->s   <!--abcs   -->s   <!--abc-s   ->s	   <!--abc--(   RP   R`   (   RP   R‹   (   R   Rz   (   R>   (   R   RX   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   _test_buffer_artefacts‚  s4    	c         C   sÇ   |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d	 ƒ |  j  d
 ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ d  S(   NR`   s   <>s   </$>s   </s   </as   <$s   <$>s   <!s   <a $>s   <as   <a foo='bar's   <a foo='bars
   <a foo='>'s	   <a foo='>s   <a foo=>(   R@   (   R   (    (    s"   lib/python2.7/test/test_sgmllib.pyt   _test_starttag_junk_chars   s    ("   R"   R#   R   R4   R   R>   R@   RB   RC   RG   RH   RJ   RN   RO   RQ   RR   RS   RY   R_   Rf   Rm   Rn   Ro   Rp   Rq   Rv   Ry   R|   R}   R„   RŠ   RŒ   R   RŽ   (    (    (    s"   lib/python2.7/test/test_sgmllib.pyR3   c   s>   																						
									c           C   s   t  j t ƒ d  S(   N(   R    t   run_unittestR3   (    (    (    s"   lib/python2.7/test/test_sgmllib.pyt	   test_main²  s    t   __main__(   R;   R0   t   unittestt   testR    t   import_modulet   TrueR   R   R   R$   R(   t   TestCaseR3   R   R"   (    (    (    s"   lib/python2.7/test/test_sgmllib.pyt   <module>   s   6ÿ P	