o
    HXhZ                    @   s   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mZ ddlmZmZ ddlmZ dd Zdd	 ZG d
d deZG dd dejejeje	jZG dd de	jZedkrpe	  dS dS )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                 C   sT   ddd}ddd}ddd}ddd	}| d
kr||d d fS | dkr(||d d fS d S )Nstrictc                 S      dS N*    inputerrorsr
   r
   ;/opt/python-3.10.19/usr/lib/python3.10/test/test_unicode.pydecode1      z search_function.<locals>.decode1c                 S   r   r   r
   r   r
   r
   r   encode1   r   z search_function.<locals>.encode1c                 S   r   N)r	   r	   r
   r   r
   r
   r   encode2   r   z search_function.<locals>.encode2c                 S   r   r   r
   r   r
   r
   r   decode2   r   z search_function.<locals>.decode2test.unicode1test.unicode2)r   r
   )encodingr   r   r   r   r
   r
   r   search_function   s   



r   c                 C   s   |    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)textr
   r
   r   duplicate_string'   s   r   c                   @      e Zd ZdS )StrSubclassN__name__
__module____qualname__r
   r
   r
   r   r   1       r   c                       s  e Zd ZeZdd Zdd Zdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zeejd#kd$d%d& Zd'd( Zejd)d* Zd+d, Zd-d. Z d/d0 Z! fd1d2Z" fd3d4Z# fd5d6Z$ fd7d8Z%e&d9d:d; Z' fd<d=Z( fd>d?Z) fd@dAZ*dBdC Z+ fdDdEZ,dFdG Z-dHdI Z.ejej/dJdK Z0dLdM Z1dNdO Z2dPdQ Z3dRdS Z4dTdU Z5dVdW Z6 fdXdYZ7dZd[ Z8d\d] Z9e:ejd^kd_ejd`da Z;dbdc Z<ddde Z=dfdg Z>dhdi Z?djdk Z@dldm ZAdndo ZBdpdq ZCdrds ZDdtdu ZEdvdw ZFdxdy ZGejdzd{ ZHd|d} ZId~d ZJeKddddd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zceejd#kpededdkddd Zfejdd Zgdd Zhdd Zidd Zjdd Zkejej/ddÄ Zlddń ZmddǄ ZnddɄ Zo  ZpS )UnicodeTestc                 C   s   t t | t jt d S N)codecsregisterr   Z
addCleanup
unregisterselfr
   r
   r   setUp;   s   
zUnicodeTest.setUpc                 G   s   t ||}|| }| || | t|t|u  ||u rBG dd dt}||}t ||}|| }| || | ||u d S d S )Nc                   @      e Zd Zdd ZdS )z)UnicodeTest.checkequalnofix.<locals>.usubc                 S   s   dt |  S )Nzusub(%r))str__repr__r)   r
   r
   r   r.   I      z2UnicodeTest.checkequalnofix.<locals>.usub.__repr__Nr    r!   r"   r.   r
   r
   r
   r   usubH       r1   )getattrassertEqual
assertTruetyper-   )r*   resultobjectZ
methodnameargsmethodZ
realresultr1   r
   r
   r   checkequalnofix?   s   

zUnicodeTest.checkequalnofixc                 C   sV   |  dd |  dd | ttd | ttd | ttdd  | dd d S )	N   ÿ   ￿z'\Ufffffffe'z'\Uffffffff'z'\U%08x'   z\u0020 )r4   assertRaisesSyntaxErrorevalassertNotEqualr)   r
   r
   r   test_literalsQ   s   zUnicodeTest.test_literalsc                 C   >  t jds| tdd | tdd | tdd | tdd	 | td
d | tdd | tdd | tdd | tdd | tdd | tdd | tdd | tdd d}tdtttd}| || | tdtd G dd d}| 	t
t|  d S d S ) Njava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  𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿￿c                   @   r,   )z)UnicodeTest.test_ascii.<locals>.WrongReprc                 S   r   Ns	   byte-reprr
   r)   r
   r
   r   r.      r   z2UnicodeTest.test_ascii.<locals>.WrongRepr.__repr__Nr0   r
   r
   r
   r   	WrongRepr   r2   rc   )sysplatform
startswithr4   asciijoinmapchrranger@   	TypeErrorr*   Z
latin1reprZtestreprrc   r
   r
   r   
