
    dafD                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZ ddlmZmZ ddlmZ 	 ddlZd Zd Z G d d	e      Z G d
 de      Z G d d      Z G d d      Z G d dej8                  ej:                  ej<                  e
j>                        Z  G d de
j>                        Z!e"dk(  r e
jF                          yy# e$ r dZY w xY w)z Test script for the Unicode implementation.

Written by Marc-Andre Lemburg (mal@lemburg.com).

(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.

    N)warnings_helper)supportstring_tests)assert_python_failurec                 P    dd}dd}dd}dd}| dk(  r||d d fS | dk(  r||d d fS y )Nc                      yN*    inputerrorss     ,/root/Python-3.12.4/Lib/test/test_unicode.pydecode1z search_function.<locals>.decode1           c                      yr	   r   r   s     r   encode1z search_function.<locals>.encode1    r   r   c                      yN)r
   r
   r   r   s     r   encode2z search_function.<locals>.encode2"       r   c                      yr   r   r   s     r   decode2z search_function.<locals>.decode2$   r   r   test.unicode1test.unicode2)strictr   )encodingr   r   r   r   s        r   search_functionr      sG     $--	?	"$--r   c                 >    | j                         j                         S )z
    Try to get a fresh clone of the specified text:
    new object with a reference count of 1.

    This is a best-effort: latin1 single letters and the empty
    string ('') are singletons and cannot be cloned.
    )encodedecode)texts    r   duplicate_stringr$   -   s     ;;=!!r   c                       e Zd Zy)StrSubclassN__name__
__module____qualname__r   r   r   r&   r&   7       r   r&   c                       e Zd Zy)OtherStrSubclassNr'   r   r   r   r-   r-   :   r+   r   r-   c                       e Zd Zd Zd Zy)WithStrc                     || _         y Nvalueselfr3   s     r   __init__zWithStr.__init__>   	    
r   c                     | j                   S r1   r2   r5   s    r   __str__zWithStr.__str__@       zzr   Nr(   r)   r*   r6   r:   r   r   r   r/   r/   =       r   r/   c                       e Zd Zd Zd Zy)WithReprc                     || _         y r1   r2   r4   s     r   r6   zWithRepr.__init__D   r7   r   c                     | j                   S r1   r2   r9   s    r   __repr__zWithRepr.__repr__F   r;   r   Nr(   r)   r*   r6   rB   r   r   r   r?   r?   C   r=   r   r?   c                       e Zd 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 ej8                  ej<                  dkD  d      d        Zd Z e!jD                  d        Z#d Z$d Z%d Z& fdZ' fd Z( fd!Z) fd"Z* e!jV                  d#      d$        Z, fd%Z- fd&Z. fd'Z/d( Z0 fd)Z1d* Z2d+ Z3e!jD                   e!jh                          ej8                  e5d,u d-      d.                      Z6d/ Z7d0 Z8d1 Z9d2 Z:d3 Z;d4 Z< fd5Z=d6 Z>d7 Z? ej                  ej<                  d8k(  d9      e!jD                  d:               ZAd; ZBd< ZCd= ZDd> ZEd? ZFd@ ZGdA ZHdB ZIdC ZJdD ZKdE ZLdF ZMe!jD                   ej8                  e5d,u d-      dG               ZNdH ZOdI ZP e!j                  dJdKdL      dM        ZRdN ZSdO ZTdP ZUdQ ZVdR ZWdS ZXdT ZYdU ZZdV Z[dW Z\dX Z]dY Z^dZ Z_d[ Z`d\ Zad] Zbd^ Zcd_ Zdd` Zeda Zfdb Zgdc Zhdd Zi ej8                  ej<                  dkD  xs  ejj                  de      dfk7  dg      dh        Zle!jD                  di        Zmdj Zndk Zodl Zpdm Zqe!jD                   e!jh                          ej8                  e5d,u d-      dn                      Zrdo Zsdp Ztdq Zu xZvS )rUnicodeTestc                 ~    t        j                  t               | j                  t         j                  t               y r1   )codecsregisterr   
addCleanup
unregisterr9   s    r   setUpzUnicodeTest.setUpP   s"    ())?;r   c                 8   t        ||      } || }| j                  ||       | j                  t        |      t        |      u        ||u rN G d dt              } ||      }t        ||      } || }| j                  ||       | j                  ||u       y y )Nc                       e Zd Zd Zy))UnicodeTest.checkequalnofix.<locals>.usubc                 2    dt         j                  |       z  S )Nzusub(%r))strrB   r9   s    r   rB   z2UnicodeTest.checkequalnofix.<locals>.usub.__repr__^   s    %T(:::r   Nr(   r)   r*   rB   r   r   r   usubrN   ]   s    ;r   rR   )getattrassertEqual
assertTruetyperP   )r5   resultobject
methodnameargsmethod
realresultrR   s           r   checkequalnofixzUnicodeTest.checkequalnofixT   s    ,T]
V,Z(DL89 ;s ; &\FVZ0FJZ0OOF*45  r   c                 p    | j                  t        |      t        |             | j                  ||       y r1   )assertIsrV   rT   )r5   actualexpecteds      r   assertTypedEqualzUnicodeTest.assertTypedEqualf   s(    d6lDN3*r   c                    | j                  dd       | j                  dd       | j                  t        t        d       | j                  t        t        d       | j                  t        t        ddz         | j	                  dd       y )	N   ÿ   ￿z'\Ufffffffe'z'\Uffffffff'z'\U%08x'   z\u0020 )rT   assertRaisesSyntaxErrorevalassertNotEqualr9   s    r   test_literalszUnicodeTest.test_literalsj   so    *<0+t->?+t->?+t]X-EFIs+r   c           
         | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d	      d
       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       d}t        dj                  t        t        t        d                        }| j                  ||       | j                  t        d      t        d             | j                  t        d      d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        t        d                  t        d             | j                  t        t        d             d!       | j                  t        t        t        d                   d!       | j                  t        t        t        d"             y )#Nabc'abc'ab\c'ab\\c'ab\'ab\\'\c'\\c'\'\\'
'\n''\r'	'\t''\x08''"'\'"''"'""'"'a  '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'    0  𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿   🐍z'\U0001f40d'<abc>   <🐍>z<\U0001f40d>	   byte-repr)rT   asciijoinmapchrrangerb   r&   r?   rh   	TypeErrorr5   
latin1reprtestreprs      r   
test_asciizUnicodeTest.test_asciis   s    uw/w5v
3uy1th/tg.tg.tg.ti0u|4u|4sY/sY/ 	 S%*!567:.BC!"EF	H 	eL1?CeK$67AeHW$56@eH[-A$BC[QXEYZeH^$<=OeH[-H$IJO\)UH\,BCr   c           
         | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d	      d
       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       | j                  t        d      d       d}t        dj                  t        t        t        d                        }| j                  ||       | j                  t        d      t        d             | j                  t        d      d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        t        d                  t        d             | j                  t        t        d             d        | j                  t        t        t        d                   t        d              | j                  t        t        t        d!             y )"Nrn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   u%  '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0¡¢£¤¥¦§¨©ª«¬\xad®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'r   r   r   r   u   '🐍'r   r   r   )rT   reprr   r   r   r   rb   r&   r?   rh   r   r   s      r   	test_reprzUnicodeTest.test_repr   s&   eg.g4fz2ei0dX.dW-dW-dW-dY/el3el3cI.cI. 	 Cs 456:.AB !DE	G 	d<0.Ad;u#56@d8G#45w?d8K,@#ABKPWDXYd8N#;<nMd8K,G#HI;WeKfg)T8L+ABr   c                     dj                         }| j                  t        |      d       | j                  t        |      d       | j                  t        |      d       | j                  t        t        |       y )N	   ᄑ∢㌳u   ᄑu   ∢u   ㌳)__iter__rT   nextrh   StopIteration)r5   its     r   test_iteratorszUnicodeTest.test_iterators   s^    !**,b8,b8,b8,-r2r   c                     t        t        d            t        t        d            g}|D ]3  }| j                  |      5  | j                  t        |       d d d        5 y # 1 sw Y   @xY w)Nrn   u   🚀)cls)rV   itersubTestrh   r   )r5   casesr   s      r   test_iterators_invocationz%UnicodeTest.test_iterators_invocation   se    d5k"Df$67 	2C#& 2!!)S12 2	22 2s    A""A+	c           
          g d}|D ]G  }| j                  |      5  | j                  |dj                  t        |                   d d d        I y # 1 sw Y   TxY w)Nrn   u   🚀🚀🚀r   )stringr   )r   rT   r   r   )r5   r   cases      r   test_iterationzUnicodeTest.test_iteration   s[    = 	<DT* <  rwwtDz':;< <	<< <s   +AA	c                     g d}|D ]N  }| j                  |      5  t        |      }t        |       | j                  t        t
        |       d d d        P y # 1 sw Y   [xY w)Nr   r   )r   r   tuplerh   r   r   )r5   r   r   iterators       r   test_exhausted_iteratorz#UnicodeTest.test_exhausted_iterator   sg    = 	AD4( A:h!!-x@A A	AA As   2AA"	c                    g d}|D ]  }| j                  |      5  t        t        j                  dz         D ]r  }t	        |      }| j                  |      5  dj                  t        j                  t        j                  ||                  }| j                  ||       d d d        t 	 d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r      )protor   )	r   r   pickleHIGHEST_PROTOCOLr   r   loadsdumpsrT   )r5   r   r   r   r   pickleds         r   test_pickle_iteratorz UnicodeTest.test_pickle_iterator   s    = 	8D4( 8"6#:#:Q#>? 8EdBE2 8"$''&,,v||B7N*O"P((w78 888 8	88 88 8s$   =CAB:	$
C:C?CC	c                    t         j                  j                  |        | j                  dddd       | j                  dddd       | j                  dddd       | j                  dddd       | j                  dddd       | j                  ddddd       | j                  ddddd	       | j                  d
ddddd       | j                  dddddd	       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j	                  dddd        G d dt
              }| j	                  d |d      dd       y )N   aaacountar   br   i   
   u   Ăaaaaaaaaaau   􀌄aaaaaaaaaau   􀌄ĂĂĂĂĂĂĂĂĂĂ   Ă
aaaaaaaaaa   􀌄u   ĂĂĂĂĂĂĂĂĂĂu   Ăa_a_a_a_a_a_a_a_a_a_a_u   􀌄a_a_a_a_a_a_a_a_a_a_u"   􀌄Ă_Ă_Ă_Ă_Ă_Ă_Ă_Ă_Ă_Ă_   Ă_   aĂ   a􀌄   Ă􀌄c                       e Zd Zy)%UnicodeTest.test_count.<locals>.MyStrNr'   r   r   r   MyStrr   
      r   r   )r   
CommonTest
test_countr]   
checkequalrP   )r5   r   s     r   r   zUnicodeTest.test_count   s   **40Q5Q5Qw5Qw5Qw5Qwb9Qwc:Qwa<Qwa=/#>3WcB8'8L8Wh78Wl;='<@0'4@4gtD97IN8Wi88Wm<='3EF	C 	5<#6r   c                    t         j                  j                  |        | j                  dddd       | j                  dddd       | j                  dddd       | j                  dddd       | j                  dd	dd
       | j                  dd	dd       | j                  dd	dd       | j	                  dddd       | j	                  ddddd       | j	                  ddddd       | j                  dddd       | j                  ddddd       | j                  dddddd       | j                  dddd       | j                  dddd       | j                  ddddd       | j                  dddddd       | j                  ddddd       | j                  dddddd       | j                  ddddd       | j                  dddd       | j                  t        dj                         | j                  t        dj                  d       | j                  dd dd!       | j                  dd"dd!       | j                  dd#dd       | j                  dd$dd       | j                  dd$dd
       | j                  dd%dd
       | j                  dd&dd'       | j                  dd(dd'       | j                  dd)dd*       | j                  dd$dd+       | j                  dd$dd,       | j                  dd%dd-       y ).Nd   uf   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaĂfindr   r      ȁ   Ġ   Ƞuh   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa􀌄r      􀈄   􂀄r   abcdefghiabcrn   	   r   def      тестu   тr   e   тест тест   ес   r      echellor
      ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂar     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ădaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂa_r     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a_  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ă_r   r   r   r   )r   r   	test_findr   r]   rh   r   r   r9   s    r   r   zUnicodeTest.test_find  s   ))$/168D0&(C0&(C0&(C5v|L4flK4flKQ?QBRB 	:vt4:vtQ7Ja;J4.?.B.1E.B/AF/C/>)W\\2)W\\26163?5vsC:FHMIvx8Iv|<NFLA2FDA6E;VYOIvy9Iv}=NF4FGr   c                 |   t         j                  j                  |        | j                  dddd       | j                  dddd       | j                  dddd       | j                  dddd       | j                  dd	dd
       | j                  dd	dd       | j                  dd	dd       | j	                  dddd       | j	                  dddd       | j	                  dddd       | j                  dddd       | j                  ddddd       | j                  ddddd       | j                  dddd       | j                  dddd       | j                  ddddd       | j                  dddddd       | j                  ddddd       | j                  dddddd       | j                  ddddd       | j                  dddd       | j                  dddd       | j                  dddd       | j                  dd dd       | j                  dd!dd       | j                  dd!dd
       | j                  dd"dd
       | j                  dd#dd$       | j                  dd%dd$       | j                  dd&dd'       | j                  dd!dd(       | j                  dd!dd)       | j                  dd"dd*       y )+Nr   uf   Ăaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfindr   r   r   r   r   uh   􀌄aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   r   r   r   r   rn      r   r   r   u   еr   r   r   r   r   r   r   r      aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂr     a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄r   r      _aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ_a  _a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  _Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄   _Ă   Ăa   􀌄a   􀌄Ă)r   r   
test_rfindr   r]   r9   s    r   r   zUnicodeTest.test_rfind;  s   **40/'8D07HE07HE07HE3WlK4g|L4g|LQ.'5AR.'2>R2>:w5:wa8Jq9J5.@.C.AF.C/&!QG/&!D/$?/#>3WcB8'8LIw9Iw=NG\B0'4@4gtD97INIw	:Iw>NG5GHr   c                 n   t         j                  j                  |        | j                  dddd       | j                  dddd       | j                  dddd       | j                  ddddd	       | j	                  t
        dj                  d
       | j	                  t
        dj                  dd	       | j	                  t
        dj                  dd       | j	                  t
        dj                  dd       | j                  dddd       | j                  dddd       | j                  dddd       | j	                  t
        dj                  d       | j	                  t
        dj                  d       | j	                  t
        dj                  d       | j                  dddd       | j                  dddd       | j                  dddd       | j	                  t
        dj                  d       | j	                  t
        dj                  d       | j	                  t
        dj                  d        y )!Nr   r   indexr   r   r   rn   r   r   hibabcdefghiab	abcdefghighi   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   
