o
    g                    @   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 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G dd de	jZedkre	  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)import_helper)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   G/Users/admin/.pyenv/versions/3.10.0/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.
    N)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   2       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/   J      z2UnicodeTest.checkequalnofix.<locals>.usub.__repr__Nr!   r"   r#   r/   r   r   r   r   usubI       r2   )getattrassertEqual
assertTruetyper.   )r+   resultobjectZ
methodnameargsmethodZ
realresultr2   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 )r5   assertRaisesSyntaxErrorevalassertNotEqualr*   r   r   r   test_literalsR   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__Nr1   r   r   r   r   	WrongRepr   r3   rd   )sysplatform
startswithr5   asciijoinmapchrrangerA   	TypeErrorr+   Z
latin1reprZtestreprrd   r   r   r   
test_ascii[   0   
zUnicodeTest.test_asciic                 C   rF   ) NrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   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`   ra   rb   c                   @   r-   )z(UnicodeTest.test_repr.<locals>.WrongReprc                 S   r   rc   r   r*   r   r   r   r/      r   z1UnicodeTest.test_repr.<locals>.WrongRepr.__repr__Nr1   r   r   r   r   rd      r3   rd   )re   rf   rg   r5   reprri   rj   rk   rl   rA   rm   rn   r   r   r   	test_repr   rp   zUnicodeTest.test_reprc                 C   sJ   d  }| t|d | t|d | t|d | tt| d S )Nu	   ᄑ∢㌳u   ᄑu   ∢u   ㌳)__iter__r5   nextrA   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   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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   abcdefghiabcrH   	   r|   def   hellor
      ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂarz     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ădaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂa_r     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a_  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ă_r   r   r   r   )r   r   	test_findr   r<   rA   rm   r   r*   r   r   r   r      s2   zUnicodeTest.test_findc                 C   sp  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 S ) Nr   uf   Ăaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfindr   r}   r   r   r   uh   􀌄aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   r   r   r   r   rH      r`      aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂrz     a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄r   r      _aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ_a  _a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  _Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄   _Ă   Ăa   􀌄a   􀌄Ă)r   r   
test_rfindr   r<   r*   r   r   r   r      s.   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`   rx   r   rH   r   r|   hibZabcdefghiab	abcdefghighi   r}   r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   
test_indexr<   rA   
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`   rx   r   r   rH   r   r}   r   Z	defghiabcr|   r   r   r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   test_rindexr<   rA   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	translaterz   Ziiicr{   iZiiixcxr`   ZxyyxZxzxzZyyz<i>rz   r{   z
<i><i><i>crH   ZxyzdZxyzzyZabdcdcbddddz[a]Xz[X][]ZXXXz[XXX]   éu   [é]Zaxb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	maketransr5   r   r.   rA   r   rm   )r+   ZtblZinvalid_charbeforemappingr   r   r   r   test_maketrans_translate>  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@   ri   )rz   r{   r   r   abcdr`   zw x y zZwxyz12foo3)r|   r~   rx   )r   r   rx   )r   r   	test_joinr<   Sequencecheckraisesrm   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`   )intre   maxsizerA   OverflowErrorri   )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<   rA   rm   r   r   )r+   r   r   r   replr   r   r   r     s2   



zUnicodeTest.test_replacec                 C   s    d}d}|  |||| d S )NrH   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())r5   idrD   r.   )r+   rz   r{   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ignorerH      abcFT)r   check_warningswarningssimplefilterBytesWarningr5   	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 )NrH   r   r   rz      €   c                    s     | |k  d S r&   )r6   r   s2r*   r   r   
test_lecmp-  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  0  sD   















z/UnicodeTest.test_comparison.<locals>.test_fixupu   )r5   r6   r*   r   )r+   r  r  r   test_comparison  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  r6   r*   	__class__r   r   r  X  s   
zUnicodeTest.test_islowerc                    s   t    tjds| ddd | d  | d  | d  | d  | d	  | d
  | d  | d  d S )NrG   Fr  isupperr  r  r  r  r  r  r  r  )	r  test_isupperre   rf   rg   r<   r6   r   r  r*   r  r   r   r!  g  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<   r6   r"  r  formatr+   chr  r   r   r#  w  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)	rl   re   
maxunicoderk   unicodedatabidirectionalcategoryr5   r'  )r+   Z	codepointcharr.  r/  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_isalnumr6   isalnumr$  r%  r  r   r   r6    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<   r6   r8  r  r*   r  r   r   r9    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`   	isdecimalrz   T0   ①   ¼   ٠
01234567890123456789arH   r
   )r  r  r  r  r  r     𑁥r5  z{!a} is not decimal.)r2  r3  r4  z{!a} is decimal.)r<   r   rm   r  r=  r$  r6   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 )NTr?  isdigitFr@  rA  )r  r  r  r  r  r  rD  z{!a} is not a digit.)r2  r3  r4  r5  z{!a} is a digit.)r  test_isdigitr<   r  rF  r$  r6   r%  r  r   r   rG    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`   	isnumericrz   Tr>  r?  r@  rA  rB  rC  rH   r
   r(  z{!a} is not numeric.)rD  r2  r3  r4  r5  z{!a} is numeric.)r<   rA   rm   rH  r  r$  r6   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 )Nrz   Z_Zb0ZbcZb_   µu   𝔘𝔫𝔦𝔠𝔬𝔡𝔢r@   [   ©r>  )r6   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  )		_testcapir6   rO  r   r  r  r  DeprecationWarningZunicode_legacy_string)r+   rQ  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   󠀠)r6   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"  )rX           z%a.%s() is False)r8  r7  rF  r'  r=  rH  rO  rY  )rX  r_  r`  ra  r[  r\  r]  r^  )r6   r  r  r   r"  r4   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_lowerr5   lowerr*   r   r   r   rt  "  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   ßZssri  Zfirl  rm  ro  u   aισrL  u   μ)r5   casefoldr*   r   r   r   test_casefold8  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 )Nrd  r  rf  re  rg  rh  u
   X𐐧X𐐧ri  FIrj  rl  rv  SS   ῒ   Ϊ̀rs  r  r  )r   r   