test_asciiZ   0   
zUnicodeTest.test_asciic                 C   rE   ) NrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   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`   ra   c                   @   r,   )z(UnicodeTest.test_repr.<locals>.WrongReprc                 S   r   rb   r
   r)   r
   r
   r   r.      r   z1UnicodeTest.test_repr.<locals>.WrongRepr.__repr__Nr0   r
   r
   r
   r   rc      r2   rc   )rd   re   rf   r4   reprrh   ri   rj   rk   r@   rl   rm   r
   r
   r   	test_repr   ro   zUnicodeTest.test_reprc                 C   sJ   d  }| t|d | t|d | t|d | tt| d S )Nu	   ᄑ∢㌳u   ᄑu   ∢u   ㌳)__iter__r4   nextr@   StopIteration)r*   itr
   r
   r   test_iterators   s
   zUnicodeTest.test_iteratorsc                 C   sl  t j|  | dddd | dddd | dddd | dddd | dddd | ddddd | ddddd	 | d
ddddd | dddddd	 | dddd | dddd | dddd | dddd | dddd | dddd | dddd | dddd | dddd | dddd | dddd | dddd d S )N   Zaaacountar   b   i   
   u   Ăaaaaaaaaaau   􀌄aaaaaaaaaau   􀌄ĂĂĂĂĂĂĂĂĂĂ   ĂZ
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􀌄   Ă􀌄)r   
CommonTest
test_countr;   
checkequalr)   r
   r
   r   r      s,   zUnicodeTest.test_countc                 C   sV  t j|  | dddd | dddd | dddd | dddd | dd	dd
 | dd	dd | dd	dd | dddd | ddddd | ddddd | dddd | ddddd | dddddd | dddd | dddd | ddddd | dddddd | ddddd | dddddd | ddddd | dddd | tdj | tdjd | dd dd! | dd"dd! | dd#dd | dd$dd | dd$dd
 | dd%dd
 | dd&dd' | dd(dd' | dd)dd* | dd$dd+ | dd$dd, | dd%dd- d S ).Nd   uf   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaĂfindr   r|      ȁ   Ġ   Ƞuh   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa􀌄r      􀈄   􂀄r   abcdefghiabcrG   	   r{   def      тестu   тrw   e   тест тест   ес   r}      echellor	      ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂary     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ădaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂa_r     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a_  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ă_r   r   r   r   )r   r   	test_findr   r;   r@   rl   r   r)   r
   r
   r   r      sH   zUnicodeTest.test_findc                 C   s2  t j|  | dddd | dddd | dddd | dddd | dd	dd
 | dd	dd | dd	dd | dddd | dddd | dddd | dddd | ddddd | ddddd | dddd | dddd | ddddd | dddddd | ddddd | dddddd | ddddd | dddd | dddd | dddd | dd dd | dd!dd | dd!dd
 | dd"dd
 | dd#dd$ | dd%dd$ | dd&dd' | dd!dd( | dd!dd) | dd"dd* d S )+Nr   uf   Ăaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfindr   r|   r   r   r   uh   􀌄aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   r   r   r   r   rG      r_   r{   r   u   еr}   r   r   r   r   rw   r   r      aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂry     a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄r   r      _aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ_a  _a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  _Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄   _Ă   Ăa   􀌄a   􀌄Ă)r   r   
test_rfindr   r;   r)   r
   r
   r   r      sD   zUnicodeTest.test_rfindc                 C   sX  t j|  | dddd | dddd | dddd | ddddd	 | tdjd
 | tdjdd	 | tdjdd | tdjdd | dddd | dddd | dddd | tdjd | tdjd | tdjd | dddd | dddd | dddd | tdjd | tdjd | tdjd  d S )!Nr   r   indexr_   rw   r   rG   r   r{   hibZabcdefghiab	abcdefghighi   r|   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   
test_indexr;   r@   
ValueErrorr   r   r)   r
   r
   r   r   &  s*   zUnicodeTest.test_indexc                 C   sr  t j|  | dddd | dddd | dddd | d	dddd	d
 | tdjd | tdjdd | tdjdd	d
 | tdjdd	d | tdjdd	d
 | d	ddd | d	ddd | d	ddd | tdjd | tdjd | tdjd | d	ddd | d	ddd | d	ddd | tdjd | tdjd | tdjd  d S )!Nr   r   rindexr_   rw   r   r   rG   r   r|   r   Z	defghiabcr{   r   r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   test_rindexr;   r@   r   r   r   r)   r
   r
   r   r   >  s,   zUnicodeTest.test_rindexc                 C   s0  |  dddtdd i |  dddtdd tdtdi |  dddtdd tdtdtd	d
i |  d	ddtdd tddi |  dddtddi |  dddddi | jd dd}|  ddd| | jddd}|  ddd| | dtddd | dtddid | dtdd id | dtddid | dtddid | d td d!dd" | d td ddd# | dtdd$id% | dtddid | dtdd id | dtdd!id& | d'tdd(id) d*}d+D ]}t||i}d,| }| t|j| q(| t	| jj | t| jjdd- | t	| jjd.d/ | t	| jjdd. | t	| jjdd/d. | t| jjd0d.i | t	| jjd1d.i | t	d2j | t	djdd d S )3NZbbbcZabababc	translatery   Ziiicrz   iZiiixcxr_   ZxyyxZxzxzZyyz<i>ry   rz   z
<i><i><i>crG   ZxyzdZxyzzyZabdcdcbddddz[a]Xz[X][]ZXXXz[XXX]   éu   [é]ZaxbZ123Zx123u   xéu   <é>u   [<é>]z[123]u   [aé]u   <€>u	   [<€>é]r>   u
   aé€􏿿z[%s]Zdefgr}   r   Zxy)r{   r   )
r;   ord	type2test	maketransr4   r   r-   r@   r   rl   )r*   ZtblZinvalid_charbeforemappingr   r
   r
   r   test_maketrans_translateX  s   







z$UnicodeTest.test_maketrans_translatec              	   C      t j|  dD ]M\}}|d9 }|d9 }dD ]>}| || g|| d| | ||g|| | d| | || g|| d|d  | ||g||d  | d|d  qqd S )NZbau   āĀu   𐌁𐌀r   r   r   u   𐌂splitr}   )r   r   
test_splitr   r*   leftrightdelimr
   r
   r   r     s&   


zUnicodeTest.test_splitc              	   C   r   )Nr   r   r   rsplitr}   )r   r   test_rsplitr   r   r
   r
   r   r     s&   


zUnicodeTest.test_rsplitc              	   C   s   t j|  | dddd dD ]U\}}|d9 }|d9 }dD ]F}| || ddf|| d| | |||f|| | d| | || ddf|| d|d	  | ||d	 |f||d	  | d|d	  qqd S )
N)ABCDEFGHr_   r_   r   	partition   䈀r   r   r   r_   r}   )r   MixinStrUnicodeUserStringTesttest_partitionr   r   r
   r
   r   r     (   
zUnicodeTest.test_partitionc              	   C   s   t j|  | dddd dD ]U\}}|d9 }|d9 }dD ]F}| dd|| f|| d| | |||f|| | d| | dd|| f|| d|d	  | ||d	 |f||d	  | d|d	  qqd S )
N)r_   r_   r   r   
rpartitionr   r   r   r   r_   r}   )r   r   test_rpartitionr   r   r
   r
   r   r     r   zUnicodeTest.test_rpartitionc              	   C   s  t j|  G dd d}| dddg d | dddd | d	ddt d
 | dddg d | dddg d | dddd | d	ddt d
 | tdddd|dg | tdddddt g | tddg d | tddg d d S )Nc                   @      e Zd Zdd Zdd ZdS )z(UnicodeTest.test_join.<locals>.MyWrapperc                 S   
   || _ d S r%   sval)r*   r   r
   r
   r   __init__  s   
 z1UnicodeTest.test_join.<locals>.MyWrapper.__init__c                 S      | j S r%   r   r)   r
   r
   r   __str__  s    z0UnicodeTest.test_join.<locals>.MyWrapper.__str__Nr    r!   r"   r   r   r
   r
   r
   r   	MyWrapper  s    r   za b c dr?   rh   )ry   rz   r   r   abcdr_   zw x y zZwxyz12foo3)r{   r}   rw   )r   r   rw   )r   r   	test_joinr;   Sequencecheckraisesrl   bytes)r*   r   r
   r
   r   r     s   zUnicodeTest.test_joinl        z*needs too much memory on a 64-bit platformc                 C   s4   t tjd d }d| f| }| tdj| d S )Ng      ?r{   Ar_   )intrd   maxsizer@   OverflowErrorrh   )r*   sizeseqr
   r
   r   test_join_overflow  s   zUnicodeTest.test_join_overflowc              
   C   s   t j|  | dddddd | tdjdd d	D ]X\}}|d
9 }|d
9 }dD ]I}dD ]D}| || || d|| | || | || | d|| | || || d|d | | || | ||d  | d|d | q-q)qd S )Nzone@two!three!zone!two!three!replace!@r{   rr	   r   r   r   )r   u   ău   𐌃r}   )r   r   test_replacer;   r@   rl   r   r   )r*   r   r   r   replr
   r
   r   r     s2   



zUnicodeTest.test_replacec                 C   s    d}d}|  |||| d S )NrG   zabc def)assertIsr   )r*   patternr   r
   r
   r   test_replace_id  s   zUnicodeTest.test_replace_idc                 C   sP  d}d}|  t|t| | t|t| | t|t|d  | t|t|d  |  t|t|d  |  t|td|  | t|t|d  G dd dt}|d	}|  t|t| | t|t|d  | t|t|d  | t|t|d  | t|td|  | t|t|d  d S )
Nz123abc1@z456zyx-+r   r{   r}   c                   @   r   )z5UnicodeTest.test_repeat_id_preserving.<locals>.SubStrNr   r
   r
   r
   r   SubStr$  r#   r  zqwerty())r4   idrC   r-   )r*   ry   rz   r  sr
   r
   r   test_repeat_id_preserving  s"   z%UnicodeTest.test_repeat_id_preservingc                 C   s   t  3 tdt | ddkd | ddkd | dtdkd | dtdkd W d    d S 1 s:w   Y  d S )NignorerG      abcFT)r   check_warningswarningssimplefilterBytesWarningr4   	bytearrayr)   r
   r
   r   test_bytes_comparison/  s   
"z!UnicodeTest.test_bytes_comparisonc                    s<     dd  ddk  ddk  	  ddk  d S )NrG   r   r   ry      €u   c                    s     | |k  d S r%   )r5   r  s2r)   r
   r   
test_lecmpG  s   z/UnicodeTest.test_comparison.<locals>.test_lecmpc                    s   d}| | d}| | d}| | d}| | d}| | d}| | d}| | d}| | d	}| | d
}| | d}| | d}| | d}| | d}| | d}| | d}| |  d  d d S )Nu   u   u   u   u   u   u   u   u   u   u   u   u   u   u   u      u   ｡r
   r  )
test_fixupr  r
   r   r  J  sD   















z/UnicodeTest.test_comparison.<locals>.test_fixupu   )r4   r5   r)   r
   )r*   r  r  r   test_comparison7  s
   3zUnicodeTest.test_comparisonc                    s   t    | ddd | d  | d  | d  | d  | d  | d	  | d
  | d  d S )NF   ῼislower   Ⅷ   ⅷ   𐐁   𐐧   𐐩   𐑎   🐍   👯)supertest_islowerr;   assertFalser  r5   r)   	__class__r
   r   r   r  s   
zUnicodeTest.test_islowerc                    s   t    tjds| ddd | d  | d  | d  | d  | d	  | d
  | d  | d  d S )NrF   Fr  isupperr  r  r  r  r  r  r  r  )	r  test_isupperrd   re   rf   r;   r5   r$  r!  r)   r"  r
   r   r%    s   
zUnicodeTest.test_isupperc                    sf   t    | ddd | ddd | d  | d  dD ]}| | d| q#d S )	NTr  istitleu   Greek ῼitlecases ...u   𐐁𐐩u   𐐧𐑎)r  r  r  r  z{!a} is not title)r  test_istitler;   r5   r&  r!  formatr*   Zchr"  r
   r   r'    s   
zUnicodeTest.test_istitlec                    sX   t    | ddd | ddd | ddd dD ]}| | d| qd S )	NTu    isspaceu    Fu   —r  r  r  r  r  r  z{!a} is not space.)r  test_isspacer;   r!  r*  r(  r)  r"  r
   r   r,    s   
zUnicodeTest.test_isspaceZcpuc                 C   sP   t tjd D ]}t|}t|}t|}| | |dv p#|dk qd S )Nr{   )ZWSBSZZs)	rk   rd   
maxunicoderj   unicodedatabidirectionalcategoryr4   r*  )r*   Z	codepointcharr1  r2  r
   r
   r   test_isspace_invariant  s   


z"UnicodeTest.test_isspace_invariantc                    s.   t    dD ]}| | d| qd S )N)r  r  r  r     𝟶   𑁦   𐒠   🄇z{!a} is alnum.)r  test_isalnumr5   isalnumr(  r)  r"  r
   r   r9    s   
zUnicodeTest.test_isalnumc                    sp   t    | ddd | d  | d  | d  | d  | d  | d	  d S )
NTr  isalphar  r  r  r  r  r  )r  test_isalphar;   r5   r;  r!  r)   r"  r
   r   r<    s   
zUnicodeTest.test_isalphac                    s*   t    | d  | d  d S )Nr     􏿿)r  test_isasciir!  isasciir)   r"  r
   r   r>    s   
zUnicodeTest.test_isasciic                 C   s   |  ddd |  ddd |  ddd |  ddd |  ddd |  dd	d |  dd
d |  ddd | tddd dD ]}| | d| qBdD ]}| | d| qRd S )NFr_   	isdecimalry   T0   ①   ¼   ٠
01234567890123456789arG   r	   )r  r  r  r  r  r     𑁥r8  z{!a} is not decimal.)r5  r6  r7  z{!a} is decimal.)r;   r   rl   r!  r@  r(  r5   r)  r
   r
   r   test_isdecimal  s   zUnicodeTest.test_isdecimalc                    sx   t    | ddd | ddd | ddd dD ]}| | d| qd	D ]}| | d
| q,d S )NTrB  isdigitFrC  rD  )r  r  r  r  r  r  rG  z{!a} is not a digit.)r5  r6  r7  r8  z{!a} is a digit.)r  test_isdigitr;   r!  rI  r(  r5   r)  r"  r
   r   rJ    s   
zUnicodeTest.test_isdigitc                 C   s   |  ddd |  ddd |  ddd |  ddd |  ddd |  dd	d |  dd
d |  ddd | tdjd dD ]}| | d| qBdD ]}| | d| qRd S )NFr_   	isnumericry   TrA  rB  rC  rD  rE  rF  rG   r	   r+  z{!a} is not numeric.)rG  r5  r6  r7  r8  z{!a} is numeric.)r;   r@   rl   rK  r!  r(  r5   r)  r
   r
   r   test_isnumeric  s   zUnicodeTest.test_isnumericc                 C   s   |  d  |  d  |  d  |  d  |  d  |  d  |  d  |  d  | d	  | d
  | d  | d  d S )Nry   Z_Zb0ZbcZb_   µu   𝔘𝔫𝔦𝔠𝔬𝔡𝔢r?   [   ©rA  )r5   isidentifierr!  r)   r
   r
   r   test_isidentifier  s   zUnicodeTest.test_isidentifierc                 C   sh   dd l }d}| |  t  tdt | ||  W d    d S 1 s-w   Y  d S )Nr   u   𝖀𝖓𝖎𝖈𝖔𝖉𝖊r  )		_testcapir5   rR  r   r  r	  r
  DeprecationWarningZunicode_legacy_string)r*   rT  ur
   r
   r   test_isidentifier_legacy  s   
"z$UnicodeTest.test_isidentifier_legacyc                 C   s   |  d  |  d  |  d  | d  |  d  | d  | d  |  d  | d	  d S )
Nr_   r?   abcdefgzabcdefg
   ʹ   ͸   r  u   󠀠)r5   isprintabler!  r)   r
   r
   r   test_isprintable  s   zUnicodeTest.test_isprintablec                 C   s   dD ]}|  |  | |  | |  qdD ]}| |  |  |  |  |  qdD ]}tt|}dD ]}| ||d||f  q?q6dD ]}tt|}dD ]}| ||d||f  qZqQd S )N)   ab   ab	   aba	   aba)u   ABu   ABu	   ABAu	   ABA)r  r$  r&  )r[           z%a.%s() is False)r;  r:  rI  r*  r@  rK  rR  r\  )r[  rb  rc  rd  r^  r_  r`  ra  )r5   r  r!  r$  r&  r3   r-   )r*   r  Z	meth_namemethr
   r
   r   test_surrogates!  s&   