test_indexr]   rh   
ValueErrorr   r   r9   s    r   r  zUnicodeTest.test_indexd  s   **40Q"=Q%@Q%@Q%C*n&:&:EB*m&9&9E1E*k&7&7%C*k&7&7%D17C@5wD:GXN*y&7&7B*y&7&7F*~&<&<lK2GTB6F;WiP*y&7&7C*y&7&7G*~&<&<>PQr   c                    t         j                  j                  |        | j                  dddd       | j                  dddd       | j                  dddd       | j                  d	dddd	d
       | j	                  t
        dj                  d       | j	                  t
        dj                  dd       | j	                  t
        dj                  dd	d
       | j	                  t
        dj                  dd	d       | j	                  t
        dj                  dd	d
       | j                  d	ddd       | j                  d	ddd       | j                  d	ddd       | j	                  t
        dj                  d       | j	                  t
        dj                  d       | j	                  t
        dj                  d       | j                  d	ddd       | j                  d	ddd       | j                  d	ddd       | j	                  t
        dj                  d       | j	                  t
        dj                  d       | j	                  t
        dj                  d        y )!Nr   r   rindexr   r   r   r   rn   r   r   r   	defghiabcr   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   test_rindexr]   rh   r  r  r   r9   s    r   r
  zUnicodeTest.test_rindex|  s   ++D1RB?QEBQEBQE1bI*n&;&;eD*k&8&85!D*k&8&85!RH*k&8&85!QG*k&8&85!RH/3?3XsC8(HM*y&8&8(C*y&8&8,G*~&=&=|L0(DA4hE98YO*y&8&8)D*y&8&8-H*~&=&=?QRr   c                 4   | j                  dddt        d      d i       | j                  dddt        d      d t        d      t        d      i       | j                  dddt        d      d t        d      t        d      t        d	      d
i       | j                  d	ddt        d      d t        d      di       | j                  dddt        d      di       | j                  dddddi       | j                  j                  d dd      }| j                  ddd|       | j                  j                  ddd      }| j                  ddd|       | j	                  dj                  t        j                  dd            d       | j	                  dj                  t        j                  ddi            d       | j	                  dj                  t        j                  dd i            d       | j	                  dj                  t        j                  ddi            d       | j	                  dj                  t        j                  ddi            d       | j	                  d j                  t        j                  d d!d            d"       | j	                  d j                  t        j                  d dd            d#       | j	                  dj                  t        j                  dd$i            d%       | j	                  dj                  t        j                  ddi            d       | j	                  dj                  t        j                  dd i            d       | j	                  dj                  t        j                  dd!i            d&       | j	                  d'j                  t        j                  dd(i            d)       d*}d+D ]?  }t        j                  ||i      }d,|z  }| j                  t        |j
                  |       A | j                  t        | j                  j                         | j                  t        | j                  j                  dd-       | j                  t        | j                  j                  d.d/       | j                  t        | j                  j                  dd.       | j                  t        | j                  j                  dd/d.       | j                  t        | j                  j                  d0d.i       | j                  t        | j                  j                  d1d.i       | j                  t        d2j
                         | j                  t        dj
                  dd       y )3Nbbbcabababc	translater   iiicr   iiiixcxr   xyyxxzxzyyz<i>r   r   z
<i><i><i>crn   xyzdxyzzyabdcdcbddddz[a]Xz[X][]XXXz[XXX]   éu   [é]axb123x123u   xéu   <é>u   [<é>]z[123]u   [aé]u   <€>u	   [<€>é]rf   u
   aé€􏿿z[%s]defgr   r   xy)r   r   )
r]   ord	type2test	maketransrT   r  rP   rh   r  r   )r5   tblinvalid_charbeforemappingr#   s         r   test_maketrans_translatez$UnicodeTest.test_maketrans_translate  s   VY!#h-	/VY!#hc#hCA	CVY!#hc#hC#c(CP	RS)[!#hc#h;	=VUK!#h-	/ 	Y	;!5\	+nn&&T'>?\9k3Gnn&&ueS9Wm[#F 	sC)@A	 Sz)BC	 T{)CD	U|)DE 	"V})EF!	#T7N)OP	!T7O)PQ 	" 	X)GH#	%++CMM63-,HI	 ++CMM64.,IJ	++CMM65/,JK 	",,S]]C;L-MN)	+ "- 	CFmmV\$:;GF?Dj$..'B	C 	)T^^%=%=>*dnn&>&>vN)T^^%=%=q%H)T^^%=%=uaH)T^^%=%=ueQO*dnn&>&>q	J)T^^%=%=ayI)W%6%67)Y%8%8%Gr   c           	      f   t         j                  j                  |        dD ]  \  }}|dz  }|dz  }dD ]y  }| j                  ||z   g||z   d|       | j                  ||g||z   |z   d|       | j                  ||z   g||z   d|dz         | j                  ||g||dz  z   |z   d|dz         {  y )Nba   āĀ   𐌁𐌀r   r  r      𐌂splitr   )r   r   
test_splitr   r5   leftrightdelims       r   r6  zUnicodeTest.test_split  s    **40 J 	MKD%AIDQJE6 M $ugu>u $uu 4guF $uguqyBu $uqy 05 8'5!8MM	Mr   c           	         t         j                  j                  |        dD ]  \  }}|dz  }|dz  }dD ]y  }| j                  ||z   g||z   d|       | j                  ||g||z   |z   d|       | j                  ||z   g||z   d|dz         | j                  ||g||dz  z   |z   d|dz         { | j                  ||z   g||z   dd         y )N)r0  u   юёr1  r2  r   )r  u   ыr   r4  rsplitr   )r   r   test_rsplitr   r7  s       r   r=  zUnicodeTest.test_rsplit  s    ++D1Q 	;KD%AIDQJE< N $uh?u $uu 4hG $uh	Cu $uqy 05 8(E1HNN OOTE\N!E\8T;	;r   c           	         t         j                  j                  |        | j                  dddd       dD ]  \  }}|dz  }|dz  }dD ]  }| j                  ||z   ddf||z   d|       | j                  |||f||z   |z   d|       | j                  ||z   ddf||z   d|d	z         | j                  ||d	z  |f||d	z  z   |z   d|d	z           y )
N)ABCDEFGHr   r   r?  	partition   䈀r/  r   r3  r   r   )r   MixinStrUnicodeUserStringTesttest_partitionr   r7  s       r   rC  zUnicodeTest.test_partition  s   22AA$G,j+xPI 	RKD%AIDQJE6 Rr2 6 $uk5Bue 4 $uu 4k5Jr2 6 $uk519Fuqy% 8 $uqy 05 8+uqyRR	Rr   c           	         t         j                  j                  |        | j                  dddd       dD ]  \  }}|dz  }|dz  }dD ]  }| j                  dd||z   f||z   d|       | j                  |||f||z   |z   d|       | j                  dd||z   f||z   d|d	z         | j                  ||d	z  |f||d	z  z   |z   d|d	z           y )
N)r   r   r?  r?  
rpartitionrA  r/  r   r3  r   r   )r   rB  test_rpartitionr   r7  s       r   rF  zUnicodeTest.test_rpartition  s	   22BB4H,j,QI 	SKD%AIDQJE6 SR 6 $ulECue 4 $uu 4lEKR 6 $ulEAIGuqy% 8 $uqy 05 8,PQ	SS	Sr   c           
         t         j                  j                  |         G d d      }| j                  dddg d       | j                  dddd       | j                  d	ddt        j                  d
             | j                  dddg d       | j                  dddg d       | j                  dddd       | j                  d	ddt        j                  d
             | j                  t        dddd |d      g       | j                  t        dddddt               g       | j                  t        ddg d       | j                  t        ddg d       y )Nc                       e Zd Zd Zd Zy)(UnicodeTest.test_join.<locals>.MyWrapperc                     || _         y r1   sval)r5   rL  s     r   r6   z1UnicodeTest.test_join.<locals>.MyWrapper.__init__'  s    $dir   c                     | j                   S r1   rK  r9   s    r   r:   z0UnicodeTest.test_join.<locals>.MyWrapper.__str__(  s    dii/r   Nr<   r   r   r   	MyWrapperrI  &  s    6/r   rN  za b c drg   r   )r   r   r  r  abcdr   zw x y zwxyz12foo3)r   r   r   )rQ  rR  r   )r   rB  	test_joinr]   Sequencecheckraisesr   bytes)r5   rN  s     r   rU  zUnicodeTest.test_join#  s0   22<<TB	0 	0
 	YV5IJVR1EFYV\5J5J65RSYV5IJYV5IJVR1EFYV\5J5J65RSC#sIe<L1MNC#sC1IJC;C?r   l        z*needs too much memory on a 64-bit platformc                     t        t        j                  dz        dz   }d|z  f|z  }| j                  t        dj
                  |       y )Ng      ?r   Ar   )intsysmaxsizerh   OverflowErrorr   )r5   sizeseqs      r   test_join_overflowzUnicodeTest.test_join_overflow7  sB     3;;#$q(Tzmd"-#6r   c           
         t         j                  j                  |        | j                  dddddd       | j	                  t
        dj                  dd       d	D ]  \  }}|d
z  }|d
z  }dD ]  }dD ]  }| j                  ||z   ||z   d||       | j                  ||z   |z   ||z   |z   d||       | j                  ||z   ||z   d|dz  |       | j                  ||z   |z   ||dz  z   |z   d|dz  |          y )Nzone@two!three!zone!two!three!replace!@r   rr
   r/  r   r3  )r  u   ău   𐌃r   )r   r   test_replacer]   rh   r   rc  r   )r5   r8  r9  r:  repls        r   rg  zUnicodeTest.test_replace>  s;   ,,T2 	-/?CQTVWX)Y%6%6R@I 	@KD%AIDQJE6 @9 
@DOOD5L$(5L)UDJOOD4K%$7$(5L5$8$-ud< OOD5L$(5L)UQYNOOD4K%$7$(519$4u$<$-uqy$@
@@	@r   c                 P    d}d}| j                  |j                  ||      |       y )Nrn   zabc def)r_   rc  )r5   patternr#   s      r   test_replace_idzUnicodeTest.test_replace_idU  s%    dll7G4d;r   c                    d}d}| j                  t        |      t        |             | j                  t        |      t        |             | j                  t        |      t        |dz               | j                  t        |      t        |dz               | j                  t        |      t        |dz               | j                  t        |      t        d|z               | j                  t        |      t        |dz                G d dt              } |d	      }| j                  t        |      t        |             | j                  t        |      t        |dz               | j                  t        |      t        |dz               | j                  t        |      t        |dz               | j                  t        |      t        d|z               | j                  t        |      t        |dz               y )
Nz123abc1@z456zyx-+r   r   r   c                       e Zd Zy)5UnicodeTest.test_repeat_id_preserving.<locals>.SubStrNr'   r   r   r   SubStrro  f  r   r   rp  zqwerty())rT   idrk   rP   )r5   r   r   rp  ss        r   test_repeat_id_preservingz%UnicodeTest.test_repeat_id_preserving[  s   A1&BqE2a5)BqE2a"f:.BqE2a!e9-A1q5	*A1q5	*BqE2a!e9-	S 	 :A1&BqE2a"f:.BqE2a!e9-BqE2a!e9-BqE2a!e9-BqE2a!e9-r   c                 V   t        j                         5  t        j                  dt               | j                  ddk(  d       | j                  ddk7  d       | j                  dt        d      k(  d       | j                  dt        d      k7  d       d d d        y # 1 sw Y   y xY w)Nignorern      abcFT)r   check_warningswarningssimplefilterBytesWarningrT   	bytearrayr9   s    r   test_bytes_comparisonz!UnicodeTest.test_bytes_comparisonq  s    ++- 	?!!(L9Uf_e4Uf_d3Ui&77?Ui&77>	? 	? 	?s   BBB(c                       j                  dd        j                  ddkD          j                  ddk         	  j                  ddk         y )Nrn   rO  u   u   )rT   rU   )r5   
test_fixup
test_lecmps   `@@r   test_comparisonzUnicodeTest.test_comparisony  sJ    &''f 	78r   c                 8   t         |           | j                  ddd       | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  d	j	                                | j                  d
j	                                | j                  dj	                                y )NF   ῼislower   Ⅷ   ⅷ   𐐁   𐐧   𐐩   𐑎r      👯)supertest_islowerr]   assertFalser  rU   r5   	__class__s    r   r  zUnicodeTest.test_islower  s    UHi8))+,((*+--/0--/0,,./,,./--/0--/0r   c                 8   t         |           | j                  ddd       | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  d	j	                                | j                  d
j	                                | j                  dj	                                y )NFr  isupperr  r  r  r  r  r  r   r  )r  test_isupperr]   rU   r  r  r  s    r   r  zUnicodeTest.test_isupper  s    UHi8((*+))+,,,./,,./--/0--/0--/0--/0r   c                 V   t         |           | j                  ddd       | j                  ddd       | j                  dj	                                | j                  dj	                                dD ]1  }| j                  |j	                         dj                  |             3 y )	NTr  istitleu   Greek ῼitlecases ...u   𐐁𐐩u   𐐧𐑎)r  r  r   r  z{!a} is not title)r  test_istitler]   rU   r  r  formatr5   chr  s     r   r  zUnicodeTest.test_istitle  s    T8Y7T#>	J 	.6689.6689J 	KBRZZ\+>+E+Eb+IJ	Kr   c                     t         |           | j                  ddd       | j                  ddd       | j                  ddd       dD ]1  }| j                  |j	                         dj                  |             3 y )	NTu    isspaceu    Fu   —r  r  r  r  r   r  z{!a} is not space.)r  test_isspacer]   r  r  r  r  s     r   r  zUnicodeTest.test_isspace  sy    T8Y7T8Y7UHi8/ 	LBRZZ\+?+F+Fr+JK	Lr   cpuc                    t        t        j                  dz         D ]`  }t        |      }t	        j
                  |      }t	        j                  |      }| j                  |j                         |dv xs |dk(         b y )Nr   )WSBSZs)	r   r\  
maxunicoder   unicodedatabidirectionalcategoryrT   r  )r5   	codepointcharr  r  s        r   test_isspace_invariantz"UnicodeTest.test_isspace_invariant  st    s~~12 	4Iy>D'55d;M"++D1HT\\^+/?? 2!)T!14		4r   c                     t         |           dD ]1  }| j                  |j                         dj	                  |             3 y )N)r  r  r  r     𝟶   𑁦   𐒠   🄇z{!a} is alnum.)r  test_isalnumrU   isalnumr  r  s     r   r  zUnicodeTest.test_isalnum  sB    K 	GBOOBJJL*:*A*A"*EF	Gr   c                    t         |           | j                  ddd       | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  dj	                                | j                  d	j	                                y )
NTr  isalphar  r  r  r  r   r  )r  test_isalphar]   rU   r  r  r  s    r   r  zUnicodeTest.test_isalpha  s    T8Y7,,./,,./,,./,,./--/0--/0r   c                     t         |           | j                  dj                                | j                  dj                                y )N   €   􏿿)r  test_isasciir  isasciir  s    r   r  zUnicodeTest.test_isascii  s<    ))+,--/0r   c                 <   | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  dd	d       | j                  dd
d       | j                  ddd       | j                  t        ddd       dD ]1  }| j                  |j	                         dj                  |             3 dD ]1  }| j                  |j	                         dj                  |             3 y )NFr   	isdecimalr   T0   ①   ¼   ٠
01234567890123456789arn   r
   )r  r  r  r  r   r     𑁥r  z{!a} is not decimal.)r  r  r  z{!a} is decimal.)r]   rW  r   r  r  r  rU   r5   r  s     r   test_isdecimalzUnicodeTest.test_isdecimal	  s   UB4UC5T34UHk:UFK8T8[9T<=UM;?E;;K 	PBR\\^-C-J-J2-NO	P = 	KBOOBLLN,>,E,Eb,IJ	Kr   c                 l   t         |           | j                  ddd       | j                  ddd       | j                  ddd       dD ]1  }| j                  |j	                         dj                  |             3 d	D ]1  }| j                  |j	                         d
