m
fIc           @   s   d  k  Z d  k Z d  k Z d  k Z d  k Z d  k Z d f  d     YZ d e i f d     YZ	 d   Z
 e d j o e
   n d  S(   Nt	   PosReturnc           B   s   t  Z d   Z d   Z RS(   Nc         C   s   d |  _ d  S(   Ni    (   t   selft   pos(   R   (    (    t5   /mit/python/lib/python2.4/test/test_codeccallbacks.pyt   __init__   s    c         C   sc   |  i } | } | d j  o t | i  | } n | | i j o t | i  |  _ n d | f S(   Ni    u   <?>(   R   R   t   oldpost   realpost   lent   exct   objectt   start(   R   R   R   R   (    (    R   t   handle
   s    	(   t   __name__t
   __module__R   R   (    (    (    R   R       s   	t   CodecCallbackTestc           B   s  t  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   sB   d } |  i | i d d  d  |  i | i d d  d  d  S(   Nu   スパモ änd eggst   asciit   xmlcharrefreplaces&   &#12473;&#12497;&#12514; &#228;nd eggss   latin-1s!   &#12473;&#12497;&#12514; nd eggs(   t   sR   t   assertEqualt   encode(   R   R   (    (    R   t   test_xmlcharrefreplace   s
    c         C   s   d   } t i d |  d } d } |  i | i d d  |  d } |  i | i d d  |  d } |  i | i d	 d  |  d  S(
   Nc         C   s   t  |  t  p t d |    n g  } xm |  i |  i |  i !D]U } y" | i	 d t
 i t |   WqA t j
 o | i	 d t |   qA XqA Wd i |  |  i f S(   Ns   don't know how to handle %ru   &%s;u   &#%d;u    (   t
   isinstanceR   t   UnicodeEncodeErrort	   TypeErrort   lR	   R
   t   endt   ct   appendt   htmlentitydefst   codepoint2namet   ordt   KeyErrort   join(   R   R   R   (    (    R   t   xmlcharnamereplace)   s     " s   test.xmlcharnamereplaceu   «ℜ» = 〈ሴ€〉s0   &laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;R   s$   &real; = &lang;&#4660;&euro;&rang;s   latin-1s   &real; = &lang;&#4660;&rang;s   iso-8859-15(   R!   t   codecst   register_errort   sint   soutR   R   R   (   R   R!   R$   R%   (    (    R   t   test_xmlcharnamereplace%   s    	c         C   s   d   } t i d |  d } d } |  i | i d d  |  d } |  i | i d d  |  d } |  i | i d	 d  |  d  S(
   Nc         C   s   t  |  t  p t d |    n g  } xA |  i |  i |  i !D]) } | i	 t
 i | d t |    qA Wd d i |  |  i f S(   Ns   don't know how to handle %ru   0x%xu
   [1m%s[0mu   , (   R   R   R   R   R   R	   R
   R   R   R   t   unicodedatat   nameR   R    (   R   R   R   (    (    R   t   uninamereplaceH   s     's   test.uninamereplaceu   ¬ሴ€耀sN   [1mNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000[0mR   sE   [1mETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000[0ms   latin-1sA   [1mETHIOPIC SYLLABLE SEE[0m[1mCJK UNIFIED IDEOGRAPH-8000[0ms   iso-8859-15(   R)   R"   R#   R$   R%   R   R   R   (   R   R$   R%   R)   (    (    R   t   test_uninamereplace?   s    		c         C   s  d } t i d j o | t t i  7} n d } t i d j o | d t i 7} n |  i | i d d  |  d } t i d j o | d t i 7} n |  i | i d d  |  d	 } t i d j o | d t i 7} n |  i | i d
 d  |  d  S(   Nu   a¬ሴ€耀i  s   a\xac\u1234\u20ac\u8000s   \U%08xR   t   backslashreplaces   a\u1234\u20ac\u8000s   latin-1s   a\u1234\u8000s   iso-8859-15(   R$   t   syst
   maxunicodet   unichrR%   R   R   R   (   R   R$   R%   (    (    R   t   test_backslashescape]   s    c         C   sd   d   } t i d |  d } d } |  i | i d d  |  d } |  i t	 | i d d  d  S(   Nc         C   sc   t  |  t  p t d |    n |  i |  i |  i !i d  o d |  i d f Sn |   d  S(   Ns   don't know how to handle %rs   u    i   (   R   R   t   UnicodeDecodeErrorR   R	   R
   R   t
   startswith(   R   (    (    R   t   relaxedutf8x   s
     s   test.relaxedutf8t   a bcüu	   a b cü  s   utf-8s   (
   R2   R"   R#   R$   R%   R   R   t   decodet   assertRaisest   UnicodeError(   R   R2   R%   R$   (    (    R   t   test_decoderelaxedutf8r   s    	c         C   s)  t  g  } d D]# } | t |  d | i   f q ~  } d } d } |  i	 t
 i | d |  d |  d } |  i t t
 i | d |  d | t d	  <d
 } d } |  i	 t
 i | d |  d |  d | t d	  <|  i t t
 i | d |  d | t d	  <|  i t t
 i | d |  d  S(   Nt   abcdefghi   u   abct   AABBCCt   stricti    u   abcAt   XYZt   ?u   abcDEFt   AABBCCXYZXYZXYZt   replaceu   XYZ(   t   dictt   _[1]R   R   t   uppert   charmapR$   R%   R   t   assertEqualsR"   t   charmap_encodeR5   R6   R   (   R   RB   R   R@   R%   R$   (    (    R   t   test_charmapencode   s    =##c         C   s   |  i t d i d  t i d j oq d   } |  i d i d d  d  |  i d i d d  d  t i	 d	 |  |  i d i d d	  d
  n d  S(   Nt        s   unicode-internali  c         C   s(   t  |  t  p t d |    n d S(   Ns   don't know how to handle %ru   i   (   u   i   (   R   R   R0   R   (   R   (    (    R   t   handler_unicodeinternal   s    t   ignoreu    R>   u    �s   test.huiu     (
   R   R5   R0   R4   R,   R-   RG   R   R"   R#   (   R   RG   (    (    R   t   test_decodeunicodeinternal   s    		c         C   s  d   } t i d |  d   } t i d |  d } |  i | i d d  d  |  i | i d d  d  |  i d	 i d
 d  d  |  i d i d
 d  d  |  i t i d d h  t	 d  d < d d  |  i d i
 d d  d  |  i d i
 d d  d  d  S(   Nc         C   s   t  |  t  o% t  |  t  o t d |    n g  } t |  i |  i  D] } | d t
 |  i |  qP ~ } d d i |  |  i f S(   Ns   don't know how to handle %ru   <%d>u   [%s]u    (   R   R   R   R0   R   R@   t   xrangeR
   R   R   R   R	   R   R    (   R   R   R   R@   (    (    R   t   handler1   s    "As   test.handler1c         C   s   t  |  t  p t d |    n g  } t |  i |  i  D] } | d t	 |  i
 |  q> ~ } d d i |  |  i d f S(   Ns   don't know how to handle %ru   <%d>u   [%s]u    i   (   R   R   R0   R   R@   RJ   R
   R   R   R   R	   R   R    (   R   R   R   R@   (    (    R   t   handler2   s    As   test.handler2t    R   u    [<129>][<128>][<255>]u    [<129>][<128>]s   \u3042\u3xxxs   unicode-escapeu   あ[<92><117><51><120>]xxs   \u3042\u3xxu   あ[<92><117><51><120><120>]t   abct   au   zi    u   z[<98>][<99>]u   güßrku   g[<252><223>]rku   güßu   g[<252><223>](   RK   R"   R#   RL   R   R   R   R4   t   charmap_decodeR   R   (   R   RK   RL   R   (    (    R   t   test_callbacks   s&    		+c         C   s   d d d d d g } x+ | D]# } t i d | t i |   q Wd } | g  } | D] } | d | qW ~ 7} xy g  } d D] } | | | q ~ D]R } xI d D]A } x8 | D]0 } y | i
 | |  Wq t j
 o q Xq Wq Wq Wd  S(   NR:   RH   R>   R   R+   s   test.i  u   xu   あu   aäR   s   latin-1s
   iso-8859-1s   iso-8859-15s   utf-8s   utf-7s   utf-16(   u   xu   あu   aä(   s   asciis   latin-1s
   iso-8859-1s   iso-8859-15s   utf-8s   utf-7s   utf-16(   t   errorst   errR"   R#   t   lookup_errorR   R@   R   t   unit   encR   R6   (   R   RR   RS   R   R@   R   RV   RU   (    (    R   t   test_longstrings   s      !)&   c   
      C   s#  |  i t | | d   |  i t | | d g  d d d d d  g } x t t |   D] } x | D] } t |  t | |  j o qf n g  }	 xI t t |   D]5 } | | j o |	 i |  q |	 i | |  q W|  i t | |	  qf WqY W| |   } |  i t |  |  d  S(   Nis   too mucht   spamu   eggsi*   f1.0(   R   R5   R   t   exctypet   argst   Nonet	   wrongargsRJ   R   t   it   wrongargt   typet   callargst   jR   R   RC   t   strt   msg(
   R   RY   RZ   Rc   R   R]   R\   Ra   R^   R`   (    (    R   t   check_exceptionobjectargs  s$       c         C   s   |  i t d d d d d g d  |  i t d d d d d g d  |  i t d d	 d
 d d g d  |  i t d d d
 d d g d  |  i t d d d
 d d g d  t i d j o& |  i t d d d
 d d g d  n d  S(   NR   u   gürki   i   t   ouchs@   'ascii' codec can't encode character u'\xfc' in position 1: ouchi   s;   'ascii' codec can't encode characters in position 1-3: ouchu   üxi    s@   'ascii' codec can't encode character u'\xfc' in position 0: ouchu   ĀxsB   'ascii' codec can't encode character u'\u0100' in position 0: ouchu   ￿xsB   'ascii' codec can't encode character u'\uffff' in position 0: ouchi  u   𐀀xsF   'ascii' codec can't encode character u'\U00010000' in position 0: ouch(   R   Rd   R   R,   R-   (   R   (    (    R   t   test_unicodeencodeerror  s&    						c         C   sH   |  i t d d d d d g d  |  i t d d d d d g d  d  S(	   NR   s   grki   i   Re   s8   'ascii' codec can't decode byte 0xfc in position 1: ouchi   s6   'ascii' codec can't decode bytes in position 1-2: ouch(   R   Rd   R0   (   R   (    (    R   t   test_unicodedecodeerror?  s    		c         C   s   |  i t d d d d g d  |  i t d d d d g d  |  i t d d d d g d	  t i d
 j o# |  i t d d d d g d  n |  i t d d d d g d  d  S(   Nu   gürki   i   Re   s5   can't translate character u'\xfc' in position 1: ouchu   gĀrks7   can't translate character u'\u0100' in position 1: ouchu   g￿rks7   can't translate character u'\uffff' in position 1: ouchi  u   g𐀀rks;   can't translate character u'\U00010000' in position 1: ouchi   s0   can't translate characters in position 1-2: ouch(   R   Rd   t   UnicodeTranslateErrorR,   R-   (   R   (    (    R   t   test_unicodetranslateerrorK  s     					c      	   C   s^   |  i t t i d  |  i t t i t d   |  i t t i t d d d d d   d  S(   Ni*   Re   R   u   あi    i   (   R   R5   R   R"   t   strict_errorst	   ExceptionR   (   R   (    (    R   t   test_badandgoodstrictexceptionsg  s    			c         C   s   |  i t t i d  |  i t t i t d   |  i t i t d d d d d   d	  |  i t i t d d d d d   d
  |  i t i t	 d d d d   d  d  S(   Ni*   Re   R   u   あi    i   u    s   (   u    i   (   u    i   (   u    i   (
   R   R5   R   R"   t   ignore_errorsR6   RC   R   R0   Rh   (   R   (    (    R   t   test_badandgoodignoreexceptions|  s    		$$!c         C   s   |  i t t i d  |  i t t i t d   |  i t i t d d d d d   d
  |  i t i t d d d d d   d  |  i t i t	 d d d d   d  d  S(   Ni*   Re   R   u   あi    i   u   ?s   u   �(   u   ?i   (   u   �i   (   u   �i   (
   R   R5   R   R"   t   replace_errorsR6   RC   R   R0   Rh   (   R   (    (    R   t    test_badandgoodreplaceexceptions  s    		$$!c      	   C   s   |  i t t i d  |  i t t i t d   |  i t t i t d d d d d   |  i t t i t d d d d   |  i t i t	 d d d d d   d d	 d f  d  S(
   Ni*   Re   R   s   i    i   u   あu   &#%d;iB0  (
   R   R5   R   R"   t   xmlcharrefreplace_errorsR6   R0   Rh   RC   R   (   R   (    (    R   t*   test_badandgoodxmlcharrefreplaceexceptions  s    				$c      	   C   s  |  i t t i d  |  i t t i t d   |  i t t i t d d d d d   |  i t t i t d d d d   |  i t i t	 d d d d d   d  |  i t i t	 d d	 d d d   d  |  i t i t	 d d d d d   d  |  i t i t	 d d d d d   d  |  i t i t	 d d d d d   d  t
 i d j oZ |  i t i t	 d d d d d   d  |  i t i t	 d d d d d   d  n d  S(   Ni*   Re   R   s   i    i   u   あu   \u3042u    u   \x00u   ÿu   \xffu   Āu   \u0100u   ￿u   \uffffi  u   𐀀u
   \U00010000u   􏿿u
   \U0010ffff(   u   \u3042i   (   u   \x00i   (   u   \xffi   (   u   \u0100i   (   u   \uffffi   (   u
   \U00010000i   (   u
   \U0010ffffi   (   R   R5   R   R"   t   backslashreplace_errorsR6   R0   Rh   RC   R   R,   R-   (   R   (    (    R   t)   test_badandgoodbackslashreplaceexceptions  s6    				$$$$$$$c      	      s   d d d d d d d d d f	 } d } x | D]   t i d   d    x' | D] } |  i t	 d i
 | d  qQ Wx9 d d d d f D]% \ } } |  i t	 | i | d  q Wq. Wd  S(    Ni*   u   fooi   i   i   t   fooR   s   latin-1s
   iso-8859-1s   iso-8859-15s   test.badhandlerc              s     S(   N(   t   res(    (   Rv   (    R   t   <lambda>  s    u   あs   s   utf-8s   utf-7s   +x-s   unicode-internalt    (   i   i   i   (   u   fooi   i   (   u   fooN(   u   foo(   Ru   i   i   (   Ru   N(   Ru   (   s   asciis   latin-1s
   iso-8859-1s   iso-8859-15(   s   asciis   (   s   utf-8s   (   s   utf-7s   +x-(   s   unicode-internals    (   R[   t   resultst   encsRv   R"   R#   RV   R   R5   R   R   t   bytesR4   (   R   RV   Rv   Rz   R{   Ry   (    (   Rv   R   t   test_badhandlerresults  s"    !  	 	c         C   s   |  i t i t i d   |  i t i t i d   |  i t i t i d   |  i t i t i d   |  i t i t i d   d  S(   NR:   RH   R   R+   (   R   RC   R"   Rj   RT   Rm   Rq   Rs   (   R   (    (    R   t   test_lookup!  s    c         C   sG   d   } t i d |  x' d D] } |  i t d i | d  q  Wd  S(   Nc         C   s5   t  |  t  o d |  i f Sn t d |    d  S(   Nu   䉂s   don't know how to handle %r(   R   R   R   R   R   (   R   (    (    R   t	   unencrepl/  s    s   test.unencreplhandlerR   s
   iso-8859-1s   iso-8859-15u   䉂(   s   asciis
   iso-8859-1s   iso-8859-15(   R~   R"   R#   RV   R   R5   R   R   (   R   RV   R~   (    (    R   t   test_unencodablereplacement.  s    	 	c         C   s3   |  i t t i d  |  i t t i d d  d  S(   Ni*   s
   test.dummy(   R   R5   R   R"   R#   (   R   (    (    R   t   test_badregistercall=  s    c         C   s   |  i t t i d  d  S(   Ns   test.unknown(   R   R5   t   LookupErrorR"   RT   (   R   (    (    R   t   test_unknownhandlerD  s    c      
   C   s   d } t i d j o | d 7} n d i g  } | D] } | t |  q5 ~  } t i	 d t i
  x/ d D]' } x d D] } | i | |  q{ Wqn Wd  S(   Ni   i   i
   i2   id   i  i  i  i'  iP  i i  i@B u    s   test.xmlcharrefreplaceR   s   iso-8859-15R   (
   i   i   i
   i2   id   i  i  i  i'  iP  (   i i  i@B (   s   asciis   iso-8859-15(   s   xmlcharrefreplaces   test.xmlcharrefreplace(   t   vR,   R-   R    R@   t   xR.   R   R"   R#   Rq   RV   RS   R   (   R   R@   RV   RS   R   R   R   (    (    R   t   test_xmlcharrefvaluesI  s    0  c      
   C   s  |  i t d i d d  d   } t i d |  |  i t d i d d  |  i t d i d d  |  i t d i d d  |  i t d	 i d d  |  i t d
 i d d  |  i t d i d d  d   } t i d |  |  i t d i d d  t	   } t i d | i  d | _ |  i d i d d  d  d | _ |  i d i d d  d  d | _ |  i t d i d d  d | _ |  i d i d d  d  d | _ |  i d i d d  d  d | _ |  i t d i d d  d | _ |  i d i d d  d  d t f d     Y} |  i t t i d d h  d d  < |  i t t i d d |    |  i t t i d d h  d t i d < d  S(    Ns   R   s   test.unknownc         C   s   d S(   Ni*   (    (   R   (    (    R   t   baddecodereturn1\  s    s   test.baddecodereturn1s   \s   unicode-escapes   \x0s   \x0ys
   \Uffffeeees   \uyyyys   raw-unicode-escapec         C   s   d S(   Nu   ?(   u   ?N(   R[   (   R   (    (    R   t   baddecodereturn2f  s    s   test.baddecodereturn2s   test.posreturnis   0u   <?>0iu   <?><?>ii   i   u   <?>i   i   s   \uyyyy0t   Dc           B   s   t  Z d   Z RS(   Nc         C   s
   t   d  S(   N(   t
   ValueError(   R   t   key(    (    R   t   __getitem__  s    (   R   R   R   (    (    (    R   R     s   R:   i   (   R   R5   R   R4   R   R"   R#   R   R   R    t   handlerR   R   RC   t
   IndexErrorR?   R   R6   RP   R[   R   R,   R-   (   R   R   R   R   R   (    (    R   t   test_decodehelperV  s@    										%c      
   C   s  |  i t d i d d  d   } t i d |  |  i t d i d d  d   } t i d |  |  i t d i d d  t	   } t i d | i  d	 | _ |  i d
 i d d  d  d | _ |  i d
 i d d  d  d | _ |  i t d
 i d d  d | _ |  i d
 i d d  d  d | _ |  i d
 i d d  d  d | _ |  i t d
 i d d  d | _ d t f d     Y} xw d D]o } |  i t t i d | h  d d  < |  i t t i d | |    |  i t t i d | h  d d < qWd  S(   Nu   ÿR   s   test.unknownc         C   s   d S(   Ni*   (    (   R   (    (    R   t   badencodereturn1  s    s   test.badencodereturn1c         C   s   d S(   Nu   ?(   u   ?N(   R[   (   R   (    (    R   t   badencodereturn2  s    s   test.badencodereturn2s   test.posreturniu   ÿ0s   <?>0is   <?><?>ii   i   s   <?>i   i    R   c           B   s   t  Z d   Z RS(   Nc         C   s
   t   d  S(   N(   R   (   R   R   (    (    R   R     s    (   R   R   R   (    (    (    R   R     s   R:   R>   R   R+   i   i,  (   s   stricts   replaces   xmlcharrefreplaces   backslashreplaces   test.posreturn(   R   R5   R   R   R   R"   R#   R   R   R    R   R   R   RC   R   R?   R   RS   R6   RD   R[   R   (   R   RS   R   R   R   R   (    (    R   t   test_encodehelper  s8    										 %c         C   sx   d t  f d     Y} |  i t d i |    |  i t d i h  d t i d < |  i t d i h  d f  < d  S(   NR   c           B   s   t  Z d   Z RS(   Nc         C   s
   t   d  S(   N(   R   (   R   R   (    (    R   R     s    (   R   R   R   (    (    (    R   R     s   u   ÿi   i   (	   R?   R   R   R5   R   t	   translateR   R,   R-   (   R   R   (    (    R   t   test_translatehelper  s    &c         C   sn   h  t  d  d <t  d  d <t  d  d <t  d  d <} x% d D] } d | } | i |  qI Wd  S(   Nt   &u   &amp;t   <u   &lt;t   >u   &gt;t   "u   &quot;i   i
   id   i  u   abc<def>ghi(   i   i
   id   i  (   R   RB   t   nt   textR   (   R   RB   R   R   (    (    R   t   test_bug828737  s
    B 
(   R   R   R   R&   R*   R/   R7   RE   RI   RQ   RW   Rd   Rf   Rg   Ri   Rl   Rn   Rp   Rr   Rt   R|   R}   R   R   R   R   R   R   R   R   (    (    (    R   R      s8   								6			!							7							;	5	c           C   s   t  i i t  d  S(   N(   t   testt   test_supportt   run_unittestR   (    (    (    R   t	   test_main  s    t   __main__(   t   test.test_supportR   t   unittestR,   R"   R   R'   R    t   TestCaseR   R   R   (	   R'   R    R   R   R,   R   R   R"   R   (    (    R   R<      s   $  	