zUnicodeTest.test_surrogatesc                 C   s   t j|  | d d | d d | d d | d d | d d | d	 d
 | d d | d d | d d | d d | d d | d d | d d | d d | d d d S )Nr     𐑏   𐐧𐐧   𐑏𐑏   𐐧𐑏
   X𐐧x𐑏u
   x𐑏x𐑏   ﬁ   İ   i̇   Σ   σ   ͅΣu   ͅσ   AͅΣu   aͅς   AͅΣau   aͅσa   AΣͅu   aςͅ   Σͅ u   σͅ    򏿾r  )r   r   
test_lowerr4   lowerr)   r
   r
   r   rw  <  s,   


zUnicodeTest.test_lowerc                 C   st   |  d d |  d d |  d d |  d d |  d d |  d	 d
 |  d d d S )Nr   ZhELlo   ßssrl  firo  rp  rr  u   aισrO  u   μ)r4   casefoldr)   r
   r
   r   test_casefoldR  s   zUnicodeTest.test_casefoldc                 C   s   t j|  | d d | d d | d d | d d | d d	 | d
 d
 | d d | d d | d d | d d | d d d S )Nrg  r  ri  rh  rj  rk  u
   X𐐧X𐐧rl  FIrm  ro  ry  SS   ῒ   Ϊ̀rv  r  r  )r   r   
test_upperr4   upperr)   r
   r
   r   r  [  s$   


zUnicodeTest.test_upperc                 C   s   t j|  | d d | d d | d d | d d | d d | d d	 d
}| d | | d d | d d d S )Nrg  r  ri  rj     𐑏𐐧rk  u
   X𐑏x𐑏u   hİu   Hi̇u	   Ϊ̀i̇u   ῒİu   ﬁnnishFinnishrr  u   Aͅς)r   r   test_capitalizer4   
capitalize)r*   expr
   r
   r   r  l  s&   



zUnicodeTest.test_capitalizec                    s   t    | d d | d d | d d | d d | d d | d d	 | d
 d | d d | d d d S )Nrg  r  ri  rj  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_titler4   titler)   r"  r
   r   r  }  s(   





zUnicodeTest.test_titlec                 C   s0  t j|  | d d | d d | d d | d d | d d | d d | d	 d
 | d d | d d | d d | d d | d d | d d | d d | d d | d d | d d | d d d S )Nrg  r  ri  rh  rj  r  rk  u
   x𐑏X𐐧rl  r~  rm  rn  ro  rp  rq  u   Ισrr  u   aΙςrs  u   aΙσArt  u   aςΙru  u   σΙ ry  r  r  r  )r   r   test_swapcaser4   swapcaser)   r
   r
   r   r    s6   



zUnicodeTest.test_swapcasec                 C   sL   t j|  | dddd | dddd | dddd d S )	Nr   r}   r=  u   x􏿿rw   u	   􏿿x􏿿r   u   􏿿x􏿿􏿿)r   r   test_centerr4   centerr)   r
   r
   r   r    s   zUnicodeTest.test_centerizrequires 32-bit systemc                 C   sR   d}zd| }W n t y   | d|d   Y nw z| t|j W ~d S ~w )NiVUU   üz$no enough memory (%.0f MiB required)i   )MemoryErrorZskipTestr@   r   r  )r*   r   r  r
   r
   r   test_case_operation_overflow  s   
z(UnicodeTest.test_case_operation_overflowc                 C   s  |  dd |  dd |  dd |  dd | dd |  dd |  dd |  dd |  dd |  dd | dd	 | dd
 | dd |  dd |  dd |  dd |  dd |  dd |  dd | dd |  dd |  dd |  dd |  dd | dd | dd | tdj dD ]-}|d9 }dD ]$}| || |  |||  | |d | |  |d ||d   qqd S )Nry   ZabdbZbdabZbdabaZbdbaZbdb)ry   r{   N)r{   Nry   )r   r{   y)r   r{   Nr   ZabcxxxxabrG   )r{   Nr  r_    z abczabc ZasdfZasd)ry      Āu   𐌀r   r   r}   )assertInZassertNotInr@   rl   __contains__)r*   fillr   r
   r
   r   test_contains  sH   zUnicodeTest.test_containsc                 C   sX   d   d  d  d  d  d  ddd ddd ddd d S )Nu   𐀀􀀀   􀀀rw      𐀀)	rx  r|  r  r  r  r  r  ljustrjustr)   r
   r
   r   test_issue18183  s   zUnicodeTest.test_issue18183c                 C   s4  |  d d |  d d |  d d |  d d |  d d |  d d	 |  d
 d |  d d dd l}|  ddd |  dtddd |  ddd |ddd}|  d|d G dd d}G dd d}G dd  d }G d!d" d"}G d#d$ d$}G d%d& d&|j}G d'd( d(t}	G d)d* d*}