j                  |             3 y )NTr  isdigitFr  r  )r  r  r  r  r   r  r  z{!a} is not a digit.)r  r  r  r  z{!a} is a digit.)r  test_isdigitr]   r  r  r  rU   r  s     r   r  zUnicodeTest.test_isdigit  s    T8Y7UFI6T8Y7= 	NBRZZ\+A+H+H+LM	N K 	IBOOBJJL*<*C*CB*GH	Ir   c                 N   | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  dd	d       | j                  dd
d       | j                  ddd       | j                  t        dj                  d       dD ]1  }| j	                  |j                         dj                  |             3 dD ]1  }| j                  |j                         dj                  |             3 y )NFr   	isnumericr   Tr  r  r  r  r  r  rn   r
   r  z{!a} is not numeric.)r  r  r  r  r  z{!a} is numeric.)r]   rh   r   r  r  r  rU   r  s     r   test_isnumericzUnicodeTest.test_isnumeric'  s   UB4UC5T34T8[9T6;7T8[9T<=UM;?)U__b9/ 	PBR\\^-C-J-J2-NO	P/ 	KBOOBLLN,>,E,Eb,IJ	Kr   c                    | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  d	j                                | j                  d
j                                | j                  dj                                | j                  dj                                y )Nr   Z_b0bcb_   µu   𝔘𝔫𝔦𝔠𝔬𝔡𝔢rg   [   ©r  )rU   isidentifierr  r9   s    r   test_isidentifierzUnicodeTest.test_isidentifier:  s   ((*+((*+((*+))+,))+,))+,))+,6CCEF))+,))+,**,-))+,r   Nzneed _testcapi modulec                 0   d}| j                  |j                                t        j                         5  t	        j
                  dt               | j                  t        j                  |      j                                d d d        y # 1 sw Y   y xY w)Nu   𝖀𝖓𝖎𝖈𝖔𝖉𝖊ru  )	rU   r  r   rw  rx  ry  DeprecationWarning	_testcapiunicode_legacy_string)r5   us     r   test_isidentifier_legacyz$UnicodeTest.test_isidentifier_legacyI  sr     +()++- 	O!!(,>?OOI;;A>KKMN	O 	O 	Os   ABBc                 2   | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  dj                                | j                  d	j                                y )
Nr   rg   abcdefgzabcdefg
   ʹ   ͸   r  u   󠀠)rU   isprintabler  r9   s    r   test_isprintablezUnicodeTest.test_isprintableS  s    ())*	--/00023,,./--/0--/000231134r   c           	         dD ]_  }| j                  |j                                | j                  |j                                | j                  |j	                                a dD ]_  }| j                  |j                                | j                  |j                                | j                  |j	                                a dD ]7  }t        t        |      }dD ]   }| j                   ||      |d|d       " 9 dD ]7  }t        t        |      }dD ]   }| j                   ||      |d|d       " 9 y )	N)   ab   ab	   aba	   aba)u   ABu   ABu	   ABAu	   ABA)r  r  r  )r           .z() is False)r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )rU   r  r  r  r  rS   rP   )r5   rr  	meth_namemeths       r   test_surrogateszUnicodeTest.test_surrogatesb  s.   8 	*AOOAIIK(QYY[)QYY[)		*
8 	)AQYY[)OOAIIK(OOAIIK(		) ; 	OI3	*DI O  a9*MNO	O
9 	OI 3	*D< O   a9*MNO		Or   c                    t         j                  j                  |        | 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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       y )Nr     𐑏   𐐧𐐧   𐑏𐑏   𐐧𐑏
   X𐐧x𐑏u
   x𐑏x𐑏   ﬁ   İ   i̇   Σ   σ   ͅΣu   ͅσ   AͅΣu   aͅς   AͅΣau   aͅσa   AΣͅu   aςͅ   Σͅ u   σͅ    򏿾r  )r   r   
test_lowerrT   lowerr9   s    r   r  zUnicodeTest.test_lower}  s   **40++-|</557/	1/557/	117791	3.)>:)84--/@..0/B)//13CD..0/B..0/B..0/B++-|<)84r   c                    | 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       y )Nr   hELlo   ßssr  fir  r  r  u   aισr  u   μ)rT   casefoldr9   s    r   test_casefoldzUnicodeTest.test_casefold  s    ))+W5))+W5$/)40**,h7113_E**,h7r   c                    t         j                  j                  |        | 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j	                         d       | j                  dj	                         d       | j                  dj	                         d       | j                  dj	                         d       y )Nr  r  r  r  r  r  u
   X𐐧X𐐧r  FIr  r  r  SS   ῒ   Ϊ̀r  r  r  )r   r   
test_upperrT   upperr9   s    r   r  zUnicodeTest.test_upper  s(   **40++-|</557/	1/557/	117791	3-)84)84t,)+?@++-|<)84r   c                    t         j                  j                  |        | 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
}| j                  dj	                         |       | j                  dj	                         d       | j                  dj	                         d       y )Nr  r  r  r     𐑏𐐧r  u
   X𐑏x𐑏u   hİu   Hi̇u	   Ϊ̀i̇u   ῒİu   ﬁnnishFinnishr  u   Aͅς)r   r   test_capitalizerT   