test_upperr5   upperr*   r   r   r   r}  A  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 )Nrd  r  rf  rg     𐑏𐐧rh  u
   X𐑏x𐑏u   hİu   Hi̇u	   Ϊ̀i̇u   ῒİu   ﬁnnishFinnishro  u   Aͅς)r   r   test_capitalizer5   
capitalize)r+   expr   r   r   r  R  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 )Nrd  r  rf  rg  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_titler5   titler*   r  r   r   r  c  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 )Nrd  r  rf  re  rg  r  rh  u
   x𐑏X𐐧ri  ry  rj  rk  rl  rm  rn  u   Ισro  u   aΙςrp  u   aΙσArq  u   aςΙrr  u   σΙ rv  rz  r{  r|  )r   r   test_swapcaser5   swapcaser*   r   r   r   r  t  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􏿿rx   u	   􏿿x􏿿r   u   􏿿x􏿿􏿿)r   r   test_centerr5   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)   )MemoryErrorZskipTestrA   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 )Nrz   ZabdbZbdabZbdabaZbdbaZbdb)rz   r|   N)r|   Nrz   )r   r|   y)r   r|   Nr   ZabcxxxxabrH   )r|   Nr  r`    z abcabc ZasdfZasd)rz      Āu   𐌀r   r   r~   )assertInZassertNotInrA   rm   __contains__)r+   Z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 )N   𐀀􀀀   􀀀rx      𐀀)	ru  rw  r~  r  r  r  r  ljustrjustr*   r   r   r   test_issue18183  s   zUnicodeTest.test_issue18183c                 C   sd  |  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 g | tdjd g | tdjdd | tdjd-dd | td jdd7ddYdd֐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`   rz   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     r0   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/     r0   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   r9   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  r3   r  c                   @   r-   )z"UnicodeTest.test_format.<locals>.Jc                 S   s   t | d |S Nr~   )r   r  r  r   r   r   r       z-UnicodeTest.test_format.<locals>.J.__format__Nr  r   r   r   r   J  r3   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     r  z+UnicodeTest.test_format.<locals>.M.__init__c                 S   r  )NzM(r  r  r*   r   r   r   r/     r0   z+UnicodeTest.test_format.<locals>.M.__repr__N)r!   r"   r#   r   r/   r   r   r   r   r   M      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/   %  r0   z+UnicodeTest.test_format.<locals>.N.__repr__N)r!   r"   r#   r   r/   r  r   r   r   r   N"  r  r  rH   {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@   rx   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}r8   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)rW  z'\u0378'rV  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[0]x}z
{0[0](10)}z{0[{1}]}rU  r   z{0:{1:{2}}}r   z{0:{1:{2:{3:{4:{5:{6}}}}}}}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{[[]}rM  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))r5   r$  datetimedictdater   rA   rm   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`   rz   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__  r   z8UnicodeTest.test_format_map.<locals>.Mapping.__missing__N)r!   r"   r#   r  r   r   r   r   Mapping  r3   r  z{hello}r   z{a} {world})rz   r  c                   @   r   )z4UnicodeTest.test_format_map.<locals>.InternalMappingc                 S   s   ddi| _ d S )Nrz   r   r   r*   r   r   r   r   #  r0   z=UnicodeTest.test_format_map.<locals>.InternalMapping.__init__c                 S   s
   | j | S r&   r  r  r   r   r   __getitem__%  r  z@UnicodeTest.test_format_map.<locals>.InternalMapping.__getitem__N)r!   r"   r#   r   r  r   r   r   r   InternalMapping"  r  r  z{a}c                   @   r  )z&UnicodeTest.test_format_map.<locals>.Cr   c                 S   r   r&   r  r  r   r   r   r   +  r  z/UnicodeTest.test_format_map.<locals>.C.__init__c                 S   r  r&   r   r  r   r   r   r  -  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~   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  B  s   z;UnicodeTest.test_format_map.<locals>.BadMapping.__getitem__N)r!   r"   r#   r  r   r   r   r   
BadMappingA  r3   r  )r5   
format_mapr  rA   rm   r   r  ZeroDivisionError)r+   r  r  r  r  r   r   r   test_format_map  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$  re   r   rA   r   r+   format_stringr8   r   r   r   test_format_huge_precisionH     "z&UnicodeTest.test_format_huge_precisionc                 C   r  )Nz{}fr|   r  r  r  r   r   r   test_format_huge_widthM  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_numberR  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   Y  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  X  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}{}rx   g)r  r  z 1g3z{f:{}}{}{g})r  r  z 14g)r5   r$  rA   r   )r+   r  r   r   r   test_format_auto_numberingW  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f | t
dftjdZdgf | t
dhtjd]dif | t
djtjdW|f | t
tjd|f d S )kN%s, %s)rH   rH   zabc, abcz%s, %s, %i, %f, %5.2f)rH   rH   r|   r~   rx   zabc, abc, 1, 2.000000,  3.00)rH   rH   r|   rx   zabc, abc, 1, -2.000000,  3.00)rH   rH   r}   r  g      @zabc, abc, -1, -2.000000,  3.50)rH   rH   r}   r  g(\@zabc, abc, -1, -2.000000,  3.57)rH   rH   r}   r  g(\\@z abc, abc, -1, -2.000000, 1003.57rG   z%r, %r)r  rH   zb'abc', 'abc'z%r)   ሴu   'ሴ'z%az'\u1234'z%(x)s, %(y)srH   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~   rx   rH   z...1...2...3...abc...z"...%%...%%s...%s...%s...%s...%s...z...%...%s...1...2...3...abc...z...%s...z%*s)r  rH   z  abc)rH   zabc  z%*.*s)r  r~   rH   z   ab)r  rx   rH   z%i %*.*s)r   r  rx   rH   z10   abcz
%i%s %*.*s)r   rx   r  rx   rH   z	103   abcrz   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  r3   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     r0   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     r0   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 PseudoFloat)r   r   test_formattingr5   re   rf   rg   rA   r   __mod__rm   r   r   r  operatormod)r+   r  r  r  r  r!  piZletter_mr   r   r   r$  u  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      r+  c                   @   r)  )z2UnicodeTest.test_formatting_with_enum.<locals>.Intr#  N)r!   r"   r#   IDESr   r   r   r   Int  r,  r.  c                   @   r)  )z2UnicodeTest.test_formatting_with_enum.<locals>.StrrH   N)r!   r"   r#   r  r   r   r   r   Str  r,  r/  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.   r5   r  r-  r*  )r+   r0  r+  r.  r/  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__  r  zKUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStr.__rmod__N)r!   r"   r#   r:  r   r   r   r   SubclassedStr  r3   r;  z	lhs %% %rZrhsz.Success, self.__rmod__('lhs %% %r') was calledr.   r5   )r+   r;  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_MAXr5  r|   r  )rQ  r>  r$  rA   r   )r+   r>  r   r8   r   r   r   'test_formatting_huge_precision_c_limits  s
   
"z3UnicodeTest.test_formatting_huge_precision_c_limitsc                 C   r4  )Nz%{}fr|   r  r  r  r   r   r   test_formatting_huge_width  r7  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)rg   endswithrA   rm   r.   	exceptionr  )r+   rb  cmexcr   r   r   test_startswith_endswith_errors  s   
z+UnicodeTest.test_startswith_endswith_errorsLC_ALLZde_DEZfr_FRc                 C   s   |  ddd  d S )Nz1.0z%.1fg      ?r5   r*   r   r   r   test_format_float  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)rh   r   r	  r:  rh   s   asciiutf-8z strings are converted to unicodec                   @   r   )z2UnicodeTest.test_constructor.<locals>.StringCompatc                 S   r   r&   r  r  r   r   r   r   )  r  z;UnicodeTest.test_constructor.<locals>.StringCompat.__init__c                 S   r   r&   r  r*   r   r   r   r   +  r  z:UnicodeTest.test_constructor.<locals>.StringCompat.__str__Nr   r   r   r   r   StringCompat(  r  rK  z)__str__ compatible objects are recognizedz#unicode(obj) is compatible to str())r  g^@r  rG   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
   )r5   r.   r   lenr   re   rf   rg   rA   rm   
memoryview)r+   r   subclassrK  oobjr   r   r   test_constructor  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   )r9   s   foorJ  )r9   r   r   r   )r9   r   N)r5   r.   r*   r   r   r   test_constructor_keyword_argsY  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   rR     ¢rJ  rh   )r   N)r5   r.   r   rA   UnicodeDecodeError)r+   Z	utf8_centr   r   r   test_constructor_defaultsb  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?rX  )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!"#$%&*;<=>@[]^_`{|}utf7rh   zill-formed sequences   +@)r5   r   r   r  rU  )r+   ZutfTestsr   r  Zset_dZset_or   r   r   r   test_codecs_utf7m  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`   rJ      r	  s   €u   𐀂s   𐀂u   𣑖s   𣑖rX  surrogatepasss   u   s   u(   𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂s(   𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂u   正確に言うと翻訳はされていません。一部はドイツ語ですが、あとはでたらめです。実際には「Wenn ist das Nunstuck git unds   正確に言うと翻訳はされていません。一部はドイツ語ですが、あとはでたらめです。実際には「Wenn ist das Nunstuck git und)r5   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  )   arz   )   )s      )s   ߿u   ߿)s   ࠀu   ࠀ)s   ퟿u   ퟿)s   r  )   ￿r>   )s   𐀀r  )   􏿿r:  rJ  )r5   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   rk  r   rl  rm  r   r   r   ro    rp     c                 S   rk  r   rl  rm  r   r   r   ro    rp        c                 S   rk  r   rl  rm  r   r   r   ro    rp     ra   rJ  rx      c                 S   rk  r   rl  rm  r   r   r   ro    rp           c                 S   rk  r   rl  rm  r   r   r   ro    rp     c                 S   rk  r   rl  rm  r   r   r   ro    rp           s   c                 S   rk  r   rl  rm  r   r   r   ro    rp     )rl   rA   rU  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   �rw  r~  r~      s      s   s      s   s   rx   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��drJ  r   r      br{   r  r`   )	enumeraterA   rU  r   r5   r   )r+   FFFDrh  r  r   ri  r   r   r   test_issue8271  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.
        rJ  Nr   s   aaaas   bbbbZaaaaZbbbbr  r`   r  )rA   rU  r   rC  r  r.   r5   r   )r+   r   ri  errrD  rE  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_byteq  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+   rh  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 7Frd  zC2 C0zC2 FFzDF 00zDF 7FzDF C0zDF FFinvalid continuation byteNr  r+   r  ZFFFDx2rh  r   ri  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 7Frd  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 7Frd  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.)r5   r   r*   r   r   r   test_codecs_idna7  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 xrh   r   r  s   Andr xr   s   Andr? xrR  )r   r   s   Andr xzAndr xu	   Andr� xs    xu   � xs	   \N{foo}xxzunicode-escapexx   \   hellor   r   r   r
   rX  u   )rA   UnicodeErrorr   r5   r.   r   rm   r   r   r   complexr*   r   r   r   test_codecs_errors;  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   rh   r  r[  rJ  	utf-16-les
   h e l l o 	utf-16-bes
    h e l l olatin-1u   ☃s   ☃i   )r[  rJ  utf-16r  r  raw_unicode_escapeunicode_escapera   )r  rq  )rh   u   𐀁𠀂𰀃񀀄񐀅)rJ  r  r  r  r  r  r`   r   i   i   r?   )rJ  )