G d+d, d,}|  d d |  d- d- |  d.d-d- |  d/d-d- |  d0d-d1 |  d2d-d3 |  d4d-d5 |  d6d7d-d- |  d8d7d-d1 |  d9d7d-d3 |  d:d7d-d5 |  d.d;d< |  d=d;d-d> |  d?d;d-d@ |  dA dB |  dC dD |  dE dF |  dG dH |  dIdJdK |  dL dM |  dN dO |  dP dQ |  dRdSdTidT |  dUdVdTidT |  dWdXdYidZ |  d[j|d\d]d^ |  d_|d`|d\da |  db||d-d- |  dcd-ddgd- |  ded-ddgdd |  dfd-ddggdd |  dgd-|ddggdd |  dhd-d- |  dhdd |  dhdid- |  djdid |  dkd-d- |  dld-d- |  dmd-d |  dnd-do |  dpdqdq |  drdqdq |  dsdqdq |  dtdqdu |  dvdqdw |  dxdqdy |  dzdqdy |  d{dqd| |  d}dqd~ |  ddqd |  ddqd |  ddqd |  ddqd |  ddqdq |  ddqd |  ddqd |  ddqd |  ddqd |  ddddXd   |  dddXd  |  dddXd  |  ddd |  ddd |  ddd |  ddd |  ddYd |  ddYd |  ddYd |  ddYd |  ddd |  ddd |  ddd |  ddd |  ddd |  ddd |  ddd |  ddd |  d| d- |  ddd |  ddd |  ddd |  ddd |  ddd |  ddd |  d|dd |  ddd |  ddd¡ |  d|ddá |  dĠdd |  dĠdd |  dĠddš |  dƠdd |  dĠ|dd |  dĠ|ddǡ |  d.i dF |  d.g dȡ |  d.d7gdɡ |  dʠ|d˃d̡ |  d|d˃d͡ | tdj|d˃ | tdj|d˃ | tdj|d˃ |  dР|ddddҍdӡ |  d.|	d`d^ |  d/dd |  dԠdd֡dס |  dؠdd֡dס |  djdddڍdס |  djdd`dd܍dݡ |  djdddd܍dݡ | tdBj | tdDj | tdj | tdj | tdj | tdj | t	d.j | t	d6jd- | t
dHj | tdOj | tdj | tdj | t	dj | tdjd | tdj | tdjg  | t
dj | tdjd | tdjd | tdjd | tdjd | t
dj | tdjd | tdjd | jt
djdYd | tdjdY | tdjd | tdjd | tdj | t	dj | t	dj | t	dFj d}| tdB| dD j | td| d jdg | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | tdjd | td jd g | tdjd g | tdjdd | tdjd-dd | tdjdd7ddYdd֐d	d

 d}| t|djd | t|tdd d}| t|djd | tdjd | ttdd | ttdd |  dddd |  dhdd |  djdd |  ddFdidߡ |  ddFdid |  ddBdid |  ddDdid |  dddid |  dddid | tdjd | td jd | td!jd |  d"dd#d$ |
d˃}|  d%|d& | td'j| | tdFj| |d˃}|  d%|d( |  d'|d( | tdFj| d S ()  Nr_   ry   r  a{{a{a}}a}{{b{b}}b}ba{{ba{br   zMy name is {0}Z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dZdd ZdS )z"UnicodeTest.test_format.<locals>.Cr   c                 S   r   r%   Z_xr*   r   r
   r
   r   r   	     
z+UnicodeTest.test_format.<locals>.C.__init__c                 S      |S r%   r
   r*   specr
   r
   r   
__format__  r   z-UnicodeTest.test_format.<locals>.C.__format__Nr   r    r!   r"   r   r  r
   r
   r
   r   C      
r  c                   @   r   )z"UnicodeTest.test_format.<locals>.Dc                 S   r   r%   r   r  r
   r
   r   r     r  z+UnicodeTest.test_format.<locals>.D.__init__c                 S   
   t | jS r%   )r-   r   r  r
   r
   r   r    r  z-UnicodeTest.test_format.<locals>.D.__format__Nr  r
   r
   r
   r   D      r  c                   @   r   )z"UnicodeTest.test_format.<locals>.Ec                 S   r   r%   r  r  r
   r
   r   r     r  z+UnicodeTest.test_format.<locals>.E.__init__c                 S      d| j  d S )NzE()r  r)   r
   r
   r   r     r/   z*UnicodeTest.test_format.<locals>.E.__str__Nr   r
   r
   r
   r   E  r  r  c                   @   r   )z"UnicodeTest.test_format.<locals>.Fc                 S   r   r%   r  r  r
   r
   r   r     r  z+UnicodeTest.test_format.<locals>.F.__init__c                 S   r  )NzF(r  r  r)   r
   r
   r   r.     r/   z+UnicodeTest.test_format.<locals>.F.__repr__N)r    r!   r"   r   r.   r
   r
   r
   r   F  r  r  c                   @   $   e Zd Zdd Zdd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Gc                 S   r   r%   r  r  r
   r
   r   r   $  r  z+UnicodeTest.test_format.<locals>.G.__init__c                 S   s
   d| j  S )Nz
string is r  r)   r
   r
   r   r   &  r  z*UnicodeTest.test_format.<locals>.G.__str__c                 S   s"   |dkrd| j  d S t| |S )Nr   zG(r  )r   r8   r  r*   format_specr
   r
   r   r  (  s   z-UnicodeTest.test_format.<locals>.G.__format__N)r    r!   r"   r   r   r  r
   r
   r
   r   G#      r  c                   @   r,   )z"UnicodeTest.test_format.<locals>.Ic                 S   s
   |  |S r%   )strftimer  r
   r
   r   r  .  r  z-UnicodeTest.test_format.<locals>.I.__format__Nr    r!   r"   r  r
   r
   r
   r   I-  r2   r  c                   @   r,   )z"UnicodeTest.test_format.<locals>.Jc                 S   s   t | d |S Nr}   )r   r  r  r
   r
   r   r  2     z-UnicodeTest.test_format.<locals>.J.__format__Nr  r
   r
   r
   r   J1  r2   r  c                   @       e Zd Zdd Zdd ZdZdS )z"UnicodeTest.test_format.<locals>.Mc                 S   r   r%   r  r  r
   r
   r   r   6  r  z+UnicodeTest.test_format.<locals>.M.__init__c                 S   r  )NzM(r  r  r)   r
   r
   r   r.   8  r/   z+UnicodeTest.test_format.<locals>.M.__repr__N)r    r!   r"   r   r.   r   r
   r
   r
   r   M5      r  c                   @   r  )z"UnicodeTest.test_format.<locals>.Nc                 S   r   r%   r  r  r
   r
   r   r   =  r  z+UnicodeTest.test_format.<locals>.N.__init__c                 S   r  )NzN(r  r  r)   r
   r
   r   r.   ?  r/   z+UnicodeTest.test_format.<locals>.N.__repr__N)r    r!   r"   r   r.   r  r
   r
   r
   r   N<  r  r  rG   {0}z{0:}zX{0}ZXabcz{0}XZabcXzX{0}YZ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-barZbazz{0[foo bar]}zfoo barz{0[ ]}r?   rw   r   {foo._x}   )r   20z{1}{0}r~   Z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}r7   z{0:x<5s}z{0:x<6s}z{0:x<7s}Zresultxz{0:x<8s}Z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}Zresult00z{0:<08s}z{0:>08s}Z00resultz{0:^08s}Z0result0z	{0:10000}i'  i'  z{0:10000000}i z{0: <6s}r   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}ZHelloz{0!s:}z{0!s:15}zHello          z	{0!s:15s}z{0!r}z'Hello'z{0!r:}zF(Hello)rZ  z'\u0378'rY  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}   )ZyearZmonthZ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}Z,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}]}rX  r   z{0:{1:{2}}}r  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{[[]}rP  z{[!]}r   z{a{}b}r	   z{a{b}z{[}z0x{:0{:d}X}   Z0x0000000000000000{!r}zM(data)z{!s}zN(data))r4   r(  datetimedictdater   r@   rl   r   
IndexErrorKeyErrorassertRaisesRegex)r*   r  r   r  r  r  r  r  r  r  r  r  bigZsign_msgZ	space_msgmnr
   r
   r   test_format  s  
zUnicodeTest.test_formatc                 C   s  |  di d |  di d |  di d |  di d |  di d |  di d	 |  d
i d |  di d G dd dt}|  d| d |  d|ddd G dd d}|  d| d G dd d}|  dd|did | tdj | tdj | tdji  | tdji  | tdji  | tdji  | td ji  | td!ji  | td"jdd#i | td"jd | td$jd#d%d& G d'd( d(}| tdji  | tdjg  | tdj|  d S ))Nr_   ry   r  r  r  r  r  r  r  r  r  r  r  c                   @   r,   )z,UnicodeTest.test_format_map.<locals>.Mappingc                 S   r  r%   r
   r*   keyr
   r
   r   __missing__E  r   z8UnicodeTest.test_format_map.<locals>.Mapping.__missing__N)r    r!   r"   r  r
   r
   r
   r   MappingD  r2   r  z{hello}r   z{a} {world})ry   r  c                   @   r   )z4UnicodeTest.test_format_map.<locals>.InternalMappingc                 S   s   ddi| _ d S )Nry   r   r   r)   r
   r
   r   r   K  r/   z=UnicodeTest.test_format_map.<locals>.InternalMapping.__init__c                 S   s
   | j | S r%   r  r  r
   r
   r   __getitem__M  r  z@UnicodeTest.test_format_map.<locals>.InternalMapping.__getitem__N)r    r!   r"   r   r  r
   r
   r
   r   InternalMappingJ  r  r  z{a}c                   @   r  )z&UnicodeTest.test_format_map.<locals>.Cr   c                 S   r   r%   r  r  r
   r
   r   r   S  r  z/UnicodeTest.test_format_map.<locals>.C.__init__c                 S   r  r%   r
   r  r
   r
   r   r  U  r   z1UnicodeTest.test_format_map.<locals>.C.__format__Nr  r  r
   r
   r
   r   r  R  r  r  r  r   r  r  r  r  r  r  r  r}   z{a} {}r{   r   c                   @   r,   )z/UnicodeTest.test_format_map.<locals>.BadMappingc                 S   s   dd S )Nr{   r   r
   r  r
   r
   r   r  j     z;UnicodeTest.test_format_map.<locals>.BadMapping.__getitem__N)r    r!   r"   r  r
   r
   r
   r   
BadMappingi  r2   r  )r4   
format_mapr  r@   rl   r   r  ZeroDivisionError)r*   r  r  r  r  r
   r
   r   test_format_map9  s<   zUnicodeTest.test_format_mapc                 C   J   d tjd }| t t d|}W d    d S 1 sw   Y  d S )Nz.{}fr{   Q@r(  rd   r   r@   r   r*   format_stringr7   r
   r
   r   test_format_huge_precisionp     "z&UnicodeTest.test_format_huge_precisionc                 C   r   )Nz{}fr{   r  r  r  r
   r
   r   test_format_huge_widthu  r  z"UnicodeTest.test_format_huge_widthc                 C   sJ   d tjd }| t | d}W d    d S 1 sw   Y  d S )Nz
{{{}:.6f}}r{   r  r  r  r
   r
   r   test_format_huge_item_numberz  r  z(UnicodeTest.test_format_huge_item_numberc                 C   sp  G dd d}|  ddd |  ddd |  d	dd
 |  d|dd |  dddgd |  ddddd |  dddd |  dddd |  dddd | tdjdd | td jdd | td!jdd | td"jdd |  d#jdd$d%d& |  d'jdd$d%d( |  d)jdd*d+dd,d- |  d.jdddd+d/d0 d S )1Nc                   @   r  )z1UnicodeTest.test_format_auto_numbering.<locals>.Cr   c                 S   r   r%   r  r  r
   r
   r   r     r  z:UnicodeTest.test_format_auto_numbering.<locals>.C.__init__c                 S   r  r%   r
   r  r
   r
   r   r    r   z<UnicodeTest.test_format_auto_numbering.<locals>.C.__format__Nr  r  r
   r
   r
   r   r    r  r  r  r~   r  z{:5}r  zs    r  z's'z{._x}z{[1]}r{   r}   r   z{[a]}r   r   4za{}b{}cr   Za0b1cza{:{}}br   z^10za    x     bza{:{}x}br  r  Za0x14bz{}{1}z{1}{}z{:{1}}z{0:{}}z{f}{}test)fZtest4z{}{f}Z4testz{:{f}}{g}{}rw   g)r  r  z 1g3z{f:{}}{}{g})r  r  z 14g)r4   r(  r@   r   )r*   r  r
   r
   r   test_format_auto_numbering  s$   z&UnicodeTest.test_format_auto_numberingc           
      C   s  t j|  | dd d | dd d | dd d | dd	 d
 | dd d | dd d tjdsT| dd d | dd d | dd d | dddd d | dddd d | dd  d! | dd" d# | tdj	d$ | dd# d# | t
dj	d% | td&j	d' | t
d(j	d% | d)d*di d+ | d)d*di d+ | d)d*di d+ | d)d*di d+ | d)dd,d- d+ | d)dd,d- d+ | d.d/ d0 | d1d/ d2 | d3d d+ | d4d5 d6 | d4d7 d8 | d9d: d; | d9d< d6 | d=d> d? | d@dA dB | ddC dC G dDdE dE}| dF|  d! tdG}tdH}| dI| dG | dJ| dK | dI| dH | dJ| dL | dMdN dC | dOdN dP G dQdR dR}G dSdT dT}|dU}|dV}| dWdX dY | dZd[ d\ | d]d^ d_ | ddV d` | dW| da | dZ| db | d]| dc | d| d` | t
ddtjdWde | t
dftjdZdg | t
dhtjd]di | t
djtjdW| | t
dktjdWdl | t
dmtjdZdn | t
dotjd]dp | t
dqtjdrdl | t
dstjd(dn | t
dttjdudp | t
dvtjd| G dwdx dx}| }	| tdytjdu|	 | tdytjd(|	 | tdytjdr|	 | tdztjdW|	 | tdztjdZ|	 | tdztjd]|	 d S ){N%s, %s)rG   rG   zabc, abcz%s, %s, %i, %f, %5.2f)rG   rG   r{   r}   rw   zabc, abc, 1, 2.000000,  3.00)rG   rG   r{   rw   zabc, abc, 1, -2.000000,  3.00)rG   rG   r|   r  g      @zabc, abc, -1, -2.000000,  3.50)rG   rG   r|   r  g(\@zabc, abc, -1, -2.000000,  3.57)rG   rG   r|   r  g(\\@z abc, abc, -1, -2.000000, 1003.57rF   z%r, %r)r  rG   zb'abc', 'abc'z%r)   ሴu   'ሴ'z%az'\u1234'z%(x)s, %(y)srG   r   )r   r  zabc, defu   %(x)s, %(ü)s)r   r  z%ci4  r  i u   𡒃)r>   Zaau   %.1ဲfgUUUUUU?z%i...%(foo)s...r   z	...abc...r  r   r   z...%s...%s...%s...%s...)r{   r}   rw   rG   z...1...2...3...abc...z"...%%...%%s...%s...%s...%s...%s...z...%...%s...1...2...3...abc...z...%s...z%*s)r  rG   z  abc)rG   zabc  z%*.*s)r  r}   rG   z   ab)r  rw   rG   z%i %*.*s)r~   r  rw   rG   z10   abcz
%i%s %*.*s)r~   rw   r  rw   rG   z	103   abcry   c                   @   r,   )z,UnicodeTest.test_formatting.<locals>.Wrapperc                 S   r   )Nr  r
   r)   r
   r
   r   r     r   z4UnicodeTest.test_formatting.<locals>.Wrapper.__str__Nr    r!   r"   r   r
   r
   r
   r   Wrapper  r2   r  %snaninfz%fz%FNANINFz%.1su   aé€z%.2su   aéc                   @   r  )z.UnicodeTest.test_formatting.<locals>.PseudoIntc                 S      t || _d S r%   r   valuer*   r  r
   r
   r   r     r/   z7UnicodeTest.test_formatting.<locals>.PseudoInt.__init__c                 S   r   r%   r  r)   r
   r
   r   __int__     z6UnicodeTest.test_formatting.<locals>.PseudoInt.__int__c                 S   r   r%   r  r)   r
   r
   r   	__index__  r!  z8UnicodeTest.test_formatting.<locals>.PseudoInt.__index__N)r    r!   r"   r   r   r"  r
   r
   r
   r   	PseudoInt  r  r#  c                   @   r   )z0UnicodeTest.test_formatting.<locals>.PseudoFloatc                 S   r  r%   )floatr  r  r
   r
   r   r     r/   z9UnicodeTest.test_formatting.<locals>.PseudoFloat.__init__c                 S   r  r%   r  r)   r
   r
   r   r     r  z8UnicodeTest.test_formatting.<locals>.PseudoFloat.__int__N)r    r!   r"   r   r   r
   r
   r
   r   PseudoFloat  r  r%  go!	@m   z%xr	   Z2az%X   r  z%or   Z11r  Z6dZ6DZ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                   @   r   )z2UnicodeTest.test_formatting.<locals>.RaisingNumberc                 S      t d)Nr   RuntimeErrorr)   r
   r
   r   r     r  z:UnicodeTest.test_formatting.<locals>.RaisingNumber.__int__c                 S   r(  )Nr   r)  r)   r
   r
   r   r"    r  z<UnicodeTest.test_formatting.<locals>.RaisingNumber.__index__N)r    r!   r"   r   r"  r
   r
   r
   r   RaisingNumber  r  r+  r   r   )r   r   test_formattingr4   rd   re   rf   r@   r   __mod__rl   r   r$  r  operatormodr*  )
r*   r  r  r  r#  r%  piZletter_mr+  Zrnr
   r
   r   r,    s   zUnicodeTest.test_formattingc              
   C   s  dd l }G dd dt|j}G dd d|j}G dd dt|j}| d|j|jf d	 | d
|j|j|j|j|j|j|jf d | dd|ji d | dd|ji d | dd|ji d | dd|ji d | d|j|jd d | d|jdd d d S )Nr   c                   @      e Zd ZdZdS )z4UnicodeTest.test_formatting_with_enum.<locals>.FloatgJM!	@N)r    r!   r"   PIr
   r
   r
   r   Float      r3  c                   @   r1  )z2UnicodeTest.test_formatting_with_enum.<locals>.Intr'  N)r    r!   r"   IDESr
   r
   r
   r   Int  r4  r6  c                   @   r1  )z2UnicodeTest.test_formatting_with_enum.<locals>.StrrG   N)r    r!   r"   r  r
   r
   r
   r   Str  r4  r7  r  zStr.ABC, Str.ABCz%s, %s, %d, %i, %u, %f, %5.2fz-Str.ABC, Str.ABC, 15, 15, 15, 3.141593,  3.14r  r   z...Str.ABC...z...Int.IDES...z...%(foo)i...z...15...z...%(foo)d...z...%(foo)u...r  z...%(foo)f...r  z...3.141593...)	enumr$  EnumIntEnumr-   r4   r  r5  r2  )r*   r8  r3  r6  r7  r
   r
   r   test_formatting_with_enum  sB   z%UnicodeTest.test_formatting_with_enumc                 C   H   d tjd }| t |d }W d    d S 1 sw   Y  d S )N%.{}fr{   r  r  r  r
   r
   r   test_formatting_huge_precision(     
"z*UnicodeTest.test_formatting_huge_precisionc                 C   s(   G dd dt }| d|d d d S )Nc                   @   r,   )zBUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStrc                 S   s
   d |S )Nz'Success, self.__rmod__({!r}) was calledr(  )r*   otherr
   r
   r   __rmod__1  r  zKUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStr.__rmod__N)r    r!   r"   rB  r
   r
   r
   r   SubclassedStr0  r2   rC  z	lhs %% %rZrhsz.Success, self.__rmod__('lhs %% %r') was calledr-   r4   )r*   rC  r
   r
   r   test_issue28598_strsubclass_rhs-  s   z+UnicodeTest.test_issue28598_strsubclass_rhsc                 C   sR   ddl m} d|d }| t |d }W d    d S 1 s"w   Y  d S )Nr   )INT_MAXr=  r{   r  )rT  rF  r(  r@   r   )r*   rF  r  r7   r
   r
   r   'test_formatting_huge_precision_c_limits6  s
   
"z3UnicodeTest.test_formatting_huge_precision_c_limitsc                 C   r<  )Nz%{}fr{   r  r  r  r
   r
   r   test_formatting_huge_width=  r?  z&UnicodeTest.test_formatting_huge_widthc              	   C   sl   dj djfD ]-}| t}|dg W d    n1 sw   Y  t|j}| d| | d| qd S )Nr   r  r-   tuple)rf   endswithr@   rl   r-   	exceptionr  )r*   re  cmexcr
   r
   r   test_startswith_endswith_errorsB  s   
z+UnicodeTest.test_startswith_endswith_errorsLC_ALLde_DEfr_FRc                 C   s   |  ddd  d S )Nz1.0z%.1fr  r4   r)   r
   r
   r   test_format_floatJ  s   zUnicodeTest.test_format_floatc                 C   sZ  |  tdd dD ].}t|}|  t|| |  t|t| |dkr8|  |dd |  |dd q
|  tdd G dd d}|  t|d	d	 |d
}|  t|d
 |  t|d
 dD ]}|  t|tt| qhtjds| t	tddd |  tdddd tjds|  tt
dddd | t	tddd d S )Nzunicode remains unicode)rg   r   r  r=  rg   s   asciiutf-8z strings are converted to unicodec                   @   r   )z2UnicodeTest.test_constructor.<locals>.StringCompatc                 S   r   r%   r  r  r
   r
   r   r   e  r  z;UnicodeTest.test_constructor.<locals>.StringCompat.__init__c                 S   r   r%   r  r)   r
   r
   r   r   g  r!  z:UnicodeTest.test_constructor.<locals>.StringCompat.__str__Nr   r
   r
   r
   r   StringCompatd  r  rU  z)__str__ compatible objects are recognizedz#unicode(obj) is compatible to str())r  g^@r  rF   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	   )r4   r-   r   lenr   rd   re   rf   r@   rl   
memoryview)r*   r   subclassrU  oobjr
   r
   r   test_constructorO  s`   

	zUnicodeTest.test_constructorc                 C   sR   |  tddd |  tdddd |  tdddd |  tdddd d	S )
