;
Ìâ"Ic               @   s´   d  Z  d d l Z d d l Z d d l Z d d l m Z Gd „  d e j j ƒ Z	 Gd „  d e	 ƒ Z
 Gd „  d	 e j ƒ Z Gd
 „  d e ƒ Z d „  Z e d k o e ƒ  n d S(   u   Tests for HTMLParser.py.i    N(   u   supportc             B   sz   |  Ee  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 S(   c             C   s/   g  |  _  |  j  j |  _ t j j j |  ƒ d  S(   N(   u   eventsu   appendu   htmlu   parseru
   HTMLParseru   __init__(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   __init__   s    	c             C   sŒ   g  } d  } xp |  j D]e } | d } | | k o
 d k n o$ d | d d | d f | d <n | j | ƒ | } q W| |  _ | S(   Ni    u   dataiÿÿÿÿi   (   u   Noneu   eventsu   append(   u   selfu   Lu   prevtypeu   eventu   type(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu
   get_events   s    
 
$
	c             C   s   |  j  d | | f ƒ d  S(   Nu   starttag(   u   append(   u   selfu   tagu   attrs(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_starttag!   s    c             C   s   |  j  d | | f ƒ d  S(   Nu   startendtag(   u   append(   u   selfu   tagu   attrs(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_startendtag$   s    c             C   s   |  j  d | f ƒ d  S(   Nu   endtag(   u   append(   u   selfu   tag(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_endtag'   s    c             C   s   |  j  d | f ƒ d  S(   Nu   comment(   u   append(   u   selfu   data(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_comment,   s    c             C   s   |  j  d | f ƒ d  S(   Nu   charref(   u   append(   u   selfu   data(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_charref/   s    c             C   s   |  j  d | f ƒ d  S(   Nu   data(   u   append(   u   selfu   data(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_data2   s    c             C   s   |  j  d | f ƒ d  S(   Nu   decl(   u   append(   u   selfu   data(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_decl5   s    c             C   s   |  j  d | f ƒ d  S(   Nu	   entityref(   u   append(   u   selfu   data(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_entityref8   s    c             C   s   |  j  d | f ƒ d  S(   Nu   pi(   u   append(   u   selfu   data(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu	   handle_pi;   s    c             C   s   |  j  d | f ƒ d  S(   Nu   unknown decl(   u   append(   u   selfu   decl(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   unknown_decl>   s    N(   u   __name__u
   __module__u   __init__u
   get_eventsu   handle_starttagu   handle_startendtagu   handle_endtagu   handle_commentu   handle_charrefu   handle_datau   handle_declu   handle_entityrefu	   handle_piu   unknown_decl(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   EventCollector	   s   
											u   EventCollectorc             B   s   |  Ee  Z d  „  Z d S(   c             C   s0   t  j |  | | ƒ |  j d |  j ƒ  f ƒ d  S(   Nu   starttag_text(   u   EventCollectoru   handle_starttagu   appendu   get_starttag_text(   u   selfu   tagu   attrs(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   handle_starttagD   s    N(   u   __name__u
   __module__u   handle_starttag(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   EventCollectorExtraB   s   
u   EventCollectorExtrac             B   s,   |  Ee  Z e d  „ Z d „  Z d „  Z d S(   c             C   s}   | ƒ  } x | D] } | j  | ƒ q W| j ƒ  | j ƒ  } | | k o/ |  j d t j | ƒ d t j | ƒ ƒ n d  S(   Nu8   received events did not match expected events
Expected:
u   
Received:
(   u   feedu   closeu
   get_eventsu   failu   pprintu   pformat(   u   selfu   sourceu   expected_eventsu	   collectoru   parseru   su   events(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu
   _run_checkK   s    	 
c             C   s   |  j  | | t ƒ d  S(   N(   u
   _run_checku   EventCollectorExtra(   u   selfu   sourceu   events(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   _run_check_extraV   s    c             C   s&   | d „ } |  j  t j j | ƒ d  S(   Nc             S   s*   t  j j ƒ  } | j |  ƒ | j ƒ  d  S(   N(   u   htmlu   parseru
   HTMLParseru   feedu   close(   u   sourceu   parser(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   parseZ   s    (   u   assertRaisesu   htmlu   parseru   HTMLParseError(   u   selfu   sourceu   parse(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   _parse_errorY   s    N(   u   __name__u
   __module__u   EventCollectoru
   _run_checku   _run_check_extrau   _parse_error(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   TestCaseBaseI   s   
	u   TestCaseBasec             B   sÂ   |  Ee  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 S(   c             C   s*   |  j  d d g ƒ |  j  d d g ƒ d  S(   Nu   <?processing instruction>u   piu   processing instructionu   <?processing instruction ?>u   processing instruction ?(   u   piu   processing instruction(   u   piu   processing instruction ?(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu    test_processing_instruction_onlyc   s    	
	c             C   s_   |  j  d d d d d d g  f d d d d d d d d d g f d  d! d" d# d$ d% d& g ƒ d  S('   NuÂ   
<!DOCTYPE html PUBLIC 'foo'>
<HTML>&entity;&#32;
<!--comment1a
-></foo><bar>&lt;<?pi?></foo<bar
comment1b-->
<Img sRc='Bar' isMAP>sample
text
&#x201C;
<!--comment2a-- --comment2b--><!>
</Html>
u   datau   
u   declu   DOCTYPE html PUBLIC 'foo'u   starttagu   htmlu	   entityrefu   entityu   charrefu   32u   commentu4   comment1a
-></foo><bar>&lt;<?pi?></foo<bar
comment1bu   imgu   srcu   Baru   ismapu   sample
text
u   x201Cu   comment2a-- --comment2bu   endtag(   u   datau   
(   u   declu   DOCTYPE html PUBLIC 'foo'(   u   datau   
(   u	   entityrefu   entity(   u   charrefu   32(   u   datau   
(   u   commentu4   comment1a
-></foo><bar>&lt;<?pi?></foo<bar
comment1b(   u   datau   
(   u   srcu   Bar(   u   ismapN(   u   datau   sample
text
(   u   charrefu   x201C(   u   datau   
(   u   commentu   comment2a-- --comment2b(   u   datau   
(   u   endtagu   html(   u   datau   
(   u
   _run_checku   None(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_simple_htmlk   s&    c             C   s   |  j  d d d g ƒ d  S(   Nu   &entityref foou	   entityrefu   datau    foo(   u	   entityrefu	   entityref(   u   datau    foo(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_unclosed_entityref‹   s    	c             C   s'   d } |  j  d | d | f g ƒ d  S(   Nu‘  DOCTYPE html [
  <!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 -->
]u   <!%s>u   decl(   u
   _run_check(   u   selfu   inside(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_doctype_decl‘   s    c             C   s2   |  j  d d d g  f d d g  f d d g ƒ d  S(   Nu   <a><b></a></b>u   starttagu   au   bu   endtag(   u   endtagu   a(   u   endtagu   b(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_bad_nesting£   s
    	c             C   s   |  j  d d g ƒ d  S(   Nu#   this text & contains & ampersands &u   data(   u   datau#   this text & contains & ampersands &(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_bare_ampersands®   s    	c             C   s   |  j  d d g ƒ d  S(   Nu.   this < text > contains < bare>pointy< bracketsu   data(   u   datau.   this < text > contains < bare>pointy< brackets(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   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(   Nu   starttagu   au   bu   vu   cu   du   eu   <a b='v' c="v" d=v e>u   <a  b = 'v' c = "v" d = v e>u   <a
b
=
'v'
c
=
"v"
d
=
v
e>u   <a	b	=	'v'	c	=	"v"	d	=	v	e>(   u   bu   v(   u   cu   v(   u   du   v(   u   eN(   u   Noneu
   _run_check(   u   selfu   output(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   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 ƒ |  j  d d d d g f g ƒ |  j  d d d d g f g ƒ d  S(   Nu'   <a b='xxx
	xxx' c="yyy	
yyy" d='	xyz
'>u   starttagu   au   bu   xxx
	xxxu   cu   yyy	
yyyu   du   	xyz
u   <a b='' c="">u    u   <e a=rgb(1,2,3)>u   eu
   rgb(1,2,3)u   <a href=mailto:xyz@example.com>u   hrefu   mailto:xyz@example.com(   u   bu   xxx
	xxx(   u   cu   yyy	
yyy(   u   du   	xyz
(   u   bu    (   u   cu    (   u   au
   rgb(1,2,3)(   u   hrefu   mailto:xyz@example.com(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_attr_valuesÁ   s    					c             C   s#   |  j  d d d d g f g ƒ d  S(   Nu!   <a b='&amp;&gt;&lt;&quot;&apos;'>u   starttagu   au   bu   &><"'(   u   bu   &><"'(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_attr_entity_replacementÓ   s    	c             C   s)   |  j  d d d d d	 d
 g f g ƒ d  S(   Nu   <a a.b='v' c:d=v e-f=v>u   starttagu   au   a.bu   vu   c:du   e-f(   u   a.bu   v(   u   c:du   v(   u   e-fu   v(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_attr_funky_namesØ   s    	c             C   s   |  j  d ƒ d  S(   Nu"   <!spacer type="block" height="25">(   u   _parse_error(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_illegal_declarationsÝ   s    c             C   sB   |  j  d d d d g f g ƒ |  j  d d d d	 g f g ƒ d  S(
   Nu	   <a b='<'>u   starttagu   au   bu   <u	   <a b='>'>u   >(   u   bu   <(   u   bu   >(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   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(-   Nu   starttagu   au   bu   <u	   <a b='<'>u   <a u   b='<'>u   <a bu   ='<'>u   <a b=u   '<'>u   <a b='<u   '>u   <a b='<'u   >u	   <a b='>'>u   b='>'>u   ='>'>u   '>'>u   <a b='>u   <a b='>'u   commentu   abcu    u
   <!--abc-->u	   !--abc-->u   <!u   --abc-->u   <!-u   -abc-->u   <!--u   abc-->u   <!--au   bc-->u   <!--abu   c-->u   <!--abcu   -->u   <!--abc-u   ->u	   <!--abc--(   u   bu   <(   u   bu   >(   u   commentu   abc(   u
   _run_check(   u   selfu   output(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   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 ƒ d  S(   Nu   </>u   </$>u   </u   </au   <a<a>u   </a<a>u   <!u   <a $>u   <au   <a foo='bar'u   <a foo='baru
   <a foo='>'u	   <a foo='>u   <a foo=>(   u   _parse_error(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_starttag_junk_chars  s    c             C   s   |  j  d ƒ d  S(   Nu   <!DOCTYPE foo $ >(   u   _parse_error(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_declaration_junk_chars  s    c             C   sm   |  j  d d d g  f g ƒ |  j  d d d g  f d g ƒ |  j  d d d g  f d d d g f d g ƒ d  S(   Nu   <p/>u   startendtagu   pu   <p></p>u   starttagu   endtagu   <p><img src='foo' /></p>u   imgu   srcu   foo(   u   endtagu   p(   u   srcu   foo(   u   endtagu   p(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_startendtag  s    		
	c             C   s5   d } |  j  | d d d	 d
 g f d | f g ƒ d  S(   Nu    <foo:bar   
   one="1"	two=2   >u   starttagu   foo:baru   oneu   1u   twou   2u   starttag_text(   u   oneu   1(   u   twou   2(   u   _run_check_extra(   u   selfu   s(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_get_starttag_text#  s    	c             C   sT   d } |  j  | d d g  f d	 d
 g ƒ d } |  j  | d d g  f d d g ƒ d  S(   Nu=   <script> <!-- not a comment --> &not-an-entity-ref; </script>u   starttagu   scriptu   datau,    <!-- not a comment --> &not-an-entity-ref; u   endtagu&   <script> <not a='start tag'> </script>u    <not a='start tag'> (   u   datau,    <!-- not a comment --> &not-an-entity-ref; (   u   endtagu   script(   u   datau    <not a='start tag'> (   u   endtagu   script(   u
   _run_check(   u   selfu   s(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_cdata_content)  s    	
	c             C   s#   |  j  d d d d g f g ƒ d  S(   Nu0   <html foo='&euro;&amp;&#97;&#x61;&unsupported;'>u   starttagu   htmlu   foou   â‚¬&aa&unsupported;(   u   foou   â‚¬&aa&unsupported;(   u
   _run_check(   u   self(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   test_entityrefs_in_attributes7  s    	N(   u   __name__u
   __module__u    test_processing_instruction_onlyu   test_simple_htmlu   test_unclosed_entityrefu   test_doctype_declu   test_bad_nestingu   test_bare_ampersandsu   test_bare_pointy_bracketsu   test_attr_syntaxu   test_attr_valuesu   test_attr_entity_replacementu   test_attr_funky_namesu   test_illegal_declarationsu   test_starttag_end_boundaryu   test_buffer_artefactsu   test_starttag_junk_charsu   test_declaration_junk_charsu   test_startendtagu   test_get_starttag_textu   test_cdata_contentu   test_entityrefs_in_attributes(   u
   __locals__(    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   HTMLParserTestCasea   s(   
		 																		u   HTMLParserTestCasec               C   s   t  j t ƒ d  S(   N(   u   supportu   run_unittestu   HTMLParserTestCase(    (    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu	   test_main=  s    u   __main__(   u   __doc__u   html.parseru   htmlu   pprintu   unittestu   testu   supportu   parseru
   HTMLParseru   EventCollectoru   EventCollectorExtrau   TestCaseu   TestCaseBaseu   HTMLParserTestCaseu	   test_mainu   __name__(    (    (    u1   /mit/python/lib/python3.0/test/test_htmlparser.pyu   <module>   s   9Ü	