r5   r   rl   rk   r.   r  catch_warningsri   rj   list)r+   r   rS  r   r   r   r   test_codecsd  sF   
zUnicodeTest.test_codecsc                 C   sb   t td}dD ]}| t|||| qt tdd}dD ]}| t|||| q d S )Nrq  )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_rZ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_8ra   ) 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   rl   r5   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   rH  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   r5   rU  startendZfail)r+   r   r  er   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  r3   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  r3   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.   r5   r   r7   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__Nr1   r   r   r   r   s1  r3   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__Nr1   r   r   r   r   r  	  r3   r  r  r5   rq   )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_repr
	  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	)rA   r   
expandtabsre   r   r*   r   r   r   $test_expandtabs_overflows_gracefully	  s   z0UnicodeTest.test_expandtabs_overflows_gracefullyc                 C   s   d}|  | | d S )NrH   )r   r  )r+   r   r   r   r   test_expandtabs_optimization	  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      $   )rz   r   r	  r:  ra   r|   r  r~   r   c                      s     S r&   r   r   r0  maxlenr   r   <lambda>4	  s    z0UnicodeTest.test_raiseMemError.<locals>.<lambda>)structcalcsizer   re   r   rA   r  )r+   Zascii_struct_sizeZcompact_struct_sizecodeZ	char_sizeZstruct_sizeZallocr   r  r   test_raiseMemError	  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   :	  r   z3UnicodeTest.test_format_subclass.<locals>.S.__str__Nr  r   r   r   r   r+  9	  r3   r+  xxxr  r  r  )r.   r5   r$  r+   r+  r   r   r   r   test_format_subclass8	  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+   rO  r   r   r   __add__B	  r   z0UnicodeTest.test_subclass_add.<locals>.S.__add__N)r!   r"   r#   r  r   r   r   r   r+  A	  r3   r+  r  r  r   c                   @   r-   )r  c                 S   r   r	  r   r
  r   r   r   __iadd__F	  r   z1UnicodeTest.test_subclass_add.<locals>.S.__iadd__N)r!   r"   r#   r  r   r   r   r   r+  E	  r3   r   r<  r  r   r   r   test_subclass_add@	  s   zUnicodeTest.test_subclass_addc                 C   s@   d}|  }| |d | | |d | | t|d d S )NrH   r   r|   )__getnewargs__assertIsNotr5   rL  )r+   r   r:   r   r   r   test_getnewargsL	  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  rz   r{   r   )rQ  r  rl   ZassertWarnsrR  r5   rD   )r+   r  lengthr   rH   r  r   r   r   test_resizeS	  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   rz   r   re  r=   r  r>   r  r:  r~   )	itertoolscombinationsr5   r6   r   r  r  )r+   r  rh   Zascii2latinlatin2bmpbmp2ZastralZastral2stringsZtext1Ztext2ZequalZcopy1copy2r   r   r   test_compareg	  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)rh   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   r5   rc)r+   Z	encodingsinvalidr  procr   r   r   test_check_encoding_errors	  s&   $,