z>Pass various keyword argument combinations to the constructor.r   )r8   s   foorT  )r8   r   r   r   )r8   r   N)r4   r-   r)   r
   r
   r   test_constructor_keyword_args  s   z)UnicodeTest.test_constructor_keyword_argsc                 C   sT   |  t d |  tddd dd}|  t|ddd | jtt|dd dS )	z(Check the constructor argument defaults.r_   r   r\     ¢rT  rg   )r   N)r4   r-   r   r@   UnicodeDecodeError)r*   Z	utf8_centr
   r
   r   test_constructor_defaults  s
   
z%UnicodeTest.test_constructor_defaultsc                 C   s  g d}|D ]\}}|  |d| q|  ddd |  ddd |  ddd |  d	dd
 |  ddd |  ddd |  ddd |  d
dd	 |  ddd |  ddd |  dddd d}d}|D ]}|  |d|d |  |dd| q~|D ]}|  |dd| q| td dd W d    d S 1 sw   Y  d S )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?rb  )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   +r  r_   zGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?z!"#$%&*;<=>@[]^_`{|}utf7rg   zill-formed sequences   +@)r4   r   r   r  r_  )r*   ZutfTestsr   r  Zset_dZset_or   r
   r
   r   test_codecs_utf7  s4   "zUnicodeTest.test_codecs_utf7c                 C   s   |  ddd |  ddd |  ddd |  ddd	 |  d