capitalize)r5   exps     r   r  zUnicodeTest.test_capitalize  s   //5002LA/::</	1/::</	1/::</	11<<>1	3--/A.224c:..0)<335Gr   c                 b   t         |           | 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j                         d       | j                  dj                         d       y )Nr  r  r  r  u   𐑏𐑏 𐑏𐑏u   𐐧𐑏 𐐧𐑏u   𐑏𐐧 𐑏𐐧u   X𐐧x𐑏 X𐐧x𐑏u   X𐑏x𐑏 X𐑏x𐑏u   ﬁNNISHr  u	   AΣ ᾡxyu	   Aς ᾩxyu   AΣAu   Aσa)r  
test_titlerT   titler  s    r   r  zUnicodeTest.test_title  s	   ++-|</557/	1DJJLD	FDJJLD	FDJJLD	FHNNPH	J))+Y7+1135GH))+Z8r   c                    t         j                  j                  |        | 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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       | j                  dj	                         d       | j                  dj	                         d       | j                  dj	                         d       y )Nr  r  r  r  r  r  r  u
   x𐑏X𐐧r  r	  r  r  r  r  r  u   Ισr  u   aΙςr  u   aΙσAr  u   aςΙr  u   σΙ r  r
  r  r  )r   r   test_swapcaserT   swapcaser9   s    r   r  zUnicodeTest.test_swapcase  s   --d3..0,?..0,?/88:/	1/88:/	1/88:/	11::<1	3)40**,n=**,h7002NC113_E)2246FG113_E113_E113_E**,h7$/**,.BCr   c                    t         j                  j                  |        | j                  dj	                  dd      d       | j                  dj	                  dd      d       | j                  dj	                  dd      d       y )	Nr  r   r  u   x􏿿r   u	   􏿿x􏿿r   u   􏿿x􏿿􏿿)r   r   test_centerrT   centerr9   s    r   r  zUnicodeTest.test_center  sp    ++D1A|4&	(A|40	2A|4:	<r   izrequires 32-bit systemc                     d}	 d|z  }	 | j                  t        j                         ~y # t         $ r | j                  d|dz  z         Y Ew xY w# ~w xY w)NiVUU   üz$no enough memory (%.0f MiB required)i   )MemoryErrorskipTestrh   r^  r  )r5   r_  rr  s      r   test_case_operation_overflowz(UnicodeTest.test_case_operation_overflow  sc     	StA	mQWW5  	SMM@D5LQR	S
 s   ,  A  AAAc                    | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd	       | j                  dd
       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  t        dj                         dD ]e  }|dz  }dD ]Y  }| j                  ||       | j                  |||z          | j                  |dz  |       | j                  |dz  ||dz  z          [ g y )Nr   abdbbdabbdababdbabdb)r   r   N)r   Nr   )r  r   y)r  r   NrO  abcxxxxabrn   )r   Nr+  r    z abczabc asdfasd)r      Āu   𐌀r   r3  r   )assertInassertNotInrh   r   __contains__)r5   fillr:  s      r   test_containszUnicodeTest.test_contains   s
   c6"c6"c7#c6"e$c6"c<(c<(c<(c<(k*l++dF#dE"dM*b% b"b% u%dG$dG$c7#ff%'$)U%7%781 	;DAID6 ;  -eTE\2  D1eai	)9:	;	;r   c                 0   dj                          dj                          dj                          dj                          dj	                          dj                          dj                  dd       dj                  dd       dj                  dd       y )Nu   𐀀􀀀   􀀀r      𐀀)	r   r  r  r  r  r  r  ljustrjustr9   s    r   test_issue18183zUnicodeTest.test_issue18183'  sz    $$&'')$$&))+$$&'')A|,1l+1l+r   c                 5   | 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j                         d       dd l}| j                  dj                  d      d       | j                  dj                  t        d            d       | j                  dj                  d      d       |j	                  ddd      }| j                  dj                  |      d        G d d      } G d d      } G d d       } G d! d"      } G d# d$      } G d% d&|j                        } G d' d(t
              }	 G d) d*      }
 G d+ d,      }| j                  dj                         d       | j                  d-j                         d-       | j                  d.j                  d-      d-       | j                  d/j                  d-      d-       | j                  d0j                  d-      d1       | j                  d2j                  d-      d3       | j                  d4j                  d-      d5       | j                  d6j                  d7d-      d-       | j                  d8j                  d7d-      d1       | j                  d9j                  d7d-      d3       | j                  d:j                  d7d-      d5       | j                  d.j                  d;      d<       | j                  d=j                  d;d-      d>       | j                  d?j                  d;d-      d@       | j                  dAj                         dB       | j                  dCj                         dD       | j                  dEj                         dF       | j                  dGj                         dH       | j                  dIj                  dJ      dK       | j                  dLj                         dM       | j                  dNj                         dO       | j                  dPj                         dQ       | j                  dRj                  dSdTi      dT       | j                  dUj                  dVdTi      dT       | j                  dWj                  dXdYi      dZ       | j                  d[j                   |d\      ]      d^       | j                  d_j                   |d`       |d\            da       | j                  dbj                   | |d-                  d-       | j                  dcj                  d-ddg      d-       | j                  dej                  d-ddg      dd       | j                  dfj                  d-ddgg      dd       | j                  dgj                  d- |dd      gg      dd       | j                  dhj                  d-      d-       | j                  dhj                  d      d       | j                  dhj                  di      d-       | j                  djj                  di      d       | j                  dkj                  d-      d-       | j                  dlj                  d-      d-       | j                  dmj                  d-      d       | j                  dnj                  d-      do       | j                  dpj                  dq      dq       | j                  drj                  dq      dq       | j                  dsj                  dq      dq       | j                  dtj                  dq      du       | j                  dvj                  dq      dw       | j                  dxj                  dq      dy       | j                  dzj                  dq      dy       | j                  d{j                  dq      d|       | j                  d}j                  dq      d~       | j                  dj                  dq      d       | j                  dj                  dq      d       | j                  dj                  dq      d       | j                  dj                  dq      d       | j                  dj                  dq      dq       | j                  dj                  dq      d       | j                  dj                  dq      d       | j                  dj                  dq      d       | j                  dj                  dq      d       | j                  dj                  d      ddXdz  z          | j                  dj                  d      dXdz         | j                  dj                  d      dXdz         | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  dY      d       | j                  dj                  dY      d       | j                  dj                  dY      d       | j                  dj                  dY      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                   |             d-       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                   |d            d       | j                  dj                  d      d       | j                  dj                  d      d«       | j                  dj                   |d            dë       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      dū       | j                  dj                  d      d       | j                  dj                   |d            d       | j                  dj                   |d            dǫ       | j                  d.j                  i       dF       | j                  d.j                  g       dȫ       | j                  d.j                  d7g      dɫ       | j                  dj                   |d˫            d̫       | j                  dj                   |d˫            dͫ       | j                  t        dj                   |d˫             | j                  t        dj                   |d˫             | j                  t        dj                   |d˫             | j                  dj                   |dddѬҫ            dӫ       | j                  d.j                   |	d`            d^       | j                  d/j                  d      d       | j                  dj                  dd֫      d׫       | j                  dj                  dd֫      d׫       | j                  dj                  dd֬ګ      d׫       | j                  dj                  dd`d֬ܫ      dݫ       | j                  dj                  ddd߬ܫ      dݫ       | j                  t        dBj                         | j                  t        dDj                         | j                  t        dj                         | j                  t        dj                         | j                  t        dj                         | j                  t        dj                         | j                  t        d.j                         | j                  t        d6j                  d-       | j                  t        dHj                         | j                  t        dOj                         | j                  t        dj                         | j                  t        dj                         | j                  t        dj                         | j                  t        dj                  d       | j                  t        dj                         | j                  t        dj                  g        | j                  t        dj                         | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                         | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  dY       | j                  t        dj                  dY       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                         | j                  t        dj                         | j                  t        dj                         | j                  t        dFj                         d}| j                  t        dB|z   dDz   j                         | j                  t        d|z   dz   j                  dg       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        d j                  d g       | j                  t        dj                  d g       | j                  t        dj                  dd       | j                  t        dj                  d-dd       | j                  t        dj                  dd7ddYdd֐d	d

       d}| j                  t        |dj                  d       | j                  t        |t        dd       d}| j                  t        |dj                  d       | j                  t        dj                  d       | j                  t        t        dd       | j                  t        t        dd       | j                  dj                  dd      d       | j                  dhj                  d      d       | j                  djj                  d      d       | j                  dj                  dFdi      d߫       | j                  dj                  dFdi      d       | j                  dj                  dBdi      d       | j                  dj                  dDdi      d       | j                  dj                  ddi      d       | j                  dj                  ddi      d       | j                  t        dj                  d       | j                  t        d j                  d       | j                  t        d!j                  d       | j                  d"j                  dd#      d$        |
d˫      }| j                  d%j                  |      d&       | j                  t        d'j                  |       | j                  t        dFj                  |        |d˫      }| j                  d%j                  |      d(       | j                  d'j                  |      d(       | j                  t        dFj                  |       y ()  Nr   r   r+  a{{a{a}}a}{{b{b}}b}ba{{ba{br   zMy name is {0}FredzMy name is FredzMy name is {0[name]})namezMy name is {0} :-{{}}zMy name is Fred :-{}i  r     zThe year is {0.year}zThe year is 2007c                       e Zd ZddZd Zy)"UnicodeTest.test_format.<locals>.Cc                     || _         y r1   _xr5   r  s     r   r6   z+UnicodeTest.test_format.<locals>.C.__init__J  	    r   c                     |S r1   r   r5   specs     r   
__format__z-UnicodeTest.test_format.<locals>.C.__format__L      r   Nr   r(   r)   r*   r6   rS  r   r   r   CrJ  I      r   rW  c                       e Zd Zd Zd Zy)"UnicodeTest.test_format.<locals>.Dc                     || _         y r1   r  rN  s     r   r6   z+UnicodeTest.test_format.<locals>.D.__init__P  	    r   c                 ,    t        | j                        S r1   )rP   r  rQ  s     r   rS  z-UnicodeTest.test_format.<locals>.D.__format__R  s    466{"r   NrV  r   r   r   DrZ  O  s    #r   r_  c                       e Zd Zd Zd Zy)"UnicodeTest.test_format.<locals>.Ec                     || _         y r1   r\  rN  s     r   r6   z+UnicodeTest.test_format.<locals>.E.__init__W  r]  r   c                 &    d| j                   z   dz   S )NzE()r\  r9   s    r   r:   z*UnicodeTest.test_format.<locals>.E.__str__Y      dff}s**r   Nr<   r   r   r   Era  V      +r   rf  c                       e Zd Zd Zd Zy)"UnicodeTest.test_format.<locals>.Fc                     || _         y r1   r\  rN  s     r   r6   z+UnicodeTest.test_format.<locals>.F.__init__^  r]  r   c                 &    d| j                   z   dz   S )NzF(rd  r\  r9   s    r   rB   z+UnicodeTest.test_format.<locals>.F.__repr__`  re  r   NrC   r   r   r   Fri  ]  rg  r   rl  c                       e Zd Zd Zd Zd Zy)"UnicodeTest.test_format.<locals>.Gc                     || _         y r1   r\  rN  s     r   r6   z+UnicodeTest.test_format.<locals>.G.__init__e  r]  r   c                      d| j                   z   S )Nz
string is r\  r9   s    r   r:   z*UnicodeTest.test_format.<locals>.G.__str__g  s    #dff,,r   c                 \    |dk(  rd| j                   z   dz   S t        j                  | |      S )Nr  zG(rd  )r  rX   rS  r5   format_specs     r   rS  z-UnicodeTest.test_format.<locals>.G.__format__i  s0    #%$&&=3..(({;;r   N)r(   r)   r*   r6   r:   rS  r   r   r   Grn  d  s    -<r   rt  c                       e Zd Zd Zy)"UnicodeTest.test_format.<locals>.Ic                 $    | j                  |      S r1   )strftimerr  s     r   rS  z-UnicodeTest.test_format.<locals>.I.__format__o  s    }}[11r   Nr(   r)   r*   rS  r   r   r   Irv  n  s    2r   rz  c                       e Zd Zd Zy)"UnicodeTest.test_format.<locals>.Jc                 4    t         j                  | dz  |      S )Nr   )r[  rS  rr  s     r   rS  z-UnicodeTest.test_format.<locals>.J.__format__s  s    ~~dQh<<r   Nry  r   r   r   Jr|  r  s    =r   r~  c                       e Zd Zd Zd ZdZy)"UnicodeTest.test_format.<locals>.Mc                     || _         y r1   r\  rN  s     r   r6   z+UnicodeTest.test_format.<locals>.M.__init__w  r]  r   c                 &    d| j                   z   dz   S )NzM(rd  r\  r9   s    r   rB   z+UnicodeTest.test_format.<locals>.M.__repr__y  re  r   N)r(   r)   r*   r6   rB   r:   r   r   r   Mr  v  s    +Gr   r  c                       e Zd Zd Zd ZdZy)"UnicodeTest.test_format.<locals>.Nc                     || _         y r1   r\  rN  s     r   r6   z+UnicodeTest.test_format.<locals>.N.__init__~  r]  r   c                 &    d| j                   z   dz   S )NzN(rd  r\  r9   s    r   rB   z+UnicodeTest.test_format.<locals>.N.__repr__  re  r   N)r(   r)   r*   r6   rB   rS  r   r   r   Nr  }  s    +Jr   r  rn   {0}z{0:}zX{0}Xabcz{0}XabcXzX{0}YXabcYz{1}r   zX{1}z{1}XzX{1}Yiz-15z{0}{1}z-15abcz{0}X{1}z-15Xabcz{{{z}}}z{{}}{}z{{x}}z{x}z{{{0}}}{   z{123}z	{{{{0}}}}z{{0}}z}}{{z}{z}}x{{z}x{z{0[foo-bar]}zfoo-barbazz{0[foo bar]}zfoo barz{0[ ]}rg   r   rT  {foo._x}   )rS  20z{1}{0}r   2010z{0._x.x}z{0[0]}r   z{0[1]}z	{0[1][0]}z{0[1][0].x}z{0:.3s}abcdefz{0:.0s}z{0:3.3s}z{0:2.3s}z{0:2.2s}z{0:3.2s}zab z{0:x<0s}rW   z{0:x<5s}z{0:x<6s}z{0:x<7s}resultxz{0:x<8s}resultxxz{0: <7s}zresult z{0:<7s}z{0:>7s}z resultz{0:>8s}z  resultz{0:^8s}z result z{0:^9s}z	 result  z{0:^10s}z
  result  z{0:8s}zresult  z{0:0s}z{0:08s}result00z{0:<08s}z{0:>08s}00resultz{0:^08s}0result0z	{0:10000}i'  i'  z{0:10000000}i z{0: <6s}rS  zfoo   z{0:<6s}zfooz{0: ^6s}z foo  z{0:^6s}z foo  z{0: <6}z3     z{0:<6}z3z{0: ^6}z  3   z{0:<6}z3     Q	@z3.14  z3.14z 3.14 z{0:^6}z 3.14 z{0: <12}y      @       @z(3+2j)      z{0:<12}z(3+2j)z{0: ^12}z   (3+2j)   z{0:^12}z   (3+2j)   z{0:abc}z{0!s}Helloz{0!s:}z{0!s:15}zHello          z	{0!s:15s}z{0!r}z'Hello'z{0!r:}zF(Hello)r  z'\u0378'r  u   'ʹ'u   F(ʹ)z{0!a}z'\u0374'z{0!a:}z	F(\u0374)r  z[1]z{0:d}datazG(data)zstring is dataz{0:^10}z{0:>15s}z{0:date: %Y-%m-%d}   )yearmonthdayzdate: 2007-08-27z{0:.{1}}hello world   r   z	{0:.{1}s}z{0:.{precision}s})	precisionz{0:{width}.{precision}s})widthr  z
hello     105{a}azabc{0:{}z{0z{0.}z{0[}z{0]}z{0.[]}z{0..foo}z{0[0}z	{0[0:foo}z{c]}z	{{ {{{0}}z{0}}z{foo})barz{0!x}z{0!}z{0!rs}z{!}z{:}z{:s},23098475029384702983476098230754973209482573z{[z]}z{0:x}              ?      ?z{0:X}z{0:o}z{0:u}z{0:i}z{0[0]x}z
{0[0](10)}z{0[{1}]}r  r   z{0:{1:{2}}}rr  z{0:{1:{2:{3:{4:{5:{6}}}}}}}r   r   r   z+Sign not allowed in string format specifierz{0:-s}-z,Space not allowed in string format specifierz{: }z{0:=s}#z#20z
{0:s}{1:s}ABCu   АБВu	   ABCАБВz{[{}]}z{[{]}z{[}]}z{[[]}r  z{[!]}rd  z{a{}b}r
   z{a{b}z{[}z0x{:0{:d}X}   0x0000000000000000{!r}zM(data)z{!s}zN(data))rT   r  datetimedictdater[  rh   r   r  
IndexErrorKeyErrorassertRaisesRegex)r5   r  r  rW  r_  rf  rl  rt  rz  r~  r  r  bigsign_msg	space_msgmns                    r   test_formatzUnicodeTest.test_format2  s   b)s+-....%0 	)008:KL/66t7HI*	,077?/	1 MM$2&/66q9+	-	 		# 	#	+ 	+	+ 	+	< 	<	2 	2	= 	=	 		 	 	b)/e,e4u-u5u-v6u-v6.8a/7q%0&9q%0&9517;c*E2e4h?))#u5yA,,$/)51))#.8++-w7$/)51 	..	%/@A5I..	%/@A5I#a137**qu*5t<2"6?**1QuX;7?%8%@%8%@++UUG,<=uE--uqxj.ABEJ 	))%0%8))$/6))(3U;))(3R8**5159**5159**5148**5159**84h?**84h?**84h?**84i@**84jA**84i@))(3Y?))(3Y?))(3Z@))(3Z@))(3[A**84lC2J?2H=))(3Z@**84jA**84jA**84jA++C0#d
2BC++B/u=..r2C(NC 	--e46GH--e46GH--e46GH))%0(;,,Q/1HI,,Q/1HI,,Q/1HI+X6,,T2NC,,T2NC,,T2NC.9--f57WX--f57WX--f57WX))&1>B 	))!#.6 	0':17;**735FG++G46GH0)<19='
3Z@1;?1:>(4kB0)<1;?1;?19='
3Z@(4lC 	b)40b)40qc*E2&	2I>&	24DE)Y%5%5qyA)Z%6%6&	B)Z%6%6&	B-44QD=>;=6? @ ,	- 	ae,d3 	s+S1 	**=!<gF++M1=wG,33MQ3OQXY3::=PR^_:`bno3::=PT`c:dfrs 	*cjj1*cjj1*dkk2*dkk2*dkk2*dkk2*ell3*ellE:(ell3*dkk2*j&7&78*dkk2*fmm4*fmmQ7*fmm4*fmmR8(fmm4*hooq9*j&7&7;*gnna8*k&8&8!<(fmm4*k&8&8!<*fmmQ7(gnn!<*gnna8*fmmQ7*hooq9*ell3*ell3*fmm4*dkk2<*sSy3&>&>?*tczD'8&@&@1#F 	*gnnb9*gnnc:*gnnb9*gnnc:*gnnb9*gnnc:*gnnb9*gnnc:*gnnb9*gnnc:*gnnb9*gnnc: 	*i&6&6?*l&9&9D6B 	)Z%6%6	1E 	*m&:&:E3K*&C&J&JQ1aAq	2 Az8X__bIz8VREB	z9fmmRH*hoor: 	*fb#6*fb%8 	,,U4HI0	2))*AB	 ))*AB	 	$3S9$6<s4c:s4c:s4c:s4c:*hoor:*gnnb9*ellB7--c"57KL fIq)95)V]]A6)T[[!4fIq)95q)95)T[[!4r   c                 T   | j                  dj                  i       d       | j                  dj                  i       d       | j                  dj                  i       d       | j                  dj                  i       d       | j                  dj                  i       d       | j                  dj                  i       d	       | j                  d
j                  i       d       | j                  dj                  i       d        G d dt              }| j                  dj                   |             d       | j                  dj                   |d            d        G d d      }| j                  dj                   |             d        G d d      }| j                  dj                  d |d      i      d       | j                  t        dj                         | j                  t        dj                         | j                  t
        dj                  i        | j                  t
        dj                  i        | j                  t
        dj                  i        | j                  t
        dj                  i        | j                  t
        d j                  i        | j                  t
        d!j                  i        | j                  t
        d"j                  dd#i       | j                  t
        d"j                  d       | j                  t
        d$j                  d#d%d&        G d' d(      }| j                  t        dj                  i        | j                  t        dj                  g        | j                  t        dj                   |              y ))Nr   r   r+  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  c                       e Zd Zd Zy),UnicodeTest.test_format_map.<locals>.Mappingc                     |S r1   r   r5   keys     r   __missing__z8UnicodeTest.test_format_map.<locals>.Mapping.__missing__  s    
r   N)r(   r)   r*   r  r   r   r   Mappingr        r   r  z{hello}r   z{a} {world})r   r  c                       e Zd Zd Zd Zy)4UnicodeTest.test_format_map.<locals>.InternalMappingc                     ddi| _         y )Nr   r   r,  r9   s    r   r6   z=UnicodeTest.test_format_map.<locals>.InternalMapping.__init__  s     #W~r   c                      | j                   |   S r1   r  r  s     r   __getitem__z@UnicodeTest.test_format_map.<locals>.InternalMapping.__getitem__  s    ||C((r   N)r(   r)   r*   r6   r  r   r   r   InternalMappingr    s    .)r   r  z{a}c                       e Zd ZddZd Zy)&UnicodeTest.test_format_map.<locals>.Cc                     || _         y r1   rL  rN  s     r   r6   z/UnicodeTest.test_format_map.<locals>.C.__init__  rO  r   c                     |S r1   r   rQ  s     r   rS  z1UnicodeTest.test_format_map.<locals>.C.__format__  rT  r   NrU  rV  r   r   r   rW  r    rX  r   rW  r  rS  r  r  r  r  r  r  r  r   z{a} {}r   r  c                       e Zd Zd Zy)/UnicodeTest.test_format_map.<locals>.BadMappingc                     ddz  S )Nr   r   r   r  s     r   r  z;UnicodeTest.test_format_map.<locals>.BadMapping.__getitem__  s    s
r   N)r(   r)   r*   r  r   r   r   
BadMappingr    r  r   r  )rT   
format_mapr  rh   r   r  r  ZeroDivisionError)r5   r  r  rW  r  s        r   test_format_mapzUnicodeTest.test_format_mapz  s   r*B/+S1,d3))"-t4))"-t4))"-t4))"-t4**2.6	d 	 	--gi8'B11'G2DE}U	) 	)
 	))/*;<gF	 	
 	..qu~>E 	)R]]3)S^^4*cnnb9*cnnb9*door:*door:*door:*door: 	*dooayA*doos;*h&9&9!1;MN	 	 	(E$4$4b9)U%5%5r:+U-=-=z|Lr   c                     dj                  t        j                  dz         }| j                  t              5  t        d|      }d d d        y # 1 sw Y   y xY w)Nz.{}fr   Q@r  r\  r]  rh   r  r5   format_stringrW   s      r   test_format_huge_precisionz&UnicodeTest.test_format_huge_precision  sG    ckkAo6z* 	1D-0F	1 	1 	1   AAc                     dj                  t        j                  dz         }| j                  t              5  t        d|      }d d d        y # 1 sw Y   y xY w)Nz{}fr   r  r  r  s      r   test_format_huge_widthz"UnicodeTest.test_format_huge_width  sG    S[[1_5z* 	1D-0F	1 	1 	1r  c                     dj                  t        j                  dz         }| j                  t              5  |j                  d      }d d d        y # 1 sw Y   y xY w)Nz
{{{}:.6f}}r   r  r  r  s      r   test_format_huge_item_numberz(UnicodeTest.test_format_huge_item_number  sM    $++CKK!O<z* 	0"))$/F	0 	0 	0s   AAc                     G d d      }| j                  dj                  d      d       | j                  dj                  d      d       | j                  d	j                  d      d
       | j                  dj                   |d            d       | j                  dj                  ddg      d       | j                  dj                  ddd      d       | j                  dj                  dd      d       | j                  dj                  dd      d       | j                  dj                  dd      d       | j                  t        dj                  dd       | j                  t        d j                  dd       | j                  t        d!j                  dd       | j                  t        d"j                  dd       | j                  d#j                  dd$%      d&       | j                  d'j                  dd$%      d(       | j                  d)j                  dd*d+d,      d-       | j                  d.j                  dddd+/      d0       y )1Nc                       e Zd ZddZd Zy)1UnicodeTest.test_format_auto_numbering.<locals>.Cc                     || _         y r1   rL  rN  s     r   r6   z:UnicodeTest.test_format_auto_numbering.<locals>.C.__init__  rO  r   c                     |S r1   r   rQ  s     r   rS  z<UnicodeTest.test_format_auto_numbering.<locals>.C.__format__  rT  r   NrU  rV  r   r   r   rW  r    rX  r   rW  r  r   r  z{:5}rr  zs    r  z's'z{._x}z{[1]}r   r   rR  z{[a]}r   r  4za{}b{}cr   a0b1cza{:{}}br  z^10za    x     bza{:{}x}br  r  a0x14bz{}{1}z{1}{}z{:{1}}z{0:{}}z{f}{}test)ftest4z{}{f}4testz{:{f}}{g}{}r   g)r  r  z 1g3z{f:{}}{}{g})r  r  z 14g)rT   r  rh   r  )r5   rW  s     r   test_format_auto_numberingz&UnicodeTest.test_format_auto_numbering  s   	 	 	R$/s+W5s+U3".5A/5QA7=))!Q/9))#u5~F**2s3X> 	*gnna;*gnna;*hooq!<*hooq!< 	V4g>V4g>--acQ-?H--aa3-?Hr   c                    t         j                  j                  |        | j                  ddz  d       | j                  ddz  d       | j                  ddz  d       | j                  dd	z  d
       | j                  ddz  d       | j                  ddz  d       | j                  ddz  d       | j                  ddz  d       | j                  ddz  d       | j                  ddddz  d       | j                  ddddz  d       | j                  ddz  d        | j                  dd!z  d"       | j	                  t
        dj                  d#       | j                  dd"z  d"       | j	                  t        dj                  d$       | j	                  t        d%j                  d&       | j	                  t        d'j                  d$       | j                  d(d)diz  d*       | j                  d(d)diz  d*       | j                  d(d)diz  d*       | j                  d(d)diz  d*       | j                  d(dd+d,z  d*       | j                  d(dd+d,z  d*       | j                  d-d.z  d/       | j                  d0d.z  d1       | j                  d2dz  d*       | j                  d3d4z  d5       | j                  d3d6z  d7       | j                  d8d9z  d:       | j                  d8d;z  d5       | j                  d<d=z  d>       | j                  d?d@z  dA       | j                  ddBz  dB        G dC dD      }| j                  dE |       z  d        t        dF      }t        dG      }| j                  dH|z  dF       | j                  dI|z  dJ       | j                  dH|z  dG       | j                  dI|z  dK       | j                  dLdMz  dB       | j                  dNdMz  dO        G dP dQ      } G dR dS      } |dT      } |dU      }| j                  dVdWz  dX       | j                  dYdZz  d[       | j                  d\d]z  d^       | j                  ddUz  d_       | j                  dV|z  d`       | j                  dY|z  da       | j                  d\|z  db       | j                  d|z  d_       | j                  t        dct        j                  dVdd       | j                  t        det        j                  dYdf       | j                  t        dgt        j                  d\dh       | j                  t        dit        j                  dV|       | j                  t        djt        j                  dVdk       | j                  t        dlt        j                  dYdm       | j                  t        dnt        j                  d\do       | j                  t        dpt        j                  dqdk       | j                  t        drt        j                  d'dm       | j                  t        dst        j                  dtdo       | j                  t        dut        j                  d|        G dv dw      } |       }	| j                  t        dxt        j                  dt|	       | j                  t        dxt        j                  d'|	       | j                  t        dxt        j                  dq|	       | j                  t        dyt        j                  dV|	       | j                  t        dyt        j                  dY|	       | j                  t        dyt        j                  d\|	       y )zNz%s, %s)rn   rn   abc, abcz%s, %s, %i, %f, %5.2f)rn   rn   r   r   r   zabc, abc, 1, 2.000000,  3.00)rn   rn   r   r   zabc, abc, 1, -2.000000,  3.00)rn   rn   r   r  g      @zabc, abc, -1, -2.000000,  3.50)rn   rn   r   r  g(\@zabc, abc, -1, -2.000000,  3.57)rn   rn   r   r  g(\\@z abc, abc, -1, -2.000000, 1003.57z%r, %r)rv  rn   zb'abc', 'abc'z%r)   ሴu   'ሴ'z%az'\u1234'z%(x)s, %(y)srn   r   )r  r)  zabc, defu   %(x)s, %(ü)s)r  r  z%ci4  r  i u   𡒃)rf   aau   %.1ဲfgUUUUUU?z%i...%(foo)s...rS  	...abc...r  rS  r   z...%s...%s...%s...%s...)r   r   r   rn   z...1...2...3...abc...z"...%%...%%s...%s...%s...%s...%s...z...%...%s...1...2...3...abc...z...%s...z%*s)r  rn   z  abc)rn   zabc  z%*.*s)r  r   rn   z   ab)r  r   rn   z%i %*.*s)r   r  r   rn   z10   abcz
%i%s %*.*s)r   r   r  r   rn   z	103   abcr   c                       e Zd Zd Zy),UnicodeTest.test_formatting.<locals>.Wrapperc                      y)Nr  r   r9   s    r   r:   z4UnicodeTest.test_formatting.<locals>.Wrapper.__str__  s    r   Nr(   r)   r*   r:   r   r   r   Wrapperr    s     r   r  %snaninfz%fz%FNANINFz%.1su   aé€z%.2su   aéc                       e Zd Zd Zd Zd Zy).UnicodeTest.test_formatting.<locals>.PseudoIntc                 $    t        |      | _        y r1   r[  r3   r4   s     r   r6   z7UnicodeTest.test_formatting.<locals>.PseudoInt.__init__  s     Z
r   c                     | j                   S r1   r2   r9   s    r   __int__z6UnicodeTest.test_formatting.<locals>.PseudoInt.__int__      zz!r   c                     | j                   S r1   r2   r9   s    r   	__index__z8UnicodeTest.test_formatting.<locals>.PseudoInt.__index__  r  r   N)r(   r)   r*   r6   r  r  r   r   r   	PseudoIntr	    s    (""r   r  c                       e Zd Zd Zd Zy)0UnicodeTest.test_formatting.<locals>.PseudoFloatc                 $    t        |      | _        y r1   )floatr3   r4   s     r   r6   z9UnicodeTest.test_formatting.<locals>.PseudoFloat.__init__   s    "5\
r   c                 ,    t        | j                        S r1   r  r9   s    r   r  z8UnicodeTest.test_formatting.<locals>.PseudoFloat.__int__"  s    4::&r   N)r(   r)   r*   r6   r  r   r   r   PseudoFloatr    s    *'r   r  go!	@m   z%xr
   2az%X   rl  z%or   11r  6d6D155z,%x format: an integer is required, not floatr  z,%X format: an integer is required, not floatgzG @z,%o format: an integer is required, not floatgp=
ף?z2%x format: an integer is required, not PseudoFloatz.%x format: an integer is required, not complexy              @z.%X format: an integer is required, not complexy               @z.%o format: an integer is required, not complexr  z1%u format: a real number is required, not complexz%uz1%i format: a real number is required, not complexz1%d format: a real number is required, not complexz%dz%c requires int or charc                       e Zd Zd Zd Zy)2UnicodeTest.test_formatting.<locals>.RaisingNumberc                     t        d      )Nr[  RuntimeErrorr9   s    r   r  z:UnicodeTest.test_formatting.<locals>.RaisingNumber.__int__;  s    "5))r   c                     t        d      )Nr   r"  r9   s    r   r  z<UnicodeTest.test_formatting.<locals>.RaisingNumber.__index__=  s    "7++r   N)r(   r)   r*   r  r  r   r   r   RaisingNumberr   :  s    *,r   r%  r[  r   )r   rB  test_formattingrT   rh   r^  __mod__r   r  r  r  operatormodr#  )
r5   r  r  r  r  r  piletter_mr%  rns
             r   r&  zUnicodeTest.test_formatting  s   22BB4HN2J?03JJLjk03KKMlm03NNPpq03OOQqr03RRTvwO3_E+Z8+[9u%*@@*M*%-FF
S16-{C,l;)T\\48*l&:&:UD)T\\48 	E%=8+FE%=8+FE%=8+FE%=8+F%c+BB[Q%c+BBKP2]BD[\=MOope+[9+W5,g6</9</9&66
C(=={KS)	  	  		)84 ElElU+U+U+U+ 	-/5-/9	" 	"	' 	'
  S>D)C(4(S)$/$/%0#.y*XZbZfZfhlnrsy*XZbZfZfhlnrsy*XZbZfZfhlnrsy*^`h`l`lnrtvwy*Z\d\h\hjnprsy*Z\d\h\hjnprsy*Z\d\h\hjnprsy*]_g_k_kmqsuvy*]_g_k_kmqsuvy*]_g_k_kmqsuvy*CX\\SWY[\	, 	, _|UHLL$K|UHLL$K|UHLL$K|WhllD"M|WhllD"M|WhllD"Mr   c           
         dd l } G d dt        |j                        } G d d|j                        } G d d|j                        }| j                  |j                  d|j                  d	       | j                  d
|j                  |j                  |j                  |j                  |j                  |j                  |j                  fz  d       | j                  dd|j                  iz  d       | j                  dd|j                  iz  d       | j                  dd|j                  iz  d       | j                  dd|j                  iz  d       | j                  dd|j                  iz  d       | j                  d|j                  |j                  dz  d       | j                  d|j                  ddz  d       y )Nr   c                       e Zd ZdZy)4UnicodeTest.test_formatting_with_enum.<locals>.FloatgJM!	@N)r(   r)   r*   PIr   r   r   Floatr/  K  s    Br   r1  c                       e Zd ZdZy)2UnicodeTest.test_formatting_with_enum.<locals>.Intr  N)r(   r)   r*   IDESr   r   r   Intr3  N  s    Dr   r5  c                       e Zd ZdZy)2UnicodeTest.test_formatting_with_enum.<locals>.Strrn   N)r(   r)   r*   r  r   r   r   Strr7  Q  s    Cr   r8  z, r  z%s, %s, %d, %i, %u, %f, %5.2fz%abc, abc, 15, 15, 15, 3.141593,  3.14r  rS  r  z...%(foo)r...z...<Int.IDES: 15>...z...15...z...%(foo)i...z...%(foo)d...z...%(foo)u...r  z...%(foo)f...r  z...3.141593...)	enumr  EnumIntEnumStrEnumrT   r  r4  r0  )r5   r9  r1  r5  r8  s        r   test_formatting_with_enumz%UnicodeTest.test_formatting_with_enumH  s   	E499 		$,, 		$,, 	 	SWWcgg6#	%8#''388SXX588-- A		B 	E#''?:$	&E#((+;;/	1E#((+;;#	%E#((+;;#	%E#((+;;#	%#((%((+KK#	%%((+EE)	+r   c                     dj                  t        j                  dz         }| j                  t              5  |dz  }d d d        y # 1 sw Y   y xY wNz%.{}fr   r  r  r  s      r   test_formatting_huge_precisionz*UnicodeTest.test_formatting_huge_precisionm  sE    s{{Q7z* 	*"T)F	* 	* 	*   AAc                 X     G d dt               }| j                  d |d      z  d       y )Nc                       e Zd Zd Zy)BUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStrc                 $    dj                  |      S )Nz'Success, self.__rmod__({!r}) was calledr  )r5   others     r   __rmod__zKUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStr.__rmod__v  s    @GGNNr   N)r(   r)   r*   rH  r   r   r   SubclassedStrrD  u  s    Or   rI  z	lhs %% %rrhsz.Success, self.__rmod__('lhs %% %r') was calledrP   rT   )r5   rI  s     r   test_issue28598_strsubclass_rhsz+UnicodeTest.test_issue28598_strsubclass_rhsr  s0    	OC 	O 	}U';;I	Kr   c                     dj                  t        j                  dz         }| j                  t              5  |dz  }d d d        y # 1 sw Y   y xY wr?  )r  r  INT_MAXrh   r  r  s      r   'test_formatting_huge_precision_c_limitsz3UnicodeTest.test_formatting_huge_precision_c_limits{  sJ      y'8'81'<=z* 	*"T)F	* 	* 	*rA  c                     dj                  t        j                  dz         }| j                  t              5  |dz  }d d d        y # 1 sw Y   y xY w)Nz%{}fr   r  r  r  s      r   test_formatting_huge_widthz&UnicodeTest.test_formatting_huge_width  sE    ckkAo6z* 	*"T)F	* 	* 	*rA  c                    dj                   dj                  fD ]b  }| j                  t              5 } |dg       d d d        t	        j
                        }| j                  d|       | j                  d|       d y # 1 sw Y   ExY w)NrS  r  rP   r   )
startswithendswithrh   r   rP   	exceptionr0  )r5   r  cmexcs       r   test_startswith_endswith_errorsz+UnicodeTest.test_startswith_endswith_errors  sx    %%u~~6 	(D""9- cUbll#CMM%%MM'3'	( s   
A??B	LC_ALLde_DEfr_FRc                 .    | j                  dddz         y )Nz1.0z%.1fr  rT   r9   s    r   test_format_floatzUnicodeTest.test_format_float  s     	-r   c           	         | j                  t        d      d       dD ]  }t        |      }| j                  t        |      |       | j                  t        |      t        |             |dk(  sS| j                  |j	                  d      d       | j                  |j	                  d      d        | j                  t        d      d        G d d      }| j                  t         |d	            d	        |d
      }| j                  t        |      d
       | j                  t        |      d
       dD ]/  }| j                  t        |      t        t        |                   1 | j                  t        t        ddd       | j                  t        ddd      d       | j                  t        t        d      dd      d       | j                  t        t        ddd       y )Nzunicode remains unicode)r   r   r  r  r   s   asciiutf-8z strings are converted to unicodec                       e Zd Zd Zd Zy)2UnicodeTest.test_constructor.<locals>.StringCompatc                     || _         y r1   r\  rN  s     r   r6   z;UnicodeTest.test_constructor.<locals>.StringCompat.__init__  r]  r   c                     | j                   S r1   r\  r9   s    r   r:   z:UnicodeTest.test_constructor.<locals>.StringCompat.__str__  s    vvr   Nr<   r   r   r   StringCompatrb    s    r   re  z)__str__ compatible objects are recognizedz#unicode(obj) is compatible to str())r  g^@r  z!decoding unicode is not supportedr   s   strings are decoded to unicodezstrings are decoded to unicodes(   character buffers are decoded to unicodez(character buffers are decoded to unicoder
   )rT   rP   r&   lenr!   rh   r   
memoryview)r5   r#   subclassre  oobjs         r   test_constructorzUnicodeTest.test_constructor  s    	)*%	

 > 	ED"4(HS]D1S]CI6w  !98D  !98D	E 	23.	

	 	 	HIJ7	
 >?Q!FGQ!FG% 	6CSXs3s8}5	6 	/	
 	17HE,	

 	FG
 7	
 	)S"b"5r   c                     | j                  t        d      d       | j                  t        dd      d       | j                  t        dd      d       | j                  t        dd      d       y	)
z>Pass various keyword argument combinations to the constructor.rS  )rX   s   foor`  )rX   r   r   r   )rX   r   N)rT   rP   r9   s    r   test_constructor_keyword_argsz)UnicodeTest.test_constructor_keyword_args  s^     	E*E2FW=uEVH5u=F8<eDr   c                    | j                  t               d       | j                  t        d      d       dj                  d      }| j                  t        |d      d       | j                  t        t        |d       y)	z(Check the constructor argument defaults.r   r   rm     ¢r`  r   )r   N)rT   rP   r!   rh   UnicodeDecodeError)r5   	utf8_cents     r   test_constructor_defaultsz%UnicodeTest.test_constructor_defaults  sh     	#H-r2KK(	Yx8$?,c9wOr   c                    g d}|D ]&  \  }}| j                  |j                  d      |       ( | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  d	j                  d      d
       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  d
j                  d      d	       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  dd      d       d}d}|D ]b  }| j                  |j                  d      |j                  d             | j                  |j                  d      j                  d      |       d |D ]2  }| j                  |j                  d      j                  d      |       4 | j                  t        d      5  dj                  d       d d d        y # 1 sw Y   y xY w)N))u   A≢Α.s	   A+ImIDkQ.)u   Hi Mom -☺-!s   Hi Mom -+Jjo--!)u	   日本語s
   +ZeVnLIqe-)u   Item 3 is £1.s   Item 3 is +AKM-1.)+s   +-)z+-s   +--z+?s   +-?)z\?s   +AFw?rv  )z\\?s   +AFwAXA?)z\\\?s
   +AFwAXABc?)z++--s   +-+---)u   򫳞s   +2m/c3g-)/   /utf-7u   s   +2AE-u   xs   +2AE-xu   s   +3AE-u   xs   +3AE-xu   򫳞s
   +2AHab9ze-s   +ru  r   zGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?z!"#$%&*;<=>@[]^_`{|}utf7r   zill-formed sequences   +@)rT   r!   r"   r  rq  )r5   utfTestsr  r)  set_dset_or  s          r   test_codecs_utf7zUnicodeTest.test_codecs_utf7  s0   
"  	3FQQXXg.2	3 	18<))'2I>18<))'2I>18<))'2I>18<))'2I>+227;]K--g68JK 	(;R@ Z& 	BAQXXf-qxx/@AQXXg.55f=qA	B  	BAQXXg.55f=qA	B ##$6$9; 	"LL!	" 	" 	"s   I//I8c                    | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d	       | j                  d
j                  dd      d       | j                  dj                  dd      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  t        d	d      d       | j                  t        dd      d       | j                  t        dd      d       y )Nr   r`  r   r  s   €u   𐀂s   𐀂u   𣑖s   𣑖r  surrogatepasss   u   s   u(   𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂s(   𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂u   正確に言うと翻訳はされていません。一部はドイツ語ですが、あとはでたらめです。実際には「Wenn ist das Nunstuck git unds   正確に言うと翻訳はされていません。一部はドイツ語ですが、あとはでたらめです。実際には「Wenn ist das Nunstuck git und)rT   r!   rP   r9   s    r   test_codecs_utf8zUnicodeTest.test_codecs_utf8  s,   7+S11?C,,W57JK,,W57JK/BOT/BOT/11':/	1 
 !'w	9	
( 	0':LJ0':LJ_g6Br   c                 b    g d}|D ]&  \  }}| j                  |j                  d      |       ( y )N))    r,  )   ar   )   )s      )s   ߿u   ߿)s   ࠀu   ࠀ)s   ퟿u   ퟿)s   u   )s   ￿re   )s   𐀀r7  )s   􏿿r  r`  )rT   r"   )r5   	sequencesr`  ress       r    test_utf8_decode_valid_sequencesz,UnicodeTest.test_utf8_decode_valid_sequencesD  s7    
	 " 	7HCSZZ0#6	7r   c                 v   t        dd      D cg c]  }t        |g       }}t        dd      D cg c]  }t        |g       }}t        dd      D cg c]  }t        |g       }}||z   |z   t        dd      D cg c]  }t        |g       c}z   }|D ]#  }| j                  t        |j                  d       % |D ]-  }|D ]&  }| j                  t        ||z   j                  d       ( / |D ]@  }|d d	 D ]6  }	|d d	 D ],  }
| j                  t        ||	z   d
z   |
z   j                  d       . 8 B t        dd      D cg c]  }t        |g       c}D ]P  }| j                  t        d|z   d
z   j                  d       | j                  t        d|z   dz   j                  d       R t        dd      D cg c]  }t        |g       c}D ]P  }| j                  t        d|z   d
z   j                  d       | j                  t        d|z   dz   j                  d       R t        dd      D cg c]  }t        |g       c}D ]P  }| j                  t        d|z   dz   j                  d       | j                  t        d|z   dz   j                  d       R t        dd      D cg c]  }t        |g       c}D ]P  }| j                  t        d|z   dz   j                  d       | j                  t        d|z   dz   j                  d       R y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )N                  r   r`  r                           s      )r   rX  rh   rq  r"   )r5   r  continuation_bytesinvalid_2B_seq_start_bytesinvalid_4B_seq_start_bytesinvalid_start_bytesbytesbcbcb1cb3s              r   "test_utf8_decode_invalid_sequencesz.UnicodeTest.test_utf8_decode_invalid_sequencesU  su   27d2CDQeQCjDD:?d:K%LQeQCj%L"%L:?d:K%LQeQCj%L"%L!;;&'>CD%>P)Q%*)QR 	
 ( 	HD0$++wG	H - 	OB( O!!"4r"unngNO	O - 	LB)"1- L-bq1 LC%%&8')#vg~c'9&A&A7LLL	L (-T4'89!5!:9 	DB0&rz'1997D0&rz'1997D	D (-T4'89!5!:9 	DB0&rz'1997D0&rz'1997D	D
 (-T4'89!5!:9 	HB0&rz+5==wH0&rz+5==wH	H
 (-T4'89!5!:9 	HB0&rz+5==wH0&rz+5==wH	HO E%L%L *R  : :
 :
 :s.   LLL?L"L';L,2L1)L6c                    d}g d|fd|dz  fd|fd|dz  fd|fd|dz  fd	|dz  fd
|fd|dz  fd|dz  fd|dz   fd|fd|dz  fd|dz  fd|dz  fd|fd|dz   fd|dz   |z   fd|dz   fd|dz   fd|dz  dz   fd|dz   |z   fd|fd|dz  fd|dz  fd |dz  fd!|d"z  fd#|fd$|fd%|dz   fd&|dz   fd'|dz   fd(|dz   |z   fd)|dz   |dz  z   fd*|dz   |z   dz   fd+|dz   |z   fd,|dz   |z   fd-|dz   |dz  z   fd.|dz  dz   fd/|dz   |dz  z   fd0|fd1|dz  fd2|dz  fd3|dz  fd4|dz  fd5|dz  dz   fd6|dz  dz   |z   fd7|dz   |dz  z   dz   fd8|fd9|dz  fd:|dz  fd;|dz  dz   fd<|d"z  fd=|fd>|dz  fd?|dz  fd@|dAz  fdB|fdC|dz  fdDdEdFdG}t        |      D ]  \  }\  }}| j                  t        |j                  dHdI       | j	                  |j                  dHdJ      |       | j	                  |dKz   j                  dHdJ      |dLz          | j	                  |j                  dHdM      |j                  ddN              y )ON   �r  r  r      s      s   s      s   s   r   s   ArZ     s   s   s   r   s   s   As   As   AAAAs   As   As   A   s   s   s   s   r  s   s   s   As   AAs   As   As   As   AAs   AAs   As   As   As   A   s   s   s   s   s   As   As   AA   s   s   s   As      s   s   s   r      s   )s   ABCu   �ABC)s   BCu   ��BC)s   Cu   �C)s   abcdu   a���b�c��dr`  r   rc     br   ru  r   )	enumeraterh   rq  r"   rT   rc  )r5   FFFDr  r  r`  r  s         r   test_issue8271zUnicodeTest.test_issue8271  s    J
dOJ
 $q&!J
 dO	J

 $q&!J
 dOJ
 $q&!J
 $q&!J
 dOJ
 $q&!J
 d1f%J
 $s(#J
 dOJ
  $q&!!J
" d1f%#J
$ !$q&)%J
& $'J
( $s(#)J
* d3htm,+J
, d4i(-J
. d3h'/J
0 !$q&*-1J
2 !$s(4-03J
6 dO7J
8 $q&!9J
: d1f%;J
< !$q&)=J
> %d1f-?J
@ $AJ
B d#CJ
D d3h'EJ
F !$t),GJ
H !$s(+IJ
J d3htm,KJ
L !$s(46/2MJ
N !$s(4-"34OJ
P !$t)D.1QJ
R !$s(4-0SJ
T !$s(46/2UJ
V !$q&*-WJ
X !$s(46/2YJ
\ dO]J
^ $q&!_J
` $q&!aJ
b d1f%cJ
d !$q&)eJ
f d1fSj)gJ
h !$q&*T/2iJ
j %d3htAvoc&9:kJ
n dOoJ
p $q&!qJ
r $q&!sJ
t d1fsl+uJ
v %d1f-wJ
z dO{J
| $q&!}J
~ d1f%J
@ )$q&1AJ
D dOEJ
F d1f%GJ
J <KJ
L >MJ
N 8OJ
PEQJ
	V 'y1 	8MAzS0#**gxPSZZ;SAc$h..w	BCGLSZZ: [[268		8r   c                 ,   | j                  t              5 }|j                  d       ddd       j                  }| j	                  |t        |             | j                  |j                  dd      |       | j                  d|z   dz   j                  dd      d|z   dz          |j                  dd	      }| j                  |j                  dd
      |       | j                  d|z   dz   j                  dd
      d|z   dz          y# 1 sw Y   xY w)z
        Check that an invalid UTF-8 sequence raises a UnicodeDecodeError when
        'strict' is used, returns res when 'replace' is used, and that doesn't
        return anything when 'ignore' is used.
        r`  Nrc  s   aaaas   bbbbaaaabbbbr  r   ru  )rh   rq  r"   rU  r0  rP   rT   rc  )r5   r`  r  errrV  rW  s         r   assertCorrectUTF8Decodingz%UnicodeTest.assertCorrectUTF8Decoding  s     12 	 bJJw	 llc3s8$GY7='C-'199'9M#.	0kk(B'GX6<'C-'199'8L 3,/	1	  	 s   D

Dc                 P    d}dD ]  }| j                  t        |g      dd       ! y)ah  
        Test that an 'invalid start byte' error is raised when the first byte
        is not in the ASCII range or is not a valid start byte of a 2-, 3-, or
        4-bytes sequence. The invalid start byte is replaced with a single
        U+FFFD when errors='replace'.
        E.g. <80> is a continuation byte and can appear only after a start byte.
        r  s   zinvalid start byteN)r  rX  )r5   r  r  s      r   test_invalid_start_bytez#UnicodeTest.test_invalid_start_byte  s6     7 	AD**5$=(+?A	Ar   c                 j    g d}d}|D ](  }| j                  t        j                  |      dd       * y)aa  
        Test that an 'unexpected end of data' error is raised when the string
        ends after a start byte of a 2-, 3-, or 4-bytes sequence without having
        enough continuation bytes.  The incomplete sequence is replaced with a
        single U+FFFD when errors='replace'.
        E.g. in the sequence <F3 80 80>, F3 is the start byte of a 4-bytes
        sequence, but it's followed by only 2 valid continuation bytes and the
        last continuation bytes is missing.
        Note: the continuation bytes must be all valid, if one of them is
        invalid another error will be raised.
        )&C2DFzE0 A0zE0 BFzE1 80zE1 BFzEC 80zEC BFzED 80zED 9FzEE 80zEE BFzEF 80zEF BFzF0 90zF0 BFzF0 90 80zF0 90 BFzF0 BF 80zF0 BF BFzF1 80zF1 BFzF1 80 80zF1 80 BFzF1 BF 80zF1 BF BFzF3 80zF3 BFzF3 80 80zF3 80 BFzF3 BF 80zF3 BF BFzF4 80zF4 8FzF4 80 80zF4 80 BFzF4 8F 80zF4 8F BFr  zunexpected end of dataNr  rX  fromhex)r5   r  r  r`  s       r   test_unexpected_end_of_dataz'UnicodeTest.test_unexpected_end_of_data  s@    
	  	EC**5==+=x+CE	Er   c           	          d}|dz  }d|dz   fd|dz   fd|fd|fd	|dz   fd
|dz   fd|fd|fg}|D ]+  \  }}| j                  t        j                  |      |d       - y)a  
        Test that an 'invalid continuation byte' error is raised when the
        continuation byte of a 2-bytes sequence is invalid.  The start byte
        is replaced by a single U+FFFD and the second byte is handled
        separately when errors='replace'.
        E.g. in the sequence <C2 41>, C2 is the start byte of a 2-bytes
        sequence, but 41 is not a valid continuation byte because it's the
        ASCII letter 'A'.
        r  r   zC2 00r,  zC2 7Fr  zC2 C0zC2 FFzDF 00zDF 7FzDF C0zDF FFinvalid continuation byteNr  r5   r  FFFDx2r  r`  r  s         r   test_invalid_cb_for_2bytes_seqz*UnicodeTest.test_invalid_cb_for_2bytes_seq  s     d6k"Wd6k$:f0d6k"Wd6k$:f0	
	 " 	HHC**5==+=s+FH	Hr   c                    d}|dz  }g d|dz   fd|dz   fd|fd|fd	|fd
|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd |dz   fd!|fd"|fd#|dz   fd$|dz   fd%|fd&|fd'|dz   fd(|dz   fd)|fd*|fd+|dz   fd,|dz   fd-|fd.|fd/|fd0|fd1|dz   fd2|dz   fd3|fd4|fd5|dz   fd6|dz   fd7|fd8|fd9|dz   fd:|dz   fd;|fd<|fd=|dz   fd>|dz   fd?|fd@|fdA|dz   fdB|dz   fdC|fdD|fdE|dz   fdF|dz   fdG|fdH|fdI|dz   fdJ|dz   fdK|fdL|fdM|dz   fdN|dz   fdO|fdP|f}|D ]+  \  }}| j                  t        j                  |      |dQ       - yR)Sa  
        Test that an 'invalid continuation byte' error is raised when the
        continuation byte(s) of a 3-bytes sequence are invalid.  When
        errors='replace', if the first continuation byte is valid, the first
        two bytes (start byte + 1st cb) are replaced by a single U+FFFD and the
        third byte is handled separately, otherwise only the start byte is
        replaced with a U+FFFD and the other continuation bytes are handled
        separately.
        E.g. in the sequence <E1 80 41>, E1 is the start byte of a 3-bytes
        sequence, 80 is a valid continuation byte, but 41 is not a valid cb
        because it's the ASCII letter 'A'.
        Note: when the start byte is E0 or ED, the valid ranges for the first
        continuation byte are limited to A0..BF and 80..9F respectively.
        Python 2 used to consider all the bytes in range 80..BF valid when the
        start byte was ED.  This is fixed in Python 3.
        r  r   zE0 00r,  zE0 7Fr  zE0 80zE0 9FzE0 C0zE0 FFzE0 A0 00zE0 A0 7FzE0 A0 C0zE0 A0 FFzE0 BF 00zE0 BF 7FzE0 BF C0zE0 BF FFzE1 00zE1 7FzE1 C0zE1 FFzE1 80 00zE1 80 7FzE1 80 C0zE1 80 FFzE1 BF 00zE1 BF 7FzE1 BF C0zE1 BF FFzEC 00zEC 7FzEC C0zEC FFzEC 80 00zEC 80 7FzEC 80 C0zEC 80 FFzEC BF 00zEC BF 7FzEC BF C0zEC BF FFzED 00zED 7FzED A0zED BFzED C0zED FFzED 80 00zED 80 7FzED 80 C0zED 80 FFzED 9F 00zED 9F 7FzED 9F C0zED 9F FFzEE 00zEE 7FzEE C0zEE FFzEE 80 00zEE 80 7FzEE 80 C0zEE 80 FFzEE BF 00zEE BF 7FzEE BF C0zEE BF FFzEF 00zEF 7FzEF C0zEF FFzEF 80 00zEF 80 7FzEF 80 C0zEF 80 FFzEF BF 00zEF BF 7FzEF BF C0zEF BF FFr  Nr  r  s         r   test_invalid_cb_for_3bytes_seqz*UnicodeTest.test_invalid_cb_for_3bytes_seq-  sX   " "
d6k""
%,d6k$:"
=Df<M"
f"
 '0"
3:F2C"
 f%"
 )3DK'@"
  	"
 $.v"6	"

 f%"

 )3DK'@"
  "
 $.v"6"
 :A$v+8N"
 d6k""
 &-f$5"
 9@7H"
 f%"
 )3DK'@"
  "
 $.v"6"
 f%"
 )3DK'@"
  "
 $.v"6"
 :A$v+8N"
 d6k""
 &-f$5"
 9@7H"
 f%"
 )3DK'@"
  "
 $.v"6"
 f%"
 )3DK'@"
   !"
  $.v"6!"
  :A$v+8N!"
" d6k"#"
$ f%"
$ !(0%"
& f'"
& !(0'"
& 4>tF{2K'"
( f%)"
( )3F';)"
*  +"
* $.tF{";+"
, f%-"
, )3F';-"
.  /"
. $+DK"8/"
0 d6k"1"
0 &-f$51"
0 9@7H1"
2 f%3"
2 )3DK'@3"
4  5"
4 $.v"65"
6 f%7"
6 )3DK'@7"
8  9"
8 $.v"69"
8 :A$v+8N9"
: d6k";"
: &-f$5;"
: 9@7H;"
< f%="
< )3DK'@="
>  ?"
> $.v"6?"
@ f%A"
@ )3DK'@A"
B  C"
B $.v"6C"
	F " 	HHC**5==+=s+FH	Hr   c                 f   d}|dz  }g d|dz   fd|dz   fd|fd|fd	|fd
|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd|dz   fd|fd|fd|dz   fd |dz   fd!|fd"|fd#|dz   fd$|dz   fd%|fd&|fd'|dz   fd(|dz   fd)|fd*|fd+|dz   fd,|dz   fd-|fd.|fd/|dz   fd0|dz   fd1|fd2|fd3|dz   fd4|dz   fd5|fd6|fd7|dz   fd8|dz   fd9|fd:|fd;|dz   fd<|dz   fd=|fd>|fd?|dz   fd@|dz   fdA|fdB|fdC|dz   fdD|dz   fdE|fdF|fdG|dz   fdH|dz   fdI|fdJ|fdK|dz   fdL|dz   fdM|fdN|fdO|dz   fdP|dz   fdQ|fdR|fdS|dz   fdT|dz   fdU|fdV|fdW|dz   fdX|dz   fdY|fdZ|fd[|dz   fd\|dz   fd]|fd^|fd_|fd`|fda|dz   fdb|dz   fdc|fdd|fde|dz   fdf|dz   fdg|fdh|fdi|dz   fdj|dz   fdk|fdl|fdm|dz   fdn|dz   fdo|fdp|fdq|dz   fdr|dz   fds|fdt|fdu|dz   fdv|dz   fdw|fdx|f}|D ]+  \  }}| j                  t        j                  |      |dy       - yz){at  
        Test that an 'invalid continuation byte' error is raised when the
        continuation byte(s) of a 4-bytes sequence are invalid.  When
        errors='replace',the start byte and all the following valid
        continuation bytes are replaced with a single U+FFFD, and all the bytes
        starting from the first invalid continuation bytes (included) are
        handled separately.
        E.g. in the sequence <E1 80 41>, E1 is the start byte of a 3-bytes
        sequence, 80 is a valid continuation byte, but 41 is not a valid cb
        because it's the ASCII letter 'A'.
        Note: when the start byte is E0 or ED, the valid ranges for the first
        continuation byte are limited to A0..BF and 80..9F respectively.
        However, when the start byte is ED, Python 2 considers all the bytes
        in range 80..BF valid.  This is fixed in Python 3.
        r  r   zF0 00r,  zF0 7Fr  zF0 80zF0 8FzF0 C0zF0 FFzF0 90 00zF0 90 7FzF0 90 C0zF0 90 FFzF0 BF 00zF0 BF 7FzF0 BF C0zF0 BF FFzF0 90 80 00zF0 90 80 7FzF0 90 80 C0zF0 90 80 FFzF0 90 BF 00zF0 90 BF 7FzF0 90 BF C0zF0 90 BF FFzF0 BF 80 00zF0 BF 80 7FzF0 BF 80 C0zF0 BF 80 FFzF0 BF BF 00zF0 BF BF 7FzF0 BF BF C0zF0 BF BF FFzF1 00zF1 7FzF1 C0zF1 FFzF1 80 00zF1 80 7FzF1 80 C0zF1 80 FFzF1 BF 00zF1 BF 7FzF1 BF C0zF1 BF FFzF1 80 80 00zF1 80 80 7FzF1 80 80 C0zF1 80 80 FFzF1 80 BF 00zF1 80 BF 7FzF1 80 BF C0zF1 80 BF FFzF1 BF 80 00zF1 BF 80 7FzF1 BF 80 C0zF1 BF 80 FFzF1 BF BF 00zF1 BF BF 7FzF1 BF BF C0zF1 BF BF FFzF3 00zF3 7FzF3 C0zF3 FFzF3 80 00zF3 80 7FzF3 80 C0zF3 80 FFzF3 BF 00zF3 BF 7FzF3 BF C0zF3 BF FFzF3 80 80 00zF3 80 80 7FzF3 80 80 C0zF3 80 80 FFzF3 80 BF 00zF3 80 BF 7FzF3 80 BF C0zF3 80 BF FFzF3 BF 80 00zF3 BF 80 7FzF3 BF 80 C0zF3 BF 80 FFzF3 BF BF 00zF3 BF BF 7FzF3 BF BF C0zF3 BF BF FFzF4 00zF4 7FzF4 90zF4 BFzF4 C0zF4 FFzF4 80 00zF4 80 7FzF4 80 C0zF4 80 FFzF4 8F 00zF4 8F 7FzF4 8F C0zF4 8F FFzF4 80 80 00zF4 80 80 7FzF4 80 80 C0zF4 80 80 FFzF4 80 BF 00zF4 80 BF 7FzF4 80 BF C0zF4 80 BF FFzF4 8F 80 00zF4 8F 80 7FzF4 8F 80 C0zF4 8F 80 FFzF4 8F BF 00zF4 8F BF 7FzF4 8F BF C0zF4 8F BF FFr  Nr  r  s         r   test_invalid_cb_for_4bytes_seqz*UnicodeTest.test_invalid_cb_for_4bytes_seqg  sW     8
d6k"8
%,d6k$:8
=Df<M8
f8
 '08
3:F2C8
 f%8
 )3DK'@8
  	8
 $.v"6	8

 f%8

 )3DK'@8
  8
 $.v"68
 DK(8
 ,9$v+*F8
 F#8
 '4V%<8
 DK(8
 ,9$v+*F8
 F#8
 '4V%<8
 DK(8
 ,9$v+*F8
 F#8
 '4V%<8
 DK(8
 ,9$v+*F8
 F#8
 '4V%<8
 d6k"8
 &-d6k$:8
 >Ef<M8
  f!8
  !+DK8!8
" f%#8
" )3F';#8
$  %8
$ $.tF{";%8
& f%'8
& )3F';'8
(  )8
( $1$v+">)8
* DK(+8
* ,9&*A+8
, F#-8
, '4T&[%A-8
. DK(/8
. ,9&*A/8
0 F#18
0 '4T&[%A18
2 DK(38
2 ,9&*A38
4 F#58
4 '4T&[%A58
6 DK(78
6 ,9&*A78
8 F#98
8 '.tF{%;98
: d6k";8
: &-f$5;8
: 9@7H;8
< f%=8
< )3DK'@=8
>  ?8
> $.v"6?8
@ f%A8
@ )3DK'@A8
B  C8
B $.v"6C8
D DK(E8
D ,9$v+*FE8
F F#G8
F '4V%<G8
H DK(I8
H ,9$v+*FI8
J F#K8
J '4V%<K8
L DK(M8
L ,9$v+*FM8
N F#O8
N '4V%<O8
P DK(Q8
P ,9$v+*FQ8
R F#S8
R '4V%<S8
T d6k"U8
T &-d6k$:U8
T >Ef<MU8
V fW8
V !(0W8
V 4;F2CW8
X f%Y8
X )3DK'@Y8
Z  [8
Z $.v"6[8
\ f%]8
\ )3DK'@]8
^  _8
^ $.v"6_8
` DK(a8
` ,9$v+*Fa8
b F#c8
b '4V%<c8
d DK(e8
d ,9$v+*Fe8
f F#g8
f '4V%<g8
h DK(i8
h ,9$v+*Fi8
j F#k8
j '4V%<k8
l DK(m8
l ,9$v+*Fm8
n F#o8
n '4V%<o8
	r " 	HHC**5==+=s+FH	Hr   c                 F    | j                  dj                  d      d       y )Nzwww.python.org.idnas   www.python.org.)rT   r!   r9   s    r   test_codecs_idnazUnicodeTest.test_codecs_idna  s    *11&9;MNr   c                    | j                  t        dj                  d       | j                  t        dj                  dd       | j                  dj                  dd      d       | j                  dj                  dd      d       | j                  dj                  dd      dj                  dd             | j                  dj                  dd      dj                  dd	             | j                  t        t        d
d       | j                  t        t        d
dd       | j                  t	        d
dd      d       | j                  t	        d
dd      d       | j                  t	        ddd      d       | j                  dj                  dd      d       | j                  t        dj
                  d       | j                  t        dj
                  d       | j                  t        t        dd       | j                  t        dj                  d       | j                  t        dj                  d       | j                  t        dj                  ddd       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       y )Nu   Andr xr   r   ru  s   Andr xrc  s   Andr? xrm  )r   r   s   Andr xzAndr xu	   Andr� xs    xu   � xs	   \N{foo}xxzunicode-escapexx   \   hellor   r   r   r
   r  u   )rh   UnicodeErrorr!   rT   rP   r"   r   r  r[  r  complexr9   s    r   test_codecs_errorszUnicodeTest.test_codecs_errors  s`   ,(;(;WE,(;(;WXN,,WX>	J,,WY?L,,Wi@%,,WY,G	I,,Wh?%,,gh,O	Q 	,]GD,]GXN]GX>I]GY?PY;ZH 	--.>I4P 	,6FG)X__oF)S(OD)W^^_E)W^^_E 	)W^^RR@ 	*c84*c84*eX6*eX6*gx8*gx8r   c                    | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d       | j                  dj                  d      d	       | j                  dj                  d
      d       | j                  dj                         d       t        d      D ]?  }t        |      }dD ]-  }| j                  t	        |j                  |      |      |       / A t        d      D ]?  }t        |      }dD ]-  }| j                  t	        |j                  |      |      |       / A t        d      D ]?  }t        |      }dD ]-  }| j                  t	        |j                  |      |      |       / A t        j                         5  d}dD ]-  }| j                  t	        |j                  |      |      |       / 	 d d d        dj                  t        t        t        t        dd            t        t        dd            z               }dD ]-  }| j                  t	        |j                  |      |      |       / y # 1 sw Y   xY w)Nr   r   r  ry  r`  	utf-16-les
   h e l l o 	utf-16-bes
    h e l l olatin-1u   ☃s   ☃i   )ry  r`  utf-16r  r  raw_unicode_escapeunicode_escaper   )r  r  )r   u   𐀁𠀂𰀃񀀄񐀅)r`  r  r  r  r  r  r   r   i   i   rf   )r`  )
rT   r!   r   r   rP   rx  catch_warningsr   r   list)r5   r  r  r   s       r   test_codecszUnicodeTest.test_codecs  s   0(;0(;0(;0(;46RS46RS	2H= 	*O< t 	FAAA/ F   QXXh%7!A1EF	F s 	FAAA( F  QXXh%7!A1EF	F s 	FAAA& F  QXXh%7!A1EF	F $$& 	FDAE F  QXXh%7!A1EF	F GGCT%6"23!%"9:; < =" 	BHS(!3H=qA	B	F 	Fs   5J<<Kc                    t        t        d            }dD ]-  }| j                  t        ||      j	                  |      |       / t        t        dd            }dD ]-  }| j                  t        ||      j	                  |      |       / y )Nr  )9cp037cp1026cp273cp437cp500cp720cp737cp775cp850cp852cp855cp858cp860cp861cp862cp863cp865cp866cp1125
iso8859_10
iso8859_13
iso8859_14
iso8859_15	iso8859_2	iso8859_3	iso8859_4	iso8859_5	iso8859_6	iso8859_7	iso8859_9koi8_rkoi8_tkoi8_ukz1048latin_1mac_cyrillic
mac_latin2cp1250cp1251cp1252cp1253cp1254cp1255cp1256cp1257cp1258cp856cp857cp864cp869cp874	mac_greekmac_iceland	mac_romanmac_turkishcp1006	iso8859_8r   ) 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  )rX  r   rT   rP   r!   )r5   rr  r   s      r   test_codecs_charmapzUnicodeTest.test_codecs_charmap	  s    %* 	CH2 SH-44X>B3	C8 %S/" 	CH* SH-44X>B+	Cr   c                     | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )Nr  r  r]  r9   s    r   test_concatenationzUnicodeTest.test_concatenationI	  sT    +1+1+1+k:+k:r   c                    d}|j                  d      j                  d      }| j                  ||       d}|j                  d      j                  d      }| j                  ||       d}|j                  d      j                  d      }| j                  ||       	 dj                  d       | j                  d       y # t        $ rB}| j                  |j
                  d       | j                  |j                  d       Y d }~y d }~ww xY w)	Nr6  zraw-unicode-escapes
   \U00100000s
   \U00010000s
   \U11111111z%Should have raised UnicodeDecodeErrorr   r   )r!   r"   rT   failrq  startend)r5   r  r)  r   s       r   	test_ucs4zUnicodeTest.test_ucs4P	  s    HH)*112FGAHH)*112FGAHH)*112FGA	?!!"67
 II=>	 " 	(QWWa(QUUB''	(s   C 	D
8DDc           	          G d dt               }| j                  t        t        d            d       | j                  t        t        t        d                  t        d             | j                  t        t        d            t        d             | j                  t        t        t        d                  t        d             | j                  t        t        t	        d                  t        d             | j                  t         |d            d       | j                  t         |t        d                  t        d             | j                  t         |d            t        d             | j                  t         |t        d                  t        d             | j                  t         |t	        d                  t        d             | j                  t        t        d            d       | j                  t        t        t        d                  t        d             | j                  t        t        d            t        d             | j                  t        t        t        d                  t        d             | j                  t        t        t	        d                  t        d             y )Nc                       e Zd Zd Zd Zy)/UnicodeTest.test_conversion.<locals>.StrWithStrc                 @    t         j                  | d      }||_        |S )Nr   )rP   __new__r3   )r   r3   r5   s      r   r%  z7UnicodeTest.test_conversion.<locals>.StrWithStr.__new__g	  s    {{3+"
r   c                     | j                   S r1   r2   r9   s    r   r:   z7UnicodeTest.test_conversion.<locals>.StrWithStr.__str__k	  r  r   N)r(   r)   r*   r%  r:   r   r   r   
StrWithStrr#  f	  s    "r   r'  rn   r   )rP   rb   r/   r&   r-   r?   )r5   r'  s     r   test_conversionzUnicodeTest.test_conversiond	  s   	" 	" 	c'%.159c'+e*<"=>E@RSk'%.9;u;MNk'+e2D*EF)%0	2k'2B52I*JK)%0	2 	c*U"34e<c*[-?"@A;uCUVk*U*;<k%>PQk*[5G*HI)%0	2k*5Ee5L*MN)%0	2 	c(7"34g>c(;w+?"@A;wCWXk(7*;<k'>RSk(;w3G*HI)'2	4k(3CG3L*MN)'2	4r   c                 X     G d d      }| j                  t         |             d       y )Nc                       e Zd Zd Zy))UnicodeTest.test_unicode_repr.<locals>.s1c                      y)N\nr   r9   s    r   rB   z2UnicodeTest.test_unicode_repr.<locals>.s1.__repr__	  s    r   NrQ   r   r   r   s1r+  	  s    r   r.  r-  rT   r   )r5   r.  s     r   test_unicode_reprzUnicodeTest.test_unicode_repr	  s$    	 	 	bdU+r   c                 v    | j                  t        d      ddz         | j                  t        d      d       y )Nr7  z'%c')   u   𔀀z'\U00014000'r/  r9   s    r   test_printable_reprzUnicodeTest.test_printable_repr	  s1    l+Vj-@Al+_=r   Pr   z only applies to 32-bit platformsc                 b    | j                  t        dj                  t        j                         y )Nzt	t	)rh   r^  
expandtabsr\  r]  r9   s    r   $test_expandtabs_overflows_gracefullyz0UnicodeTest.test_expandtabs_overflows_gracefully	  s      	-)<)<ckkJr   c                 H    d}| j                  |j                         |       y )Nrn   )r_   r6  )r5   rr  s     r   test_expandtabs_optimizationz(UnicodeTest.test_expandtabs_optimization	  s    allna(r   c                   	
 d}|dz   }t        j                  |      }t        j                  |      }dD ]  	t        	      }|dk  rd}|}n|dk  rd}|}n|dk  rd}|}nd	}|}t        j                  |z
  |z  
	
fd
}| j                  	||      5  | j                  t        j                  	dz        ||dz  z          | j                  t        |       | j                  t        |       d d d         y # 1 sw Y   xY w)NnnbnP)r   r   r  r  r  r   r   r2  r   r   c                       z  S r1   r   )r  maxlens   r   <lambda>z0UnicodeTest.test_raiseMemError.<locals>.<lambda>	  s    D6M r   )r  struct_size	char_sizer
   +   )
r   calcobjsizer&  r\  r]  r   rT   	getsizeofrh   r   )r5   asciifieldscompactfieldsascii_struct_sizecompact_struct_sizecoderA  r@  allocr  r>  s            @@r   test_raiseMemErrorzUnicodeTest.test_raiseMemError	  s&   #d*#//<%11-@9 	6Dt9Dd{	/	1	1	1 {{[0Y>F)E'#   6   MM$),9#78 !!+u5!!+u56 6'	6&6 6s   AC<<D	c                      G d dt               } |d      }| j                  d|z  d       | j                  dj                  |      d       y )Nc                       e Zd Zd Zy)+UnicodeTest.test_format_subclass.<locals>.Sc                      y)N__str__ overriddenr   r9   s    r   r:   z3UnicodeTest.test_format_subclass.<locals>.S.__str__	  s    +r   Nr  r   r   r   r  rN  	  s    ,r   r  xxxr  rP  r  )rP   rT   r  r5   r  rr  s      r   test_format_subclassz UnicodeTest.test_format_subclass	  sG    	, 	, eH#78Q)=>r   c                      G d dt               }| j                   |d       |d      z   d        G d dt               } |d      }|dz  }| j                  |d       y )Nc                       e Zd Zd Zy)(UnicodeTest.test_subclass_add.<locals>.Sc                      yNrT  r   r5   ri  s     r   __add__z0UnicodeTest.test_subclass_add.<locals>.S.__add__	      r   N)r(   r)   r*   rZ  r   r   r   r  rV  	  r  r   r  r  r  rT  c                       e Zd Zd Zy)rV  c                      yrX  r   rY  s     r   __iadd__z1UnicodeTest.test_subclass_add.<locals>.S.__iadd__	  r[  r   N)r(   r)   r*   r^  r   r   r   r  z(UnicodeTest.test_subclass_add.<locals>.S	  r  r   rQ  rK  rR  s      r   test_subclass_addzUnicodeTest.test_subclass_add	  s\    	 	 	3!C&#.	 	 cF	SC r   c                     d}|j                         }| j                  |d   |       | j                  |d   |       | j                  t        |      d       y )Nrn   r   r   )__getnewargs__assertIsNotrT   rf  )r5   r#   rZ   s      r   test_getnewargszUnicodeTest.test_getnewargs	  sQ    ""$a$'a$'TA&r   c                    t        ddd      D ]  }d|z  dz   }| j                  t              5  t        j                  |      }d d d        | j                  |       |dz  }| j                  t              5  t        j                  |      }d d d        | j                  |       | j                  ||        y # 1 sw Y   zxY w# 1 sw Y   <xY w)Nr   r   r   r   r   r  )r   assertWarnsr  r  	getargs_urT   rk   )r5   lengthr#   rn   r  s        r   test_resizezUnicodeTest.test_resize	  s     AsA& 	+F<#%D !!"45 0))$/0S$' CKD!!"45 3",,T23V,VT*	+
0 03 3s   B=8C	=C		C	c                 L   d}d|z  }d|z  }d|z  }d|z  }d|z  }d|z  }d|z  }d	|z  }	||||||||	f}
t        j                  |
d
      D ]  \  }}||u }| j                  ||k(  |       | j                  ||k7  |        |s8| j                  ||k         | j                  ||k\         t	        |      }t	        |      }| j                  ||       | j                  ||k(         | j                  ||k7         | j                  ||k         | j                  ||k\          | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||	k         | j                  ||k\         | j                  ||k\         | j                  ||k\         | j                  ||	k\         y )Nr   r   r  r  rd   r/  re   r6  r  r   )	itertoolscombinationsrT   rU   r$   rb  r  )r5   r  r   ascii2latinlatin2bmpbmp2astralastral2stringstext1text2equalcopy1copy2s                   r   test_comparezUnicodeTest.test_compare	  sp   aq
!l!|!"66G	
 &227A> 	0LE5e^EUe^U3Ue^Y7//
 )/(/  ./  %0//)	0, 	'&$'&)%(#&&)''$''&)#&&)u%u%d
#f%u%u%%'%(%($'()%(%($'7*+r   c                     t        j                  | t        t               t        j                  | t        t               y r1   )r   check_free_after_iteratingr   rP   reversedr9   s    r   test_free_after_iteratingz%UnicodeTest.test_free_after_iterating=
  s&    **4s;**43?r   c                     d}d}t        j                  d|d|d|d|d|d|d	|d
      }t        ddd|      }| j                  |j                  d|       y )N)r   utf8latin1zBoom, Shaka Laka, Boom!z0
            import sys
            encodings = zn

            for data in (b'', b'short string'):
                try:
                    str(data, encoding=z)
                except LookupError:
                    pass
                else:
                    sys.exit(21)

                try:
                    str(data, errors=z)
                except LookupError:
                    pass
                else:
                    sys.exit(22)

                for encoding in encodings:
                    try:
                        str(data, encoding, errors=z)
                    except LookupError:
                        pass
                    else:
                        sys.exit(22)

            for data in ('', 'short string'):
                try:
                    data.encode(encoding=z)
                except LookupError:
                    pass
                else:
                    sys.exit(23)

                try:
                    data.encode(errors=z)
                except LookupError:
                    pass
                else:
                    sys.exit(24)

                for encoding in encodings:
                    try:
                        data.encode(encoding, errors=z)
                    except LookupError:
                        pass
                    else:
                        sys.exit(24)

            sys.exit(10)
        z-Xdevz-cr   )textwrapdedentr   rT   rc)r5   	encodingsinvalidrI  procs        r   test_check_encoding_errorsz&UnicodeTest.test_check_encoding_errorsA
  s     0	+ $" &( )0{ 3& '.[ 14 5<; ?* +2 5( )0{ 36 7>[ A	Y3  3h %T5$="d+r   )wr(   r)   r*   rP   r'  rK   r]   rb   rl   r   r   r   r   r   r   r   r   r   r   r  r
  r-  r6  r=  rC  rF  rU  unittestskipIfr\  r]  ra  rg  r   cpython_onlyrk  rs  r|  r  r  r  r  r  requires_resourcer  r  r  r  r  r  r  r  requires_legacy_unicode_capir  r  r  r  r  r  r  r  r  r  r  
skipUnlessr"  r4  r:  r  r  r  r  r  r  r&  r=  r@  rL  rO  rQ  rX  run_with_localer^  rk  rn  rs  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r(  r0  r3  structcalcsizer7  r9  rK  rS  r_  rc  rh  ry  r}  r  __classcell__)r  s   @r   rE   rE   I   s   
 I<6$+,)DV*CX32<A87<+HZ'IRR0S4DHLM";(R"S"@( X__S[[5(46767
@. < <
.,?99v11
KL Wu%4 &4G
11
K$
IK&- )W))+X__Y$&(?@O A , O5O65,85"H"9"D4< X	13KL
  M
%;N	,F5P
5Mn1
1
0
I<hNT#+J*
K X__Y$&(?@* A *
*
( WXw8. 9.B6HE	P1"fCJ7"-H^W8r1&AE4H,8HtMH^O'9R-B^5Cn;?( 4D,> X__S[[G,I0D0I79K9K ) )$6L?
!' )W))+X__Y$&(?@+ A , +"H,T@:,r   rE   c                       e Zd Zd Zd Zd Zy)StringModuleTestc                 d   d } |d      }| j                  |g d        |d      }| j                  |ddg        |d      }| j                  |dg        |d	      }| j                  |g         |d
      }| j                  |dg       | j                  t        t        j                  d       y )Nc                 >    t        t        j                  |             S r1   )r  _stringformatter_parserrF  s    r   parsez5StringModuleTest.test_formatter_parser.<locals>.parse
  s    00899r   z2prefix {2!s}xxx{0:^+10.3f}{obj.attr!s} {z[0]!s:10}))prefix rR  r   rr  )rQ  r  z^+10.3fN)r   zobj.attrr   rr  )rg   zz[0]r  rr  zprefix {} suffix)r  r   r   N)z suffixNNNrP   )rP   NNNr   r  )r   r  r   Nr   )rT   rh   r   r  r  )r5   r  	formatters      r   test_formatter_parserz&StringModuleTest.test_formatter_parser
  s    	: NO	 %
 	 ,-	%)%
 	
 %L	%%
 	 "I	B'%L	%
 	 	)W%=%=qAr   c                 ,   d }| j                   |d      dg g       | j                   |d      ddgg       | j                   |d      ddgg       | j                   |d      dg dg       | j                  t        t        j                  d	       y )
Nc                 d    t        t        j                  |             }t        |d         |d<   |S )Nr   )r  r  formatter_field_name_split)rG  itemss     r   r5  z?StringModuleTest.test_formatter_field_name_split.<locals>.split
  s-    ;;DABEE!H~E!HLr   rj  zobj.argTargzobj[key])Fr  zobj.arg[key1][key2])r  )Fkey1)Fkey2r   )rT   rh   r   r  r  )r5   r5  s     r   test_formatter_field_name_splitz0StringModuleTest.test_formatter_field_name_split
  s    	 	ur{3y)EM?+CDz*U^4D,EF458 	 	)W%G%GKr   c                    t        d      }t        d      } G d d      } |       }| j                  t              5  t        ||       d d d        t	        ||d       | j                  |j                  d       d|_        | j                  t        |j                        |g       | j                  t              5  t        ||       d d d        | j                  t              5  |`	d d d        t	        ||d       | j                  |j                  d       d|_	        | j                  t        |j                        ||g       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w)	NrG  name2c                       e Zd Zy)4StringModuleTest.test_str_subclass_attr.<locals>.BagNr'   r   r   r   Bagr  
  r   r   r  r   r   r   r   )
r&   rh   AttributeErrordelattrsetattrrT   rG  r  __dict__r  )r5   rG  r  r  ri  s        r   test_str_subclass_attrz'StringModuleTest.test_str_subclass_attr
  s1   6"G$	 	 E~. 	At	4#ajj)D62~. 	Au	~. 		5!!$ajj)D%=9	 		 		 	s#   E
=E'E#
EE #E,N)r(   r)   r*   r  r  r  r   r   r   r  r  ~
  s    BBL :r   r  __main__)$__doc__r  rG   rj  r(  r   r  r\  r  r  r  rx  test.supportr   r  r   r   test.support.script_helperr   r  ImportErrorr   r$   rP   r&   r-   r/   r?   r   rB  MixinStrUnicodeTestTestCaserE   r  r(   mainr   r   r   <module>r     s          
     ( & <
 "	# 		s 	  r(,,))22((r(,jQH:x(( H:V zHMMO aU  Is   C C%$C%