4z&UnicodeTest.test_check_encoding_errors)qr!   r"   r#   r.   r   r,   r<   rE   ro   rr   rw   r   r   r   r   r   r   r   r   r   r   r   unittestZskipIfre   r   r   r   r   cpython_onlyr   r   r  r  r  r!  r#  r)  Zrequires_resourcer1  r6  r9  r;  rE  rG  rI  rP  requires_legacy_unicode_capirT  rZ  rc  rt  rx  r}  r  r  r  r  Z
skipUnlessr  r  r  r  r  r  r  r  r	  r$  r3  r6  r=  r?  r@  rF  Zrun_with_localerI  rQ  rS  rV  r]  r`  rj  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%   5   s    	**F

;

			'  <7W 	

F	3%/Y:O)/7

Jr%   c                   @   s   e Zd Zdd Zejdd Zejdd Zejdd Zejd	d
 Z	ejdd Z
ejdd Zejdd Zejejdd Zejejdd Zejdd ZdS )CAPITestc                    s  t d ddlm}m}mm}m}m}m	}m
}m}m}	m}
m}m} d}t|||f__fdd  fdd}|d	d
d td dd |dd|d |dd|d t  d|d W d    n1 suw   Y  |dd|d|d |dd |dd |dd |dd |d d!d" |d#d$d% |d&d'd(d) |d*d+d, |d-d.d/ |d0d1d, |d2d3d/ |d4d5d/ |d4d6d/ |d4d7d/d  |d&d8d d(d) |d9d:d# |d;d<d# |d=d>d# |d?d@d# |dAdBd# |dCdDd# |d?dEd# |dAdFd# |dCdGd# |d9dHd" |d;dId" |d=dJd" |d9dKd# |d;dLd# |d=dMd# |d9dNd#dO |d;dPd#dO |d=dQd#dO |dRdNd dO |dSdPd dO |dTdQd dO |dUdV|dW |dXdY|dW |dZd[|d\ |dZd]|d\ |dZd^|d\ |dZd_|d\ |dZd`|d\ |dZda|d\ |dZdb|d\ |dZdc|d\ |ddde|df |dddg|	df |dddh|
df |dddi|df djdk|| dl   }| dl }|t|db|| |t|db|| djdk||
  dl }|t|dh|