ddd |  dddd |  ddd |  ddd |  td	dd |  tddd |  tddd d S )Nr_   rT      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)r4   r   r-   r)   r
   r
   r   test_codecs_utf8  s"   zUnicodeTest.test_codecs_utf8c                 C   s,   g d}|D ]\}}|  |d| qd S )N))    r  )   ary   )   )s      )s   ߿u   ߿)s   ࠀu   ࠀ)s   ퟿u   ퟿)s   r  )s   ￿r=   )s   𐀀r  )s   􏿿r=  rT  )r4   r   )r*   	sequencesr   resr
   r
   r    test_utf8_decode_valid_sequences  s   z,UnicodeTest.test_utf8_decode_valid_sequencesc           
      C   s  dd t ddD }dd t ddD }dd t dd	D }|| | d
d t ddD  }|D ]
}| t|jd q0|D ]}|D ]}| t|| jd qAq=|D ]"}|d d D ]}|d d D ]}	| t|| d |	 jd qaqYqQdd t ddD D ]}| td| d jd | td| d jd q~dd t ddD D ]}| td| d jd | td| d jd qdd t ddD D ]}| td| d jd | td| d jd qdd t ddD D ]}| td| d jd | td| d jd qd S )Nc                 S      g | ]}t |gqS r
   r   .0r   r
   r
   r   
