mò
­fIc           @   s•   d  k  Z  d  k Z d  k Z d k l Z d e i f d „  ƒ  YZ d e f d „  ƒ  YZ d e i f d „  ƒ  YZ	 d „  Z
 e d	 j o e
 ƒ  n d  S(
   N(   s   test_supportt   EventCollectorc           B   sk   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z RS(   Nc         C   s,   g  |  _ |  i i |  _ t i i |  ƒ d  S(   N(   t   selft   eventst   appendt   sgmllibt
   SGMLParsert   __init__(   R   (    (    t.   /mit/python/lib/python2.4/test/test_sgmllib.pyR   	   s    	c         C   sŒ   g  } d  } xp |  i D]e } | d } | | j o
 d j n o$ d | d d | d f | d <n | i | ƒ | } q W| |  _ | S(   Ni    t   dataiÿÿÿÿi   (   t   Lt   Nonet   prevtypeR   R   t   eventt   typeR   (   R   R	   R   R   R   (    (    R   t
   get_events   s    
 
$
	c         C   s   |  i d | | f ƒ d  S(   Nt   starttag(   R   R   t   tagt   attrs(   R   R   R   (    (    R   t   unknown_starttag   s    c         C   s   |  i d | f ƒ d  S(   Nt   endtag(   R   R   R   (   R   R   (    (    R   t   unknown_endtag"   s    c         C   s   |  i d | f ƒ d  S(   Nt   comment(   R   R   R   (   R   R   (    (    R   t   handle_comment'   s    c         C   s   |  i d | f ƒ d  S(   Nt   charref(   R   R   R   (   R   R   (    (    R   t   handle_charref*   s    c         C   s   |  i d | f ƒ d  S(   NR   (   R   R   R   (   R   R   (    (    R   t   handle_data-   s    c         C   s   |  i d | f ƒ d  S(   Nt   decl(   R   R   R   (   R   R   (    (    R   t   handle_decl0   s    c         C   s   |  i d | f ƒ d  S(   Nt	   entityref(   R   R   R   (   R   R   (    (    R   t   handle_entityref3   s    c         C   s   |  i d | f ƒ d  S(   Nt   pi(   R   R   R   (   R   R   (    (    R   t	   handle_pi6   s    c         C   s   |  i d | f ƒ d  S(   Ns   unknown decl(   R   R   R   (   R   R   (    (    R   t   unknown_decl9   s    (   t   __name__t
   __module__R   R   R   R   R   R   R   R   R   R   R    (    (    (    R   R       s   										t   CDATAEventCollectorc           B   s   t  Z d „  Z RS(   Nc         C   s$   |  i d d | f ƒ |  i ƒ  d  S(   NR   t   cdata(   R   R   R   t
   setliteral(   R   R   (    (    R   t   start_cdata>   s    (   R!   R"   R&   (    (    (    R   R#   =   s   t   SGMLParserTestCasec           B   s
  t  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 RS(   Nc         C   sO   |  i ƒ  } y, x | D] } | i | ƒ q W| i ƒ  Wn
 ‚  n X| i ƒ  S(   N(   R   t	   collectort   parsert   sourcet   st   feedt   closeR   (   R   R*   R)   R+   (    (    R   R   G   s     c         C   si   y |  i | ƒ } Wn d  k } ‚  n X| | j o/ |  i d t i | ƒ d t i | ƒ ƒ n d  S(   Ns8   received events did not match expected events
Expected:
s   
Received:
(	   R   R   R*   R   t   syst   expected_eventst   failt   pprintt   pformat(   R   R*   R/   R.   R   (    (    R   t   check_eventsR   s    	c         C   sg   t  ƒ  } y | i | ƒ | i ƒ  Wn t i j
 o n( X|  i d | t	 i
 | i ƒ  ƒ f ƒ d  S(   Ns+   expected SGMLParseError for %r
Received:
%s(   R    R)   R,   R*   R-   R   t   SGMLParseErrorR   R0   R1   R2   R   (   R   R*   R)   (    (    R   t   check_parse_error^   s    	c         C   s*   d } |  i 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   (   t   insideR   R3   (   R   R6   (    (    R   t   test_doctype_decl_internali   s    c         C   s'   d } |  i d | d | f g ƒ d  S(   Ns/   DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN's   <!%s>R   (   R6   R   R3   (   R   R6   (    (    R   t   test_doctype_decl_external|   s    c         C   s&   |  i 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(   R:   R:   (   R;   R;   (   R   R3   (   R   (    (    R   t   test_underscore_in_attrname‚   s     c         C   s#   |  i d d d g  f d g ƒ d S(   s1   Make sure tag names with underscores are accepteds   <has_under></has_under>R   R:   R   N(   s   endtags	   has_under(   R   R3   (   R   (    (    R   t   test_underscore_in_tagnameŠ   s     c         C   s#   |  i 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   R9   t   hrefs   foo'bar"bazN(   R>   s   foo'bar"baz(   R   R3   (   R   (    (    R   t   test_quotes_in_unquoted_attrs’   s     c         C   s2   |  i 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(   s   datas   text(   s   endtagRB   (   R   R3   (   R   (    (    R   t   test_xhtml_empty_tag™   s     c         C   s   |  i d d g ƒ d  S(   Ns   <?processing instruction>R   s   processing instruction(   s   pis   processing instruction(   R   R3   (   R   (    (    R   t    test_processing_instruction_only¢   s    c         C   s2   |  i d d d g  f d d g  f d d g ƒ d  S(   Ns   <a><b></a></b>R   R9   t   bR   (   s   endtagR9   (   s   endtagRE   (   R   R3   (   R   (    (    R   t   test_bad_nesting§   s    c         C   s   |  i d d g ƒ d  S(   Ns#   this text & contains & ampersands &R   (   s   datas#   this text & contains & ampersands &(   R   R3   (   R   (    (    R   t   test_bare_ampersands¯   s    c         C   s   |  i d d g ƒ d  S(   Ns.   this < text > contains < bare>pointy< bracketsR   (   s   datas.   this < text > contains < bare>pointy< brackets(   R   R3   (   R   (    (    R   t   test_bare_pointy_brackets´   s    c         C   sb   d d d d d d g f g } |  i d | ƒ |  i d	 | ƒ |  i d
 | ƒ |  i d | ƒ d  S(   NR   R9   RE   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>(   RE   RI   (   RJ   RI   (   RK   RI   (   RL   RL   (   t   outputR   R3   (   R   RM   (    (    R   t   test_attr_syntax¹   s
    c         C   s¸   |  i d d d d d d g f g ƒ |  i d
 d d d d g f g ƒ d } d } d } d | | | f } |  i d | d d d | f g f g ƒ |  i d d d d g f g ƒ d  S(   Ns'   <a b='xxx
	xxx' c="yyy	
yyy" d='	xyz
'>R   R9   RE   s   xxx
	xxxRJ   s   yyy	
yyyRK   s   	xyz
s   <a b='' c="">t    s   $-_.+s   !*'(),s   ;/?:@&=s+   http://example.com:8080/path/to/file?%s%s%ss   <e a=%s>RL   s   <e a=rgb(1,2,3)>s
   rgb(1,2,3)(   RE   s   xxx
	xxx(   RJ   s   yyy	
yyy(   RK   s   	xyz
(   RE   RO   (   RJ   RO   (   R9   s
   rgb(1,2,3)(   R   R3   t   safet   extrat   reservedt   url(   R   RS   RP   RR   RQ   (    (    R   t   test_attr_valuesÂ   s    	")c         C   s)   |  i d d d d d	 d
 g f g ƒ d  S(   Ns   <a a.b='v' c:d=v e-f=v>R   R9   s   a.bRI   s   c:ds   e-f(   s   a.bRI   (   s   c:dRI   (   s   e-fRI   (   R   R3   (   R   (    (    R   t   test_attr_funky_namesÙ   s    c         C   s2   |  i 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   R9   R>   s   http://[1080::8:800:200C:417A]/(   s   hrefs   http://[1080::8:800:200C:417A]/(   s   hrefs   http://[1080::8:800:200C:417A]/(   R   R3   (   R   (    (    R   t   test_attr_value_ip6_urlÞ   s    	c         C   s#   d } |  i | 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(   s   dataRW   (   s   unknown decls   spacer type="block" height="25"(   s   dataRX   (   R+   R   R3   (   R   R+   (    (    R   t   test_illegal_declarationsæ   s    c         C   sK   |  i d d d g  f d d g  f g ƒ |  i d d d d g  f g ƒ d  S(   Ns   <a<a>R   R9   s   </a<a>R   (   s   endtagR9   (   R   R3   (   R   (    (    R   t   test_weird_starttagsî   s    (c         C   s   |  i d ƒ d  S(   Ns   <!DOCTYPE foo $ >(   R   R5   (   R   (    (    R   t   test_declaration_junk_charsø   s    c         C   s,   d } |  i | d d d d	 g f g ƒ d  S(
   Ns   <foobar   
   one="1"	two=2   >R   t   foobart   onet   1t   twot   2(   R]   R^   (   R_   R`   (   R+   R   R3   (   R   R+   (    (    R   t   test_get_starttag_textû   s    c         C   su   d } t |  _ |  i | d d g  f d d d d g  f d d d d g ƒ d } |  i | 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'> (   s   datas,    <!-- not a comment --> &not-an-entity-ref; (   s   endtags   cdata(   s   dataRc   (   s   comments	    comment (   s   dataRc   (   s   endtagRb   (   s   datas    <not a='start tag'> (   s   endtags   cdata(   R+   R#   R   R(   R3   (   R   R+   (    (    R   t   test_cdata_content  s
    	:
c         C   s#   d } |  i | d d d	 g ƒ d  S(
   Ns(   abc<!spacer type="block" height="25">defR   RW   s   unknown decls   spacer type="block" height="25"RX   (   s   datas   abc(   s   unknown decls   spacer type="block" height="25"(   s   datas   def(   R+   R   R3   (   R   R+   (    (    R   RY     s    c         C   s   d } |  i | d g ƒ d  S(   Ns-   <!DOCTYPE doc [<!ATTLIST doc attr (a | b) >]>R   s*   DOCTYPE doc [<!ATTLIST doc attr (a | b) >](   s   decls*   DOCTYPE doc [<!ATTLIST doc attr (a | b) >](   R+   R   R3   (   R   R+   (    (    R   t   test_enumerated_attr_type  s    c         C   sg   d } t t i d ƒ ƒ } t i ƒ  } x9 | i | ƒ } | i
 | ƒ t | ƒ | j o Pq* q* Wd  S(   Ni   s   sgml_input.htmli   (   t   CHUNKt   opent   test_supportt   findfilet   fR   R   t   fpt   readR   R,   t   len(   R   Rk   Rj   R   Rf   (    (    R   t   test_read_chunks$  s      c         C   sB   |  i d d d d g f g ƒ |  i d d d d	 g f g ƒ d  S(
   Ns	   <a b='<'>R   R9   RE   t   <s	   <a b='>'>t   >(   RE   Ro   (   RE   Rp   (   R   R3   (   R   (    (    R   t   _test_starttag_end_boundary6  s    c         C   s+  d d d* g f g } |  i d g | ƒ |  i d d g | ƒ |  i d d	 g | ƒ |  i d
 d g | ƒ |  i d d g | ƒ |  i d d g | ƒ d d d+ g f g } |  i d g | ƒ |  i d d g | ƒ |  i d d g | ƒ |  i d
 d g | ƒ |  i d d g | ƒ |  i d d g | ƒ d, g } |  i d d g | ƒ |  i d d g | ƒ |  i d d g | ƒ |  i d d g | ƒ |  i d d  g | ƒ |  i d! d" g | ƒ |  i d# d$ g | ƒ |  i d% d& g | ƒ |  i d' d( g | ƒ |  i d) d g | ƒ |  i d d g | ƒ d  S(-   NR   R9   RE   Ro   s	   <a b='<'>s   <a s   b='<'>s   <a bs   ='<'>s   <a b=s   '<'>s   <a b='<s   '>s   <a b='<'Rp   s	   <a b='>'>s   b='>'>s   ='>'>s   '>'>s   <a b='>s   <a b='>'R   RW   RO   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--(   RE   Ro   (   RE   Rp   (   s   comments   abc(   RM   R   R3   t
   _run_check(   R   RM   (    (    R   t   _test_buffer_artefacts:  s4    	c         C   sÇ   |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d	 ƒ |  i d
 ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ d  S(   NRo   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   R5   (   R   (    (    R   t   _test_starttag_junk_charsX  s    (   R!   R"   R    R(   R   R3   R5   R7   R8   R<   R=   R?   RC   RD   RF   RG   RH   RN   RT   RU   RV   RY   RZ   R[   Ra   Rd   Re   Rn   Rq   Rs   Rt   (    (    (    R   R'   C   s:   																					
								c           C   s   t  i t ƒ d  S(   N(   Rh   t   run_unittestR'   (    (    (    R   t	   test_mainj  s    t   __main__(   R1   R   t   unittestt   testRh   R   R    R#   t   TestCaseR'   Rv   R!   (   Rh   R   R'   R#   Rx   R1   R    Rv   (    (    R   t   ?   s   			6ÿ (	