|  dm|dn |dddWdodp|df |dddqdr|df |dddqdods|df |dddtdodqdu|df |dddWdodv|df |dddqdw|df |dddqdodx|df |dddtdodqdy|df |dddWdodz|d{ |dddqd||d{ |dddqdod}|d{ |dddtdodqd~|d{ |ddd |ddd#d |ddd d |ddd d |ddd" |dd |dd|dW |ddd" |dd |ddd d S )Nctypesr   )c_char_p	pythonapi	py_objectsizeofc_intc_long
c_longlong	c_ssize_tc_uintc_ulongc_ulonglongc_size_tc_void_pPyUnicode_FromFormatc                    s&   t fdd|D } | g|R  S )Nc                 3   s&    | ]}t |tr |n|V  qd S r&   )
isinstancer.   )rn  arg)r1  r   r   	<genexpr>
  s
    
zJCAPITest.test_from_format.<locals>.PyUnicode_FromFormat.<locals>.<genexpr>)rA  )r$  r:   Zcargs)_PyUnicode_FromFormatr1  r   r   r<  
  s   z7CAPITest.test_from_format.<locals>.PyUnicode_FromFormatc                    s     |g|R  } | | d S r&   rH  )Zexpectedr$  r:   r   )r<  r+   r   r   check_format
  s   z/CAPITest.test_from_format.<locals>.check_formatu   ascii=unicodeés	   ascii=%Uu	   unicodeéz^^PyUnicode_FromFormatV\(\) expects an ASCII-encoded format string, got a non-ASCII byte: 0xe9$s   unicode=%srh   u   ꯍs   %ciͫ  r:   r?   r  s   %c%cr  r  %   %s   %%r  s   %%sz[%]s   [%%]z%abcs   %%%sr  rH   s   %.3ss   abcdefu   abc[�s   %.5su   abc[€]r   z'\u20acABC's   %Au   €ABCz'\u20s   %.5Au	   €ABCDEFu   '€ABC's   %Ru   '€As   %.3Ru   €ABs   %.3Ss   %.3Us   %.3Vs   %.5Vz
repr=  abcs   repr=%5Szrepr=abs	   repr=%.2Sz
repr=   abs
   repr=%5.2Szrepr=   'abc's   repr=%8Rzrepr='abs	   repr=%.3Rz
repr=  'abs
   repr=%5.3Rs   repr=%8As	   repr=%.3As
   repr=%5.3As   repr=%5ss	   repr=%.2ss
   repr=%5.2ss   repr=%5Us	   repr=%.2Us
   repr=%5.2Us   repr=%5V   123s	   repr=%.2Vs
   repr=%5.2Vz
repr=  123zrepr=12z
repr=   12Z010s   %03ir   Z0010s   %0.4iz-123s   %iis   %lis   %llis   %zis   %ds   %lds   %llds   %zdr   s   %ur  s   %lus   %llus   %zur~   r   r|   s   %pr}   r>  s   %010ir   s   %100is   %.100iP   s   %100.80is   %010us   %100us   %.100us   %100.80us   %010xi#  s   %100xs   %.100xs   %100.80xz%A:'abc\xe9\uabcd\U0010ffff's   %%A:%Au   abcéꯍ􏿿zrepr=abcs   repr=%Vs   xyzu   repr=人民s   人民u   repr=abc�s   abcs   %1%sz%1abcs   %1abcz%+is   %+iz%.%ss   %.%sr`   r^  s   %s)r   import_moduler.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r4   argtypesZrestyper  r   rA   r   r   r.   r  )r+   r/  r0  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r  rA  Zmin_longlongZmax_longlongZmax_ulonglongr   )r<  r@  r1  r+   r   test_from_format	  s   
<