<listcomp>      zBUnicodeTest.test_utf8_decode_invalid_sequences.<locals>.<listcomp>      c                 S   rs  r
   rt  ru  r
   r
   r   rw    rx     c                 S   rs  r
   rt  ru  r
   r
   r   rw    rx        c                 S   rs  r
   rt  ru  r
   r
   r   rw    rx     r`   rT  rw      c                 S   rs  r
   rt  ru  r
   r
   r   rw  +  rx           c                 S   rs  r
   rt  ru  r
   r
   r   rw  1  rx     c                 S   rs  r
   rt  ru  r
   r
   r   rw  6  rx           s   c                 S   rs  r
   rt  ru  r
   r
   r   rw  ;  rx     )rk   r@   r_  r   )
r*   Zcontinuation_bytesZinvalid_2B_seq_start_bytesZinvalid_4B_seq_start_bytesZinvalid_start_bytesbyteZsbcbZcb1Zcb3r
   r
   r   "test_utf8_decode_invalid_sequences  sh   z.UnicodeTest.test_utf8_decode_invalid_sequencesc                 C   sz  d}g d|fd|d fd|fd|d fd|fd|d fd	|d fd
|fd|d fd|d fd|d fd|fd|d fd|d fd|d fd|fd|d fd|d | fd|d fd|d fd|d d fd|d | fd|fd|d fd|d fd |d fd!|d" fd#|fd$|fd%|d fd&|d fd'|d fd(|d | fd)|d |d  fd*|d | d fd+|d | fd,|d | fd-|d |d  fd.|d d fd/|d |d  fd0|fd1|d fd2|d fd3|d fd4|d fd5|d d fd6|d d | fd7|d |d  d fd8|fd9|d fd:|d fd;|d d fd<|d" fd=|fd>|d fd?|d fd@|dA fdB|fdC|d fdDdEdFdG}t |D ]6\}\}}| t|jdHdI | |dHdJ| | |dK dHdJ|dL  | |dHdM|ddN qd S )ON   �r  r  r}      s      s   s      s   s   rw   s   Ar      s   s   s   r   s   s   As   As   AAZ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��drT  r   r      brz   r  r_   )	enumerater@   r_  r   r4   r   )r*   FFFDrp  r  r   rq  r
   r
   r   test_issue8271A  s  

















 !
"
#
$%&'()*+,.
/
0
1
23457
8
9:
;=
>
?
@B
CEFGHK
zUnicodeTest.test_issue8271c                 C   s   |  t}|d W d   n1 sw   Y  |j}| |t| | |dd| | d| d ddd| d  |dd	}| |dd
| | d| d dd
d| d  dS )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.
        rT  Nr   s   aaaas   bbbbZaaaaZbbbbr  r_   r  )r@   r_  r   rK  r  r-   r4   r   )r*   r   rq  errrL  rM  r
   r
   r   assertCorrectUTF8Decoding  s   

z%UnicodeTest.assertCorrectUTF8Decodingc                 C   s&   d}dD ]}|  t|gdd qdS )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  r   )r*   r  r  r
   r
   r   test_invalid_start_byte  s   z#UnicodeTest.test_invalid_start_bytec                 C   s.   g d}d}|D ]}|  t|dd qdS )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.
        )&ZC2Z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  r   fromhex)r*   rp  r  r   r
   r
   r   test_unexpected_end_of_data  s   	z'UnicodeTest.test_unexpected_end_of_datac              	   C   sv   d}|d }d|d fd|d fd|fd|fd	|d fd
|d fd|fd|fg}|D ]\}}|  t||d q*dS )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 7Frn  zC2 C0zC2 FFzDF 00zDF 7FzDF C0zDF FFinvalid continuation byteNr  r*   r  ZFFFDx2rp  r   rq  r
   r
   r   test_invalid_cb_for_2bytes_seq  s   
z*UnicodeTest.test_invalid_cb_for_2bytes_seqc                 C   s(  d}|d }g d|d fd|d fd|fd|fd	|fd
|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd |d fd!|fd"|fd#|d fd$|d fd%|fd&|fd'|d fd(|d fd)|fd*|fd+|d fd,|d fd-|fd.|fd/|fd0|fd1|d fd2|d fd3|fd4|fd5|d fd6|d fd7|fd8|fd9|d fd:|d fd;|fd<|fd=|d fd>|d fd?|fd@|fdA|d fdB|d fdC|fdD|fdE|d fdF|d fdG|fdH|fdI|d fdJ|d fdK|fdL|fdM|d fdN|d fdO|fdP|f}|D ]\}}|  t||dQ qdRS )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 7Frn  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  r
   r
   r   test_invalid_cb_for_3bytes_seq  s@  









		


























 
 !!#z*UnicodeTest.test_invalid_cb_for_3bytes_seqc                 C   s  d}|d }g d|d fd|d fd|fd|fd	|fd
|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd|d fd|fd|fd|d fd |d fd!|fd"|fd#|d fd$|d fd%|fd&|fd'|d fd(|d fd)|fd*|fd+|d fd,|d fd-|fd.|fd/|d fd0|d fd1|fd2|fd3|d fd4|d fd5|fd6|fd7|d fd8|d fd9|fd:|fd;|d fd<|d fd=|fd>|fd?|d fd@|d fdA|fdB|fdC|d fdD|d fdE|fdF|fdG|d fdH|d fdI|fdJ|fdK|d fdL|d fdM|fdN|fdO|d fdP|d fdQ|fdR|fdS|d fdT|d fdU|fdV|fdW|d fdX|d fdY|fdZ|fd[|d fd\|d fd]|fd^|fd_|fd`|fda|d fdb|d fdc|fdd|fde|d fdf|d fdg|fdh|fdi|d fdj|d fdk|fdl|fdm|d fdn|d fdo|fdp|fdq|d fdr|d fds|fdt|fdu|d fdv|d fdw|fdx|f}|D ]\}}|  t||dy qJdzS ){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 7Frn  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  r
   r
   r   test_invalid_cb_for_4bytes_seq$  s  








	
	
























 
 !!
"
"##
$
$%%
&
&''
(
())
*
**+++
,
,--
.
.//
0
011
2
233
4
455
6
6779z*UnicodeTest.test_invalid_cb_for_4bytes_seqc                 C   s   |  ddd d S )Nzwww.python.org.Zidnas   www.python.org.)r4   r   r)   r
   r
   r   test_codecs_idnas  s   zUnicodeTest.test_codecs_idnac                 C   s  |  tdjd |  tdjdd | dddd | dddd | ddddjddd | ddddjddd	 |  ttd
d |  ttd
dd | td
ddd | td
ddd | tdddd | dddd |  tdjd |  tdjd |  ttdd |  tdjd |  tdjd |  tdjddd |  ttd |  ttd |  tt	d |  tt	d |  tt
d |  tt
d d S )Nu   Andr xrg   r   r  s   Andr xr   s   Andr? xr\  )r   r   s   Andr xzAndr xu	   Andr� xs    xu   � xs	   \N{foo}xxzunicode-escapexx   \   hellor   r   r   r	   r[  u   )r@   UnicodeErrorr   r4   r-   r   rl   r   r   r$  complexr)   r
   r
   r   test_codecs_errorsw  s8   zUnicodeTest.test_codecs_errorsc              	   C   s  |  ddd |  ddd |  ddd |  ddd |  ddd |  ddd	 |  dd