zCAPITest.test_from_formatc           	      C   s8  ddl m} td ddlm}m} |dd\}}| |d | |d |dd	\}}| |d	 | |d |dd
\}}| |d	 | |d |dd\}}| |d	 | |d |dd\}}| |d | |d td}||dkrd	}d}nd}d}|||\}}| || | ||d  d S )Nr   )unicode_aswidecharr.  c_wcharr2  r  r~   r  rH   rx   r   r  r   abc defr  r  abc def rB  r|   r  )	rQ  rJ  r   rG  r.  rL  r2  r5   rk   )	r+   rJ  rL  r2  wcharr   nonbmpZbuflenncharr   r   r   test_aswidechar
  s6   
zCAPITest.test_aswidecharc                 C   s   ddl m} td ddlm}m} |d\}}| |d | |d |d\}}| |d	 | |d
 td}||dkrDd}nd}||\}}| || | ||d  d S )Nr   )unicode_aswidecharstringr.  rK  rH   rx   r  rM  r  rN  rB  r~   r|   r  )	rQ  rS  r   rG  r.  rL  r2  r5   rk   )r+   rS  rL  r2  rO  r   rP  rQ  r   r   r   test_aswidecharstring  s    
zCAPITest.test_aswidecharstringc                 C   s   ddl m} dD ]s}t|}| |||d|d  | |||d|d  | |||d d|d	  | |||d d|d	  | t|||d d | t|||d
 d d||g}| ||t|d|d  | ||t|d|d  qd S )Nr   )unicode_asucs4)rH   u   ¡¢u   你好u   a😀	   abcu   Tr  Fr>   r|   u    ￿r~   )rQ  rU  rL  r5   rA   SystemErrorri   )r+   rU  r   lr   r   r   test_asucs4$  s   zCAPITest.test_asucs4c                 C   ^   ddl m} d}d}td}| ||d | ||d | ||d | t|d	 d S )