d |  d d tdD ]}t|}dD ]}|  t|||| qSqKtdD ]}t|}dD ]}|  t|||| qoqgtdD ]}t|}dD ]}|  t|||| qqt  d}dD ]}|  t|||| qW d    n1 sw   Y  dttt	tddt	tdd }dD ]}|  t|||| qd S )Nr   rg   r  re  rT  	utf-16-les
   h e l l o 	utf-16-bes
    h e l l olatin-1u   ☃s   ☃i   )re  rT  utf-16r  r  raw_unicode_escapeunicode_escaper`   )r  ry  )rg   u   𐀁𠀂𰀃񀀄񐀅)rT  r  r  r  r  r  r_   r   i   i   r>   )rT  )
r4   r   rk   rj   r-   r	  catch_warningsrh   ri   list)r*   r   rV  r   r
   r
   r   test_codecs  sF   
zUnicodeTest.test_codecsc                 C   sb   t td}dD ]}| t|||| qt tdd}dD ]}| t|||| q d S )Nry  )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cp1258Zcp856cp857cp864cp869Zcp874	mac_greekmac_iceland	mac_romanmac_turkishZ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  )r   rk   r4   r-   r   )r*   r  r   r
   r
   r   test_codecs_charmap  s   zUnicodeTest.test_codecs_charmapc                 C   s@   |  dd |  dd |  dd |  dd |  dd d S )Nr  r   rR  r)   r
   r
   r   test_concatenation	  s
   zUnicodeTest.test_concatenationc              
   C   s   d}| dd}| || d}|d d}| || d}|d d}| || zdd W n! tyX } z| |jd | |jd W Y d }~d S d }~ww | d d S )	Nr  zraw-unicode-escapes
   \U00100000s
   \U00010000s
   \U11111111r   r~   z%Should have raised UnicodeDecodeError)r   r   r4   r_  startendZfail)r*   r   r  r   r
   r
   r   	test_ucs4	  s"   zUnicodeTest.test_ucs4c                 C   s   G dd d}G dd dt }G dd dt }| t | d | t |dd t |d}| |d	 | t|| t|d}| |d	 | t|t d S )
Nc                   @   r,   )z0UnicodeTest.test_conversion.<locals>.ObjectToStrc                 S   r   Nr   r
   r)   r
   r
   r   r   $	  r   z8UnicodeTest.test_conversion.<locals>.ObjectToStr.__str__Nr  r
   r
   r
   r   ObjectToStr#	  r2   r  c                   @   r,   )z5UnicodeTest.test_conversion.<locals>.StrSubclassToStrc                 S   r   r  r
   r)   r
   r
   r   r   (	  r   z=UnicodeTest.test_conversion.<locals>.StrSubclassToStr.__str__Nr  r
   r
   r
   r   StrSubclassToStr'	  r2   r  c                   @   r  )z=UnicodeTest.test_conversion.<locals>.StrSubclassToStrSubclassr_   c                 S   s   t | d| S r  )r-   __new__)clsZcontentr
   r
   r   r  ,	  r  zEUnicodeTest.test_conversion.<locals>.StrSubclassToStrSubclass.__new__c                 S   s   | S r%   r
   r)   r
   r
   r   r   .	  r   zEUnicodeTest.test_conversion.<locals>.StrSubclassToStrSubclass.__str__N)r_   )r    r!   r"   r  r   r
   r
   r
   r   StrSubclassToStrSubclass+	  r  r  r   r  Zfoofoo)r-   r4   r   r6   r   )r*   r  r  r  r  r
   r
   r   test_conversion!	  s   zUnicodeTest.test_conversionc                 C   sD   G dd d}G dd d}|  t| d |  t| d d S )Nc                   @   r,   )z)UnicodeTest.test_unicode_repr.<locals>.s1c                 S   r   N\nr
   r)   r
   r
   r   r.   <	  r   z2UnicodeTest.test_unicode_repr.<locals>.s1.__repr__Nr0   r
   r
   r
   r   s1;	  r2   r  c                   @   r,   )z)UnicodeTest.test_unicode_repr.<locals>.s2c                 S   r   r  r
   r)   r
   r
   r   r.   @	  r   z2UnicodeTest.test_unicode_repr.<locals>.s2.__repr__Nr0   r
   r
   r
   r   r  ?	  r2   r  r  r4   rp   )r*   r  r  r
   r
   r   test_unicode_repr:	  s   zUnicodeTest.test_unicode_reprc                 C   s(   |  tddd  |  tdd d S )Nr  z'%c')   u   𔀀z'\U00014000'r  r)   r
   r
   r   test_printable_reprF	  s   zUnicodeTest.test_printable_reprPr   z only applies to 32-bit platformsc                 C   s   |  tdjtj d S )Nzt	t	)r@   r   
expandtabsrd   r   r)   r
   r
   r   $test_expandtabs_overflows_gracefullyM	  s   z0UnicodeTest.test_expandtabs_overflows_gracefullyc                 C   s   d}|  | | d S )NrG   )r   r  )r*   r  r
   r
   r   test_expandtabs_optimizationR	  s   z(UnicodeTest.test_expandtabs_optimizationc                    s   t ddkrd}d}nd}d}dD ]6 t }|dk r!d	}|}n|d
k r*d}|}nd}|}tj| |  fdd}| t| | t| qd S )Nr  r   0   H      $   )ry   r   r  r=  r`   r{   r  r}   r   c                      s     S r%   r
   r
   r3  maxlenr
   r   <lambda>p	  s    z0UnicodeTest.test_raiseMemError.<locals>.<lambda>)structcalcsizer   rd   r   r@   r  )r*   Zascii_struct_sizeZcompact_struct_sizecodeZ	char_sizeZstruct_sizeZallocr
   r  r   test_raiseMemErrorW	  s(   zUnicodeTest.test_raiseMemErrorc                 C   s>   G dd dt }|d}| d| d | d|d d S )Nc                   @   r,   )z+UnicodeTest.test_format_subclass.<locals>.Sc                 S   r   )N__str__ overriddenr
   r)   r
   r
   r   r   v	  r   z3UnicodeTest.test_format_subclass.<locals>.S.__str__Nr  r
   r
   r
   r   r.  u	  r2   r.  xxxr  r  r  )r-   r4   r(  r*   r.  r  r
   r
   r   test_format_subclasst	  s   z UnicodeTest.test_format_subclassc                 C   sX   G dd dt }| |d|d d G dd dt }|d}|d7 }| |d d S )Nc                   @   r,   )(UnicodeTest.test_subclass_add.<locals>.Sc                 S   r   Nr   r
   r*   rY  r
   r
   r   __add__~	  r   z0UnicodeTest.test_subclass_add.<locals>.S.__add__N)r    r!   r"   r  r
   r
   r
   r   r.  }	  r2   r.  r	  r  r   c                   @   r,   )r  c                 S   r   r  r
   r  r
   r
   r   __iadd__	  r   z1UnicodeTest.test_subclass_add.<locals>.S.__iadd__N)r    r!   r"   r  r
   r
   r
   r   r.  	  r2   r   rD  r  r
   r
   r   test_subclass_add|	  s   zUnicodeTest.test_subclass_addc                 C   s@   d}|  }| |d | | |d | | t|d d S )NrG   r   r{   )__getnewargs__assertIsNotr4   rV  )r*   r   r9   r
   r
   r   test_getnewargs	  s
   zUnicodeTest.test_getnewargsc              	   C   s   ddl m} tdddD ]P}d| d }| t ||}W d    n1 s(w   Y  | || |d7 }| t ||}W d    n1 sKw   Y  | || | || qd S )	Nr   )	getargs_ur{   r   r   ry   rz   r   )rT  r  rk   ZassertWarnsrU  r4   rC   )r*   r  lengthr   rG   r  r
   r
   r   test_resize	  s   

zUnicodeTest.test_resizec                 C   s  d}d| }d| }d| }d| }d| }d| }d| }d	| }	||||||||	f}
t |
d
D ]S\}}||u }| ||k| | ||k|  |r| ||k | ||k t|}t|}| || | ||k | ||k | ||k | ||k q2| ||k  | ||k  | ||k  | ||k  | ||k | ||k | ||k | ||k | ||k  | ||k  | ||k  | ||k  | ||k | ||k | ||k | ||k | ||k  | ||k  | ||k  | ||k  | ||k | ||k | ||k | ||k | ||k  | ||k  | ||k  | ||	k  | ||k | ||k | ||k | ||	k d S )Nr~   ry   r   ro  r<   r  r=   r  r=  r}   )	itertoolscombinationsr4   r5   r   r  r!  )r*   r  rg   Zascii2latinlatin2ZbmpZbmp2ZastralZastral2stringsZtext1Ztext2ZequalZcopy1copy2r
   r
   r   test_compare	  sz   zUnicodeTest.test_comparec                 C   s    t | tt t | tt d S r%   )r   Zcheck_free_after_iteratingiterr-   reversedr)   r
   r
   r   test_free_after_iterating	  s   z%UnicodeTest.test_free_after_iteratingc                 C   s`   d}d}t d|d|d|d|d|d|d	|d
}tddd|}| |jd| d S )N)rg   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   r4   rc)r*   	encodingsinvalidr
  procr
   r
   r   test_check_encoding_errors	  s&   $,
4z&UnicodeTest.test_check_encoding_errors)qr    r!   r"   r-   r   r+   r;   rD   rn   rq   rv   r   r   r   r   r   r   r   r   r   r   r   unittestZskipIfrd   r   r   r   r   Zcpython_onlyr   r  r  r  r   r%  r'  r,  Zrequires_resourcer4  r9  r<  r>  rH  rJ  rL  rS  Zrequires_legacy_unicode_capirW  r]  rf  rw  r}  r  r  r  r  r  Z
skipUnlessr  r  r  r  r  r  r  r  r  r,  r;  r>  rE  rG  rH  rN  Zrun_with_localerS  r[  r]  r`  rg  rj  rr  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/  __classcell__r
   r
   r"  r   r$   4   s    	**-)F

;

			'  J7k 	

F	3%/Y:O)/7

Jr$   c                   @   r   )StringModuleTestc                 C   s   dd }|d}|  |g d |d}|  |ddg |d}|  |d	g |d
}|  |g  |d}|  |dg | ttjd d S )Nc                 S   s   t t| S r%   )r  _stringformatter_parserr@  r
   r
   r   parse0
  r/   z5StringModuleTest.test_formatter_parser.<locals>.parsez2prefix {2!s}xxx{0:^+10.3f}{obj.attr!s} {z[0]!s:10}))prefix r   r_   r  )r  rA  z^+10.3fN)r_   zobj.attrr_   r  )r?   zz[0]r  r  zprefix {} suffix)r6  r_   r_   N)z suffixNNNr-   )r-   NNNr_   r  )r_   rA  r_   Nr{   )r4   r@   rl   r3  r4  )r*   r5  	formatterr
   r
   r   test_formatter_parser/
  s&   z&StringModuleTest.test_formatter_parserc                 C   st   dd }|  |ddg g |  |dddgg |  |dddgg |  |ddg d	g | ttjd
 d S )Nc                 S   s"   t t| }t |d |d< |S )Nr{   )r  r3  formatter_field_name_split)r  itemsr
   r
   r   r   Q
  s   z?StringModuleTest.test_formatter_field_name_split.<locals>.splitrZ  zobj.argTargzobj[key])Fr  zobj.arg[key1][key2])r;  )FZkey1)FZkey2r{   )r4   r@   rl   r3  r9  )r*   r   r
   r
   r   test_formatter_field_name_splitP
  s   
z0StringModuleTest.test_formatter_field_name_splitN)r    r!   r"   r8  r=  r
   r
   r
   r   r2  .
  s    !r2  __main__)__doc__r3  r&   r  r.  r  rd   r)  r0  r0  r	  Ztest.supportr   r
  r   r   Ztest.support.script_helperr   r   r   r-   r   r   r   ZMixinStrUnicodeTestZTestCaser$   r2  r    mainr
   r
   r
   r   <module>   s\    
                    3