Nr   )unicode_asutf8r  r>   rB     Ārf  rg  rV  )rQ  r[  rk   r5   rA   UnicodeEncodeError)r+   r[  r  r  rP  r   r   r   test_asutf85     zCAPITest.test_asutf8c                 C   rZ  )
Nr   )unicode_asutf8andsizer  r>   rB  )r\  r~   )rf  rx   )rg  r   rV  )rQ  r`  rk   r5   rA   r]  )r+   r`  r  r  rP  r   r   r   test_asutf8andsizeC  r_  zCAPITest.test_asutf8andsizec              
   C   sp  ddl m} dD ]+}t|D ]$\}}| ||t|dt|d| | ||t|dt|d| qqd}| ||ddt|dd | ||ddt|dd | ||tddt|d dd	 | ||tddt|d dd	 | ||tddddd | ||tdt|ddd | ||tdt| ddd | ||tdt| ddd d S )
Nr   )unicode_findchar)   ¡u   耀肀r
  u   🄀🇱r|   r}   z!>_<!r?   r   r   )rQ  rb  r  r5   r   rL  )r+   rb  r.   r   r&  r   r   r   test_findcharQ  s    "$$ "&zCAPITest.test_findcharc           	      C   sx  ddl m} g d}t|D ]Z\}}|d | D ]}| t||d|dd qtdD ]}| ||d||d|||d  ddd| f q*tdD ]}| |||||d|||d  ddd| f qKq|d }| t	||d|dd | t	||d|dd | t	||d|dd | t	||d|dd | t||d|dd | t||d|dd | t||dd	dd d S )
Nr   )unicode_copycharacters)Zabcdeu
   ¡¢£¤¥u   你好世界！u   😀😁😂😃😄r  r  r  r}   r|   r^  )
rQ  re  r  rA   rW  rl   r5   r  r  r  )	r+   re  r  idxZfrom_toZ
from_startZto_startr   r   r   r   test_copycharactersh  s>   	zCAPITest.test_copycharactersc                 C   s   ddl m} t 8 tdt | |dd | |dd | |dd	 | t	|d
d | 
td|d
d W d    d S 1 sEw   Y  d S )Nr   )unicode_encodedecimalr  r   rE     ٣.١٤s   3.14
    3.14 s    3.14    123€r   z'^'decimal' codec can't encode characterr   )rQ  ri  r   r  r  r  rR  r5   rA   r]  r  r   )r+   ri  r   r   r   test_encode_decimal  s.   


"zCAPITest.test_encode_decimalc                 C   s   ddl m} t / tdt | |dd | |dd | |dd | |dd W d    d S 1 s<w   Y  d S )	Nr   )unicode_transformdecimaltoasciir  r   rj  z3.14rk  rl  )rQ  rn  r   r  r  r  rR  r5   )r+   Ztransform_decimalr   r   r   test_transform_decimal  s    




"zCAPITest.test_transform_decimalc                 C   sx   ddl m} dD ]1}d}tdD ](}|t|7 }| ||t| |d   | ||t| |d   qqd S )Nr   )getargs_s_hash)r     i   i r`   r  r|   )rQ  rp  rl   rk   r5   r   )r+   rp  kr   r   r   r   r   test_pep393_utf8_caching_bug  s    "z%CAPITest.test_pep393_utf8_caching_bugN)r!   r"   r#   rI  r   r*  rR  rT  rY  r^  ra  rd  rh  r+  rm  ro  rs  r   r   r   r   r-  	  s2     r
%





)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_parserr8  r   r   r   parse  r0   z5StringModuleTest.test_formatter_parser.<locals>.parsez2prefix {2!s}xxx{0:^+10.3f}{obj.attr!s} {z[0]!s:10}))prefix r   r`   r   )r  r>  z^+10.3fN)r`   zobj.attrr`   r   )r@   zz[0]r  r   zprefix {} suffix)rx  r`   r`   N)z suffixNNNr.   )r.   NNNr`   r  )r`   r>  r`   Nr|   )r5   rA   rm   ru  rv  )r+   rw  	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  ru  formatter_field_name_split)r  itemsr   r   r   r     s   z?StringModuleTest.test_formatter_field_name_split.<locals>.splitrP  zobj.argTr>  zobj[key])Fr  zobj.arg[key1][key2])r}  )FZkey1)FZkey2r|   )r5   rA   rm   ru  r{  )r+   r   r   r   r   test_formatter_field_name_split  s   
z0StringModuleTest.test_formatter_field_name_splitN)r!   r"   r#   rz  r~  r   r   r   r   rt    s    !rt  __main__) __doc__ru  r'   r  r&  r   re   r#  r-  r)  r  Ztest.supportr   r   r  r   r   Ztest.support.script_helperr   r   r   r.   r   r   r   ZMixinStrUnicodeTestZTestCaser%   r-  rt  r!   mainr   r   r   r   <module>   sd    
                   P   V3