a
    ze&                    @   s   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mZ d dlmZ dd Zee 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re  dS )    N)supportstring_tests)assert_python_failurec                 C   sX   ddd}ddd}ddd}ddd	}| d
kr<||d d fS | dkrP||d d fS d S d S )Nstrictc                 S   s   dS N*    inputerrorsr   r   '/usr/lib/python3.9/test/test_unicode.pydecode1   s    z search_function.<locals>.decode1c                 S   s   dS r   r   r	   r   r   r   encode1   s    z search_function.<locals>.encode1c                 S   s   dS N)r   r   r   r	   r   r   r   encode2   s    z search_function.<locals>.encode2c                 S   s   dS r   r   r	   r   r   r   decode2   s    z search_function.<locals>.decode2test.unicode1test.unicode2)r   )r   )r   )r   r   )encodingr   r   r   r   r   r   r   search_function   s    



r   c                 C   s   |    S N)encodedecode)textr   r   r   duplicate_string'   s    r   c                   @   s   e Zd ZdS )StrSubclassN)__name__
__module____qualname__r   r   r   r   r   1   s   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eejd!kd"d#d$ Zd%d& Zejd'd( Zd)d* Zd+d, Z fd-d.Z  fd/d0Z! fd1d2Z" fd3d4Z#e$d5d6d7 Z% fd8d9Z& fd:d;Z' fd<d=Z(d>d? Z) fd@dAZ*dBdC Z+dDdE Z,ejdFdG Z-dHdI Z.dJdK Z/dLdM Z0dNdO Z1dPdQ Z2dRdS Z3 fdTdUZ4dVdW Z5dXdY Z6e7ejdZkd[ejd\d] Z8d^d_ Z9d`da Z:dbdc Z;ddde Z<dfdg Z=dhdi Z>djdk Z?dldm Z@dndo ZAdpdq ZBdrds ZCdtdu ZDejdvdw ZEdxdy ZFdzd{ ZGeHd|d}d~dd ZIdd ZJdd ZKdd 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 Zaeejd!kp@ebcddkddd Zdejdd Zedd Zfdd Zgdd Zhdd Ziejdd ZjddÄ Zkddń ZlddǄ Zm  ZnS )UnicodeTestc                 G   s   t ||}|| }| || | t|t|u  ||u rG dd dt}||}t ||}|| }| || | ||u d S )Nc                   @   s   e Zd Zdd ZdS )z)UnicodeTest.checkequalnofix.<locals>.usubc                 S   s   dt |  S )Nzusub(%r))str__repr__selfr   r   r   r!   E   s    z2UnicodeTest.checkequalnofix.<locals>.usub.__repr__Nr   r   r   r!   r   r   r   r   usubD   s   r%   )getattrassertEqual
assertTruetyper    )r#   resultobjectZ
methodnameargsmethodZ
realresultr%   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 )r'   assertRaisesSyntaxErrorevalassertNotEqualr"   r   r   r   test_literalsM   s    zUnicodeTest.test_literalsc                 C   s<  t jds8| 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 ) 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                   @   s   e Zd Zdd ZdS )z)UnicodeTest.test_ascii.<locals>.WrongReprc                 S   s   dS Ns	   byte-reprr   r"   r   r   r   r!   |   s    z2UnicodeTest.test_ascii.<locals>.WrongRepr.__repr__Nr$   r   r   r   r   	WrongRepr{   s   rU   )sysplatform
startswithr'   asciijoinmapchrranger3   	TypeErrorr#   Z
latin1reprZtestreprrU   r   r   r   
test_asciiV   s.    
zUnicodeTest.test_asciic                 C   s<  t jds8| 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 ) Nr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   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®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'rQ   rR   rS   c                   @   s   e Zd Zdd ZdS )z(UnicodeTest.test_repr.<locals>.WrongReprc                 S   s   dS rT   r   r"   r   r   r   r!      s    z1UnicodeTest.test_repr.<locals>.WrongRepr.__repr__Nr$   r   r   r   r   rU      s   rU   )rV   rW   rX   r'   reprrZ   r[   r\   r]   r3   r^   r_   r   r   r   	test_repr   s.    
zUnicodeTest.test_reprc                 C   sJ   d  }| t|d | t|d | t|d | tt| d S )Nu	   ᄑ∢㌳u   ᄑu   ∢u   ㌳)__iter__r'   nextr3   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   rx      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Ăfindrp   rm      ȁ   Ġ   Ƞuh   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa􀌄rq      􀈄   􂀄r   abcdefghiabcr9   	   rl   def   hellor      ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂarj     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ădaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ   ĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂa_rr     􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄a_  􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄Ă_rs   rt   ru   rv   )r   rw   	test_findry   r.   r3   r^   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rfindrp   rm   r|   r}   r~   uh   􀌄aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarq   r   r   r   r   r9      rQ      aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂrj     a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄r   r      _aĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂĂ_a  _a􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄  _Ă􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄􀌄   _Ă   Ăa   􀌄a   􀌄Ă)r   rw   
test_rfindry   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   indexrQ   rh   r   r9   r   rl   hibZabcdefghiab	abcdefghighi   rm   rz   r   rj   r   r   rp   r   rq   r   r   rr   r   r   rs   rt   ru   rv   )r   rw   
test_indexr.   r3   
ValueErrorr   ry   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   rindexrQ   rh   r   r   r9   r   rm   r   Z	defghiabcrl   r   r   r   r   rj   r   r   rp   r   rq   r   r   r   r   r   r   r   r   r   )r   rw   test_rindexr.   r3   r   r   ry   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| qP| 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	translaterj   Ziiicrk   iZiiixcxrQ   ZxyyxZxzxzZyyz<i>rj   rk   z
<i><i><i>cr9   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	   [<€>é]r1   u
   aé€􏿿z[%s]Zdefgrn   r   Zxy)rl   r   )
r.   ord	type2test	maketransr'   r   r    r3   r   r^   )r#   ZtblZinvalid_charbeforemappingr   r   r   r   test_maketrans_translate9  s    







z$UnicodeTest.test_maketrans_translatec              	   C   s   t j|  dD ]\}}|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   rp   u   𐌂splitrn   )r   rw   
test_splitry   r#   leftrightdelimr   r   r   r     s"    


zUnicodeTest.test_splitc              	   C   s   t j|  dD ]\}}|d9 }|d9 }dD ]|}| || g|| d| | ||g|| | d| | || g|| d|d  | ||g||d  | d|d  q,qd S )Nr   r   r   rsplitrn   )r   rw   test_rsplitry   r   r   r   r   r     s"    


zUnicodeTest.test_rsplitc              	   C   s   t j|  | dddd dD ]\}}|d9 }|d9 }dD ]}| || ddf|| d| | |||f|| | d| | || ddf|| d|d	  | ||d	 |f||d	  | d|d	  q<q d S )
N)ABCDEFGHrQ   rQ   r   	partition   䈀r   r   r   rQ   rn   )r   MixinStrUnicodeUserStringTesttest_partitionry   r   r   r   r   r     s$    
zUnicodeTest.test_partitionc              	   C   s   t j|  | dddd dD ]\}}|d9 }|d9 }dD ]}| dd|| f|| d| | |||f|| | d| | dd|| f|| d|d	  | ||d	 |f||d	  | d|d	  q<q d S )
N)rQ   rQ   r   r   
rpartitionr   r   r   r   rQ   rn   )r   r   test_rpartitionry   r   r   r   r   r     s$    
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                   @   s   e Zd Zdd Zdd ZdS )z(UnicodeTest.test_join.<locals>.MyWrapperc                 S   s
   || _ d S r   sval)r#   r   r   r   r   __init__      z1UnicodeTest.test_join.<locals>.MyWrapper.__init__c                 S   s   | j S r   r   r"   r   r   r   __str__  r   z0UnicodeTest.test_join.<locals>.MyWrapper.__str__Nr   r   r   r   r   r   r   r   r   	MyWrapper  s   r   za b c dr2   rZ   )rj   rk   r   r   abcdrQ   zw x y zZwxyz12foo3)rl   rn   rh   )r   r   rh   )r   r   	test_joinr.   Sequencecheckraisesr^   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      ?rl   ArQ   )intrV   maxsizer3   OverflowErrorrZ   )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 ]\}}|d
9 }|d
9 }dD ]}dD ]}| || || d|| | || | || | d|| | || || d|d | | || | ||d  | d|d | qZqRq6d S )Nzone@two!three!zone!two!three!replace!@rl   rr   r   r   r   )r   u   ău   𐌃rn   )r   rw   test_replacer.   r3   r^   r   ry   )r#   r   r   r   replr   r   r   r     s,    



zUnicodeTest.test_replacec                 C   s    d}d}|  |||| d S )Nr9   zabc def)assertIsr   )r#   patternr   r   r   r   test_replace_id  s    zUnicodeTest.test_replace_idc                 C   s   t  d tdt | ddkd | ddkd | dtdkd | dtdkd W d    n1 sr0    Y  d S )Nignorer9      abcFT)r   Zcheck_warningswarningssimplefilterBytesWarningr'   	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 )Nr9   r      u   )r'   r(   r"   r   )r#   Z
test_fixupZ
test_lecmpr   test_comparison  s    5zUnicodeTest.test_comparisonc                    s   t    | ddd | d  | d  | d  | d  | d  | d	  | d
  | d  d S )NF   ῼislower   Ⅷ   ⅷ   𐐁   𐐧   𐐩   𐑎   🐍   👯)supertest_islowerr.   assertFalser   r(   r"   	__class__r   r   r   =  s    
zUnicodeTest.test_islowerc                    s   t    tjds$| ddd | d  | d  | d  | d  | d	  | d
  | d  | d  d S )Nr8   Fr   isupperr   r   r   r   r   r   r   r   )	r   test_isupperrV   rW   rX   r.   r(   r   r   r"   r   r   r   r  L  s    
zUnicodeTest.test_isupperc                    sf   t    | ddd | ddd | d  | d  dD ]}| | d| qFd S )	NTr   istitleu   Greek ῼitlecases ...u   𐐁𐐩u   𐐧𐑎)r   r   r   r   z{!a} is not title)r   test_istitler.   r(   r  r   formatr#   chr   r   r   r  \  s    
zUnicodeTest.test_istitlec                    sX   t    | ddd | ddd | ddd dD ]}| | d| q8d 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	  h  s    
zUnicodeTest.test_isspaceZcpuc                 C   sP   t tjd D ]<}t|}t|}t|}| | |dv pF|dk qd S )Nrl   )ZWSBSZZs)	r]   rV   
maxunicoder\   unicodedatabidirectionalcategoryr'   r  )r#   Z	codepointcharr  r  r   r   r   test_isspace_invariantr  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_isalnumr(   isalnumr  r  r   r   r   r  |  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.   r(   r  r   r"   r   r   r   r    s    
zUnicodeTest.test_isalphac                    s*   t    | d  | d  d S )N   €   􏿿)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| qdD ]}| | d| qd S )NFrQ   	isdecimalrj   T0   ①   ¼   ٠
01234567890123456789ar9   r   )r   r   r   r   r   r      𑁥r  z{!a} is not decimal.)r  r  r  z{!a} is decimal.)r.   r   r^   r   r  r  r(   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| q8d	D ]}| | d
| qXd S )NTr   isdigitFr!  r"  )r   r   r   r   r   r   r%  z{!a} is not a digit.)r  r  r  r  z{!a} is a digit.)r   test_isdigitr.   r   r'  r  r(   r  r   r   r   r(    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| qdD ]}| | d| qd S )NFrQ   	isnumericrj   Tr  r   r!  r"  r#  r$  r9   r   r  z{!a} is not numeric.)r%  r  r  r  r  z{!a} is numeric.)r.   r3   r^   r)  r   r  r(   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 )Nrj   Z_Zb0ZbcZb_   µu   𝔘𝔫𝔦𝔠𝔬𝔡𝔢r2   [   ©r  )r(   isidentifierr   r"   r   r   r   test_isidentifier  s    zUnicodeTest.test_isidentifierc                 C   s2   dd l }d}| |  | ||  d S )Nr   u   𝖀𝖓𝖎𝖈𝖔𝖉𝖊)	_testcapir(   r0  Zunicode_legacy_string)r#   r2  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 )
NrQ   r2   abcdefgzabcdefg
   ʹ   ͸   r   u   󠀠)r(   isprintabler   r"   r   r   r   test_isprintable  s    zUnicodeTest.test_isprintablec                 C   s   dD ].}|  |  | |  | |  qdD ].}| |  |  |  |  |  q8dD ]0}tt|}dD ]}| ||d||f  q~qldD ]0}tt|}dD ]}| ||d||f  qqd S )N)   ab   ab	   aba	   aba)u   ABu   ABu	   ABAu	   ABA)r   r   r  )r8           z%a.%s() is False)r  r  r'  r  r  r)  r0  r9  )r8  r?  r@  rA  r;  r<  r=  r>  )r(   r   r   r   r  r&   r    )r#   sZ	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   rw   
test_lowerr'   lowerr"   r   r   r   rU    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   ßssrJ  firM  rN  rP  u   aισr-  u   μ)r'   casefoldr"   r   r   r   test_casefold  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 )NrE  r   rG  rF  rH  rI  u
   X𐐧X𐐧rJ  FIrK  rM  rW  SS   ῒ   Ϊ̀rT  r   r   )r   rw   
test_upperr'   upperr"   r   r   r   r`  #  s$    


zUnicodeTest.test_upperc                 C   s   t j|  | d d | d d | d d | d d | d d | d d	 d
}| d | | d d | d d d S )NrE  r   rG  rH     𐑏𐐧rI  u
   X𐑏x𐑏u   hİu   Hi̇u	   Ϊ̀i̇u   ῒİu   ﬁnnishFinnishrP  u   Aͅς)r   rw   test_capitalizer'   
capitalize)r#   expr   r   r   rd  4  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 )NrE  r   rG  rH  u   𐑏𐑏 𐑏𐑏u   𐐧𐑏 𐐧𐑏u   𐑏𐐧 𐑏𐐧u   X𐐧x𐑏 X𐐧x𐑏u   X𐑏x𐑏 X𐑏x𐑏u   ﬁNNISHrc  u	   AΣ ᾡxyu	   Aς ᾩxyu   AΣAu   Aσa)r   
test_titler'   titler"   r   r   r   rg  E  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 )NrE  r   rG  rF  rH  rb  rI  u
   x𐑏X𐐧rJ  r\  rK  rL  rM  rN  rO  u   ΙσrP  u   aΙςrQ  u   aΙσArR  u   aςΙrS  u   σΙ rW  r]  r^  r_  )r   rw   test_swapcaser'   swapcaser"   r   r   r   ri  V  s6    



zUnicodeTest.test_swapcasec                 C   sL   t j|  | dddd | dddd | dddd d S )	Nr   rn   r  u   x􏿿rh   u	   􏿿x􏿿r   u   􏿿x􏿿􏿿)r   rw   test_centerr'   centerr"   r   r   r   rk  p  s    zUnicodeTest.test_centerizrequires 32-bit systemc                 C   sT   d}zd| }W n$ t y4   | d|d   Y n0 z| t|j W ~n~0 d S )NiVUU   üz$no enough memory (%.0f MiB required)   )MemoryErrorZskipTestr3   r   ra  )r#   r   rB  r   r   r   test_case_operation_overflowy  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 ]J}| || |  |||  | |d | |  |d ||d   qZqJd S )Nrj   ZabdbZbdabZbdabaZbdbaZbdb)rj   rl   N)rl   Nrj   )r   rl   y)r   rl   Nr   Zabcxxxxabr9   )rl   Nrr  rQ    z abcabc ZasdfZasd)rj      Āu   𐌀r   r   rn   )assertInZassertNotInr3   r^   __contains__)r#   fillr   r   r   r   test_contains  sD    zUnicodeTest.test_containsc                 C   sX   d   d  d  d  d  d  ddd ddd ddd d S )N   𐀀􀀀   􀀀rh      𐀀)	rV  rZ  ra  re  rh  rj  rl  ljustrjustr"   r   r   r   test_issue18183  s    zUnicodeTest.test_issue18183c                 C   s  |  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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djdd7ddYdddd
 d}| t|djd | t|tdd d}| t|djd | tdj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 (  NrQ   rj   rr  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                   @   s   e Zd ZdddZdd ZdS )z"UnicodeTest.test_format.<locals>.Crz   c                 S   s
   || _ d S r   Z_xr#   r   r   r   r   r     s    z+UnicodeTest.test_format.<locals>.C.__init__c                 S   s   |S r   r   r#   specr   r   r   
__format__  s    z-UnicodeTest.test_format.<locals>.C.__format__N)rz   r   r   r   r   r  r   r   r   r   C  s   
r  c                   @   s   e Zd Zdd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Dc                 S   s
   || _ d S r   r   r  r   r   r   r     s    z+UnicodeTest.test_format.<locals>.D.__init__c                 S   s
   t | jS r   )r    r   r  r   r   r   r    s    z-UnicodeTest.test_format.<locals>.D.__format__Nr  r   r   r   r   D  s   r  c                   @   s   e Zd Zdd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Ec                 S   s
   || _ d S r   r  r  r   r   r   r     s    z+UnicodeTest.test_format.<locals>.E.__init__c                 S   s   d| j  d S )NzE()r  r"   r   r   r   r     s    z*UnicodeTest.test_format.<locals>.E.__str__Nr   r   r   r   r   E  s   r  c                   @   s   e Zd Zdd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Fc                 S   s
   || _ d S r   r  r  r   r   r   r     s    z+UnicodeTest.test_format.<locals>.F.__init__c                 S   s   d| j  d S )NzF(r  r  r"   r   r   r   r!     s    z+UnicodeTest.test_format.<locals>.F.__repr__N)r   r   r   r   r!   r   r   r   r   F  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Gc                 S   s
   || _ d S r   r  r  r   r   r   r     s    z+UnicodeTest.test_format.<locals>.G.__init__c                 S   s
   d| j  S )Nz
string is r  r"   r   r   r   r     s    z*UnicodeTest.test_format.<locals>.G.__str__c                 S   s"   |dkrd| j  d S t| |S )Nr   zG(r  )r   r+   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  s   r  c                   @   s   e Zd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Ic                 S   s
   |  |S r   )strftimer  r   r   r   r    s    z-UnicodeTest.test_format.<locals>.I.__format__Nr   r   r   r  r   r   r   r   I  s   r  c                   @   s   e Zd Zdd ZdS )z"UnicodeTest.test_format.<locals>.Jc                 S   s   t | d |S Nrn   )r   r  r  r   r   r   r    s    z-UnicodeTest.test_format.<locals>.J.__format__Nr  r   r   r   r   J  s   r  c                   @   s    e Zd Zdd Zdd ZdZdS )z"UnicodeTest.test_format.<locals>.Mc                 S   s
   || _ d S r   r  r  r   r   r   r     s    z+UnicodeTest.test_format.<locals>.M.__init__c                 S   s   d| j  d S )NzM(r  r  r"   r   r   r   r!      s    z+UnicodeTest.test_format.<locals>.M.__repr__N)r   r   r   r   r!   r   r   r   r   r   M  s   r  c                   @   s    e Zd Zdd Zdd ZdZdS )z"UnicodeTest.test_format.<locals>.Nc                 S   s
   || _ d S r   r  r  r   r   r   r     s    z+UnicodeTest.test_format.<locals>.N.__init__c                 S   s   d| j  d S )NzN(r  r  r"   r   r   r   r!     s    z+UnicodeTest.test_format.<locals>.N.__repr__N)r   r   r   r   r!   r  r   r   r   r   N  s   r  r9   {0}z{0:}zX{0}ZXabcz{0}XZabcXzX{0}YZXabcYz{1}rl   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[ ]}r2   rh   r   {foo._x}   )r   20z{1}{0}ro   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}r*   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: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)r7  z'\u0378'r6  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}]}r5  r   z{0:{1:{2}}}rB  z{0:{1:{2:{3:{4:{5:{6}}}}}}}rn         z+Sign not allowed in string format specifierz{0:-s}-z,Space not allowed in string format specifierz{: }z{0:=s}#z#20z
{0:s}{1:s}ABCu   АБВu	   ABCАБВz{[{}]}z{[{]}z{[}]}z{[[]}r.  z{[!]}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))r'   r  datetimedictdater   r3   r^   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 ))NrQ   rj   rr  r  r  r  r  r  r  r  r  r  r  c                   @   s   e Zd Zdd ZdS )z,UnicodeTest.test_format_map.<locals>.Mappingc                 S   s   |S r   r   r#   keyr   r   r   __missing__  s    z8UnicodeTest.test_format_map.<locals>.Mapping.__missing__N)r   r   r   r  r   r   r   r   Mapping  s   r  z{hello}r   z{a} {world})rj   r  c                   @   s   e Zd Zdd Zdd ZdS )z4UnicodeTest.test_format_map.<locals>.InternalMappingc                 S   s   ddi| _ d S )Nrj   r   r   r"   r   r   r   r     s    z=UnicodeTest.test_format_map.<locals>.InternalMapping.__init__c                 S   s
   | j | S r   r  r  r   r   r   __getitem__  s    z@UnicodeTest.test_format_map.<locals>.InternalMapping.__getitem__N)r   r   r   r   r  r   r   r   r   InternalMapping  s   r  z{a}c                   @   s   e Zd ZdddZdd ZdS )z&UnicodeTest.test_format_map.<locals>.Crz   c                 S   s
   || _ d S r   r  r  r   r   r   r     s    z/UnicodeTest.test_format_map.<locals>.C.__init__c                 S   s   |S r   r   r  r   r   r   r  	  s    z1UnicodeTest.test_format_map.<locals>.C.__format__N)rz   r  r   r   r   r   r    s   
r  r  r   r  r  r  r  r  r  r  rn   z{a} {}rl   r   c                   @   s   e Zd Zdd ZdS )z/UnicodeTest.test_format_map.<locals>.BadMappingc                 S   s   dd S )Nrl   r   r   r  r   r   r   r    s    z;UnicodeTest.test_format_map.<locals>.BadMapping.__getitem__N)r   r   r   r  r   r   r   r   
BadMapping  s   r  )r'   
format_mapr  r3   r^   r   r  ZeroDivisionError)r#   r  r  r  r  r   r   r   test_format_map  s<    zUnicodeTest.test_format_mapc                 C   sH   d tjd }| t t d|}W d    n1 s:0    Y  d S )Nz.{}frl   Q@r  rV   r   r3   r   r#   format_stringr*   r   r   r   test_format_huge_precision$  s    z&UnicodeTest.test_format_huge_precisionc                 C   sH   d tjd }| t t d|}W d    n1 s:0    Y  d S )Nz{}frl   r  r  r  r   r   r   test_format_huge_width)  s    z"UnicodeTest.test_format_huge_widthc                 C   sH   d tjd }| t | d}W d    n1 s:0    Y  d S )Nz
{{{}:.6f}}rl   r  r  r  r   r   r   test_format_huge_item_number.  s    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                   @   s   e Zd ZdddZdd ZdS )z1UnicodeTest.test_format_auto_numbering.<locals>.Crz   c                 S   s
   || _ d S r   r  r  r   r   r   r   5  s    z:UnicodeTest.test_format_auto_numbering.<locals>.C.__init__c                 S   s   |S r   r   r  r   r   r   r  7  s    z<UnicodeTest.test_format_auto_numbering.<locals>.C.__format__N)rz   r  r   r   r   r   r  4  s   
r  r  ro   r  z{:5}rB  zs    r  z's'z{._x}z{[1]}rl   rn   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}{}rh   g)r  r  z 1g3z{f:{}}{}{g})r  r  z 14g)r'   r  r3   r   )r#   r  r   r   r   test_format_auto_numbering3  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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# | 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)r9   r9   zabc, abcz%s, %s, %i, %f, %5.2f)r9   r9   rl   rn   rh   zabc, abc, 1, 2.000000,  3.00)r9   r9   rl   rh   zabc, abc, 1, -2.000000,  3.00)r9   r9   rm   r  g      @zabc, abc, -1, -2.000000,  3.50)r9   r9   rm   r  g(\@zabc, abc, -1, -2.000000,  3.57)r9   r9   rm   r  g(\\@z abc, abc, -1, -2.000000, 1003.57r8   z%r, %r)r   r9   zb'abc', 'abc'z%r)   ሴu   'ሴ'z%az'\u1234'z%(x)s, %(y)sr9   r   )r   rq  zabc, defu   %(x)s, %(ü)s)r   rm  z%ci4  r  i u   𡒃)r1   Zaau   %.1ဲfgUUUUUU?z%i...%(foo)s...r   z	...abc...r  r   r   z...%s...%s...%s...%s...)rl   rn   rh   r9   z...1...2...3...abc...z"...%%...%%s...%s...%s...%s...%s...z...%...%s...1...2...3...abc...z...%s...z%*s)r  r9   z  abc)r9   zabc  z%*.*s)r  rn   r9   z   ab)r  rh   r9   z%i %*.*s)ro   r  rh   r9   z10   abcz
%i%s %*.*s)ro   rh   r  rh   r9   z	103   abcrj   c                   @   s   e Zd Zdd ZdS )z,UnicodeTest.test_formatting.<locals>.Wrapperc                 S   s   dS )Nr  r   r"   r   r   r   r   {  s    z4UnicodeTest.test_formatting.<locals>.Wrapper.__str__Nr   r   r   r   r   r   r   r   Wrapperz  s   r  %snaninfz%fz%FNANINFz%.1su   aé€z%.2su   aéc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z.UnicodeTest.test_formatting.<locals>.PseudoIntc                 S   s   t || _d S r   r   valuer#   r  r   r   r   r     s    z7UnicodeTest.test_formatting.<locals>.PseudoInt.__init__c                 S   s   | j S r   r  r"   r   r   r   __int__  s    z6UnicodeTest.test_formatting.<locals>.PseudoInt.__int__c                 S   s   | j S r   r  r"   r   r   r   	__index__  s    z8UnicodeTest.test_formatting.<locals>.PseudoInt.__index__N)r   r   r   r   r  r  r   r   r   r   	PseudoInt  s   r  c                   @   s   e Zd Zdd Zdd ZdS )z0UnicodeTest.test_formatting.<locals>.PseudoFloatc                 S   s   t || _d S r   )floatr  r  r   r   r   r     s    z9UnicodeTest.test_formatting.<locals>.PseudoFloat.__init__c                 S   s
   t | jS r   r  r"   r   r   r   r    s    z8UnicodeTest.test_formatting.<locals>.PseudoFloat.__int__N)r   r   r   r   r  r   r   r   r   PseudoFloat  s   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_formattingr'   rV   rW   rX   r3   r   __mod__r^   r   r  r  operatormod)r#   r  r  r  r  r  piZletter_mr   r   r   r  Q  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                   @   s   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  s   r  c                   @   s   e Zd ZdZdS )z2UnicodeTest.test_formatting_with_enum.<locals>.Intr  N)r   r   r   IDESr   r   r   r   Int  s   r  c                   @   s   e Zd ZdZdS )z2UnicodeTest.test_formatting_with_enum.<locals>.Strr9   N)r   r   r   r  r   r   r   r   Str  s   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    r'   r  r  r  )r#   r  r  r  r   r   r   r   test_formatting_with_enum  sB    z%UnicodeTest.test_formatting_with_enumc                 C   sF   d tjd }| t |d }W d    n1 s80    Y  d S )N%.{}frl   r  r  r  r   r   r   test_formatting_huge_precision  s    z*UnicodeTest.test_formatting_huge_precisionc                 C   s(   G dd dt }| d|d d d S )Nc                   @   s   e Zd Zdd ZdS )zBUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStrc                 S   s
   d |S )Nz'Success, self.__rmod__({!r}) was calledr  )r#   otherr   r   r   __rmod__  s    zKUnicodeTest.test_issue28598_strsubclass_rhs.<locals>.SubclassedStr.__rmod__N)r   r   r   r	  r   r   r   r   SubclassedStr  s   r
  z	lhs %% %rZrhsz.Success, self.__rmod__('lhs %% %r') was calledr    r'   )r#   r
  r   r   r   test_issue28598_strsubclass_rhs  s    z+UnicodeTest.test_issue28598_strsubclass_rhsc                 C   sP   ddl m} d|d }| t |d }W d    n1 sB0    Y  d S )Nr   )INT_MAXr  rl   r  )r2  r  r  r3   r   )r#   r  r  r*   r   r   r   'test_formatting_huge_precision_c_limits  s    z3UnicodeTest.test_formatting_huge_precision_c_limitsc                 C   sF   d tjd }| t |d }W d    n1 s80    Y  d S )Nz%{}frl   r  r  r  r   r   r   test_formatting_huge_width  s    z&UnicodeTest.test_formatting_huge_widthc              	   C   sl   dj djfD ]Z}| t}|dg W d    n1 s:0    Y  t|j}| d| | d| qd S )Nr   r  r    tuple)rX   endswithr3   r^   r    	exceptionrv  )r#   rC  cmexcr   r   r   test_startswith_endswith_errors  s    (
z+UnicodeTest.test_startswith_endswith_errorsLC_ALLde_DEfr_FRc                 C   s   |  ddd  d S )Nz1.0z%.1fg      ?r'   r"   r   r   r   test_format_float  s    zUnicodeTest.test_format_floatc                 C   s^  |  tdd dD ]\}t|}|  t|| |  t|t| |dkr|  |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| qtjds| t	tddd |  tdddd tjdsH|  tt
dddd | t	tddd d S )Nzunicode remains unicode)rY   r   r  r  rY   s   asciiutf-8z strings are converted to unicodec                   @   s   e Zd Zdd Zdd ZdS )z2UnicodeTest.test_constructor.<locals>.StringCompatc                 S   s
   || _ d S r   r  r  r   r   r   r     s    z;UnicodeTest.test_constructor.<locals>.StringCompat.__init__c                 S   s   | j S r   r  r"   r   r   r   r     s    z:UnicodeTest.test_constructor.<locals>.StringCompat.__str__Nr   r   r   r   r   StringCompat  s   r  z)__str__ compatible objects are recognizedz#unicode(obj) is compatible to str())r  g^@r  r8   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   )r'   r    r   lenr   rV   rW   rX   r3   r^   
memoryview)r#   r   subclassr  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 )	Nr   )r+   s   foor  )r+   r   r   r   )r+   r   )r'   r    r"   r   r   r   test_constructor_keyword_args5  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 )NrQ   r   r#     ¢r  rY   )r   )r'   r    r   r3   UnicodeDecodeError)r#   Z	utf8_centr   r   r   test_constructor_defaults>  s
    
z%UnicodeTest.test_constructor_defaultsc                 C   s  g d}|D ]\}}|  |d| q|  ddd |  ddd |  ddd |  d	dd
 |  ddd |  ddd |  ddd |  d
dd	 |  ddd |  ddd |  dddd d}d}|D ]4}|  |d|d |  |dd| q|D ]}|  |dd| q6| td dd W d    n1 s0    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?r)  )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   rQ   zGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?z!"#$%&*;<=>@[]^_`{|}utf7rY   zill-formed sequences   +@)r'   r   r   r  r&  )r#   ZutfTestsr   rq  Zset_dZset_or   r   r   r   test_codecs_utf7I  s2    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 )NrQ   r  r   r  s   €u   𐀂s   𐀂u   𣑖s   𣑖r8  surrogatepasss   u   s   u(   𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂s(   𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂𐀂u   正確に言うと翻訳はされていません。一部はドイツ語ですが、あとはでたらめです。実際には「Wenn ist das Nunstuck git unds   正確に言うと翻訳はされていません。一部はドイツ語ですが、あとはでたらめです。実際には「Wenn ist das Nunstuck git und)r'   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))    rs  )   arj   )   )s      )s   ߿u   ߿)s   ࠀu   ࠀ)s   ퟿u   ퟿)s   u   )   ￿r0   )s   𐀀r|  )   􏿿r  r  )r'   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 q`|D ]"}|D ]}| t|| jd qqz|D ]D}|d d D ]2}|d d D ] }	| t|| d |	 jd qqqdd t ddD D ]4}| td| d jd | td| d jd qdd t ddD D ]6}| td| d jd | td| d jd qFdd t ddD D ]6}| td| d jd | td| d jd qdd t ddD D ]6}| td| d jd | td| d jd qd S )Nc                 S   s   g | ]}t |gqS r   r   .0r   r   r   r   
<listcomp>  r   zBUnicodeTest.test_utf8_decode_invalid_sequences.<locals>.<listcomp>      c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r      c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r         c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r      rR   r  rh      c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r            c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r      c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r            s   c                 S   s   g | ]}t |gqS r   r;  r<  r   r   r   r>    r      )r]   r3   r&  r   )
r#   Zcontinuation_bytesZinvalid_2B_seq_start_bytesZinvalid_4B_seq_start_bytesZinvalid_start_bytesbyteZsbcbZcb1Zcb3r   r   r   "test_utf8_decode_invalid_sequences  s`    
z.UnicodeTest.test_utf8_decode_invalid_sequencesc              ?   C   s  d}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dDdEdFdGg?}t |D ]l\}\}}| t|jdHdI | |dHdJ| | |dK dHdJ|dL  | |dHdM|ddN qd S )ON   �rE  rL  rn      s      s   s      s   s   rh   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��dr  r   r      brk   r   rQ   )	enumerater3   r&  r   r'   r   )r#   FFFDr8  r  r   r9  r   r   r   test_issue8271  s    






























K
zUnicodeTest.test_issue8271c                 C   s   |  t}|d W d    n1 s*0    Y  |j}| |t| | |dd| | d| d ddd| d  |dd}| |dd	| | d| d dd	d| d  d S )
Nr  r   s   aaaas   bbbbZaaaaZbbbbrQ  rQ   r   )r3   r&  r   r  rv  r    r'   r   )r#   r   r9  errr  r  r   r   r   assertCorrectUTF8Decoding:  s    (

z%UnicodeTest.assertCorrectUTF8Decodingc                 C   s&   d}dD ]}|  t|gdd qd S )NrQ  s   zinvalid start byte)r`  r   )r#   r]  rN  r   r   r   test_invalid_start_byteM  s
    z#UnicodeTest.test_invalid_start_bytec                 C   s.   g d}d}|D ]}|  t|dd qd S )N)&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 BFrQ  zunexpected end of datar`  r   fromhex)r#   r8  r]  r   r   r   r   test_unexpected_end_of_dataZ  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 qTd S )NrQ  rn   zC2 00rs  zC2 7Fr4  zC2 C0zC2 FFzDF 00zDF 7FzDF C0zDF FFinvalid continuation byterb  r#   r]  ZFFFDx2r8  r   r9  r   r   r   test_invalid_cb_for_2bytes_seqt  s    
z*UnicodeTest.test_invalid_cb_for_2bytes_seqc              M   C   s  d}|d }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gL}|D ]\}}|  t||dQ qld S )RNrQ  rn   zE0 00rs  zE0 7Fr4  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 FFre  rb  rf  r   r   r   test_invalid_cb_for_3bytes_seq  sP    
#z*UnicodeTest.test_invalid_cb_for_3bytes_seqc              u   C   s  d}|d }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gt}|D ]\}}|  t||dy qd S )zNrQ  rn   zF0 00rs  zF0 7Fr4  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 FFre  rb  rf  r   r   r   test_invalid_cb_for_4bytes_seq  s|    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.)r'   r   r"   r   r   r   test_codecs_idna  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 xrY   r   r   s   Andr xr   s   Andr? xr#  )r   r   s   Andr xzAndr xu	   Andr� xs    xu   � xs	   \N{foo}xxzunicode-escapexx   \   hellor   r   r   r   r8  u   )r3   UnicodeErrorr   r'   r    r   r^   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|||| qqtdD ].}t|}dD ]}|  t|||| qqtdD ]2}t|}dD ]}|  t|||| qqt 8 d}dD ]}|  t|||| qLW d    n1 s0    Y  dttt	tddt	tdd }dD ]}|  t|||| qd S )Nr   rY   rm  r,  r  	utf-16-les
   h e l l o 	utf-16-bes
    h e l l olatin-1u   ☃s   ☃i   )r,  r  utf-16rq  rr  raw_unicode_escapeunicode_escaperR   )rs  r?  )rY   u   𐀁𠀂𰀃񀀄񐀅)r  rt  rq  rr  ru  rv  rQ   r   i   i   r1   )r  )
r'   r   r]   r\   r    r   catch_warningsrZ   r[   list)r#   r   r3  r   r   r   r   test_codecs@  s:     
<zUnicodeTest.test_codecsc                 C   sb   t td}dD ]}| t|||| qt tdd}dD ]}| t|||| q@d S )Nr?  )9cp037cp1026cp273cp437cp500cp720cp737cp775cp850cp852cp855cp858cp860cp861cp862cp863cp865cp866cp1125
iso8859_10
iso8859_13
iso8859_14
iso8859_15	iso8859_2	iso8859_3	iso8859_4	iso8859_5	iso8859_6	iso8859_7	iso8859_9koi8_rkoi8_tkoi8_ukz1048latin_1mac_cyrillic
mac_latin2cp1250cp1251cp1252cp1253cp1254cp1255cp1256cp1257cp1258Zcp856cp857cp864cp869Zcp874	mac_greekmac_iceland	mac_romanmac_turkishZcp1006	iso8859_8rR   ) rz  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]   r'   r    r   )r#   rB  r   r   r   r   test_codecs_charmapo  s    zUnicodeTest.test_codecs_charmapc                 C   s@   |  dd |  dd |  dd |  dd |  dd d S )Nr  r   r  r"   r   r   r   test_concatenation  s
    zUnicodeTest.test_concatenationc                 C   s   G dd d}| }t d|d t dd|d t dd|d t dd|d t d|d t dd|d t dd|d t d	|d t d	|d d S )
Nc                   @   s   e Zd Zdd ZdS )z,UnicodeTest.test_printing.<locals>.BitBucketc                 S   s   d S r   r   )r#   r   r   r   r   write  s    z2UnicodeTest.test_printing.<locals>.BitBucket.writeN)r   r   r   r  r   r   r   r   	BitBucket  s   r  r9   )filer   zabc
r2   )endr  zdef
)print)r#   r  outr   r   r   test_printing  s    zUnicodeTest.test_printingc              
   C   s   d}| dd}| || d}|d d}| || d}|d d}| || zdd W n@ ty } z(| |jd | |jd W Y d }~nd }~0 0 | d d S )	Nr{  zraw-unicode-escapes
   \U00100000s
   \U00010000s
   \U11111111r   ro   z%Should have raised UnicodeDecodeError)r   r   r'   r&  startr  Zfail)r#   r   rq  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                   @   s   e Zd Zdd ZdS )z0UnicodeTest.test_conversion.<locals>.ObjectToStrc                 S   s   dS Nr   r   r"   r   r   r   r     s    z8UnicodeTest.test_conversion.<locals>.ObjectToStr.__str__Nr  r   r   r   r   ObjectToStr  s   r  c                   @   s   e Zd Zdd ZdS )z5UnicodeTest.test_conversion.<locals>.StrSubclassToStrc                 S   s   dS r  r   r"   r   r   r   r     s    z=UnicodeTest.test_conversion.<locals>.StrSubclassToStr.__str__Nr  r   r   r   r   StrSubclassToStr  s   r  c                   @   s   e Zd ZdddZdd ZdS )z=UnicodeTest.test_conversion.<locals>.StrSubclassToStrSubclassrQ   c                 S   s   t | d| S r  )r    __new__)clsZcontentr   r   r   r    s    zEUnicodeTest.test_conversion.<locals>.StrSubclassToStrSubclass.__new__c                 S   s   | S r   r   r"   r   r   r   r     s    zEUnicodeTest.test_conversion.<locals>.StrSubclassToStrSubclass.__str__N)rQ   )r   r   r   r  r   r   r   r   r   StrSubclassToStrSubclass  s   
r  r   r  Zfoofoo)r    r'   r   r)   r   )r#   r  r  r  rB  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                   @   s   e Zd Zdd ZdS )z)UnicodeTest.test_unicode_repr.<locals>.s1c                 S   s   dS N\nr   r"   r   r   r   r!     s    z2UnicodeTest.test_unicode_repr.<locals>.s1.__repr__Nr$   r   r   r   r   s1  s   r  c                   @   s   e Zd Zdd ZdS )z)UnicodeTest.test_unicode_repr.<locals>.s2c                 S   s   dS r  r   r"   r   r   r   r!     s    z2UnicodeTest.test_unicode_repr.<locals>.s2.__repr__Nr$   r   r   r   r   s2  s   r  r  r'   ra   )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	)r3   r   
expandtabsrV   r   r"   r   r   r   $test_expandtabs_overflows_gracefully  s    z0UnicodeTest.test_expandtabs_overflows_gracefullyc                 C   s   d}|  | | d S )Nr9   )r   r  )r#   rB  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 ]l t }|dk rBd	}|}n|d
k rTd}|}nd}|}tj| |  fdd}| t| | t| q$d S )Nr  r   0   H      $   )rj   r   r  r  rR   rl   r  rn   r   c                      s     S r   r   r   r  maxlenr   r   <lambda> 	  r   z0UnicodeTest.test_raiseMemError.<locals>.<lambda>)structcalcsizer   rV   r   r3   ro  )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                   @   s   e Zd Zdd ZdS )z+UnicodeTest.test_format_subclass.<locals>.Sc                 S   s   dS )N__str__ overriddenr   r"   r   r   r   r   &	  s    z3UnicodeTest.test_format_subclass.<locals>.S.__str__Nr  r   r   r   r   r  %	  s   r  xxxr  r  r  )r    r'   r  r#   r  rB  r   r   r   test_format_subclass$	  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                   @   s   e Zd Zdd ZdS )(UnicodeTest.test_subclass_add.<locals>.Sc                 S   s   dS Nr   r   r#   r   r   r   r   __add__.	  s    z0UnicodeTest.test_subclass_add.<locals>.S.__add__N)r   r   r   r  r   r   r   r   r  -	  s   r  r  r  r   c                   @   s   e Zd Zdd ZdS )r  c                 S   s   dS r  r   r  r   r   r   __iadd__2	  s    z1UnicodeTest.test_subclass_add.<locals>.S.__iadd__N)r   r   r   r  r   r   r   r   r  1	  s   r   r  r  r   r   r   test_subclass_add,	  s    zUnicodeTest.test_subclass_addc                 C   s@   d}|  }| |d | | |d | | t|d d S )Nr9   r   rl   )__getnewargs__assertIsNotr'   r  )r#   r   r,   r   r   r   test_getnewargs8	  s
    zUnicodeTest.test_getnewargsc                 C   sj   ddl m} tdddD ]L}d| d }||}| || |d7 }||}| || | || qd S )	Nr   )	getargs_url   rz   r  rj   rk   r   )r2  r  r]   r'   r6   )r#   r  lengthr   r9   r  r   r   r   test_resize?	  s    zUnicodeTest.test_resizec                 C   s  d}d| }d| }d| }d| }d| }d| }d| }d	| }	||||||||	f}
t |
d
D ]\}}||u }| ||k| | ||k|  |rd| ||k | ||k t|}t|}| || | ||k | ||k | ||k | ||k qd| ||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 )Nro   rj   r   r5  r/   ru  r0   r{  r  rn   )	itertoolscombinationsr'   r(   r   r  r   )r#   r  rY   Zascii2latinlatin2bmpbmp2ZastralZastral2stringsZtext1Ztext2ZequalZcopy1copy2r   r   r   test_compareP	  sx    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)rY   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-cro   )textwrapdedentr   r'   rc)r#   	encodingsinvalidr  procr   r   r   test_check_encoding_errors	  s&    $,
4z&UnicodeTest.test_check_encoding_errors)or   r   r   r    r   r.   r7   r`   rb   rg   rx   r   r   r   r   r   r   r   r   r   r   unittestZskipIfrV   r   r   r   r   cpython_onlyr   r   r   r   r  r  r	  Zrequires_resourcer  r  r  r  r&  r(  r*  r1  r4  r:  rD  rU  r[  r`  rd  rg  ri  rk  Z
skipUnlessrp  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zrun_with_localer  r"  r$  r'  r.  r0  r:  rP  r^  r`  ra  rd  rg  rh  ri  rj  rp  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__r   r   r   r   r   4   s   	**F

;

	
		'  6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dd Zejdd Zejdd Z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 s0    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    )r=  arg)r  r   r   	<genexpr>	  s   zJCAPITest.test_from_format.<locals>.PyUnicode_FromFormat.<locals>.<genexpr>)r  )r  r,   Zcargs)_PyUnicode_FromFormatr  r   r   r  	  s    z7CAPITest.test_from_format.<locals>.PyUnicode_FromFormatc                    s     |g|R  } | | d S r   r  )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=%srY   u   ꯍs   %ciͫ  r   r1   rz  s   %c%cr  rn  %   %s   %%r  s   %%sz[%]s   [%%]z%abcs   %%%sr   r9   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   %03iro   Z0010s   %0.4iz-123s   %iis   %lis   %llis   %zis   %ds   %lds   %llds   %zdr   s   %ur  s   %lus   %llus   %zurn   r   rl   s   %prm   r  s   %010irz   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   %.%srQ   r   s   %s)r   import_moduler  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r&   argtypesZrestyper  r   r3   r   r   r    r~  )r#   r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  Zmin_longlongZmax_longlongZmax_ulonglongr   )r  r  r  r#   r   test_from_format	  s   
<
,




zCAPITest.test_from_formatc           	      C   s:  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rd	}d}nd}d}|||\}}| || | ||d  d S )Nr   )unicode_aswidecharr  c_wcharr  r  rn   rr  r9   rh   r   rt  ro   abc defr  r  abc def r  rl   rs  )	r2  r   r   r  r  r"  r  r'   r\   )	r#   r   r"  r  wcharr   nonbmp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rd}nd}||\}}| || | ||d  d S )Nr   )unicode_aswidecharstringr  r!  r9   rh   rt  r#  r  r$  r  rn   rl   rs  )	r2  r*  r   r  r  r"  r  r'   r\   )r#   r*  r"  r  r%  r   r&  r(  r   r   r   test_aswidecharstring
  s     
zCAPITest.test_aswidecharstringc                 C   s   ddl m} dD ]}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)r9      ¡¢   你好   a😀	   abcu   Trs  Fr0   rl   u    ￿rn   )r2  r,  r  r'   r3   SystemErrorrZ   )r#   r,  rB  lr   r   r   test_asucs4  s    zCAPITest.test_asucs4c                 C   s^   ddl m} d}d}td}| ||d | ||d | ||d | t|d	 d S )
Nr   )unicode_asutf8ru  r0   r     Ār6  r7  r0  )r2  r4  r\   r'   r3   UnicodeEncodeError)r#   r4  r  r  r&  r   r   r   test_asutf8  s    zCAPITest.test_asutf8c                 C   s^   ddl m} d}d}td}| ||d | ||d | ||d | t|d	 d S )
Nr   )unicode_asutf8andsizeru  r0   r  )r5  rn   )r6  rh   )r7  r   r0  )r2  r8  r\   r'   r3   r6  )r#   r8  r  r  r&  r   r   r   test_asutf8andsize,  s    zCAPITest.test_asutf8andsizec                 C   s   dd l }|j}dD ]0}|d}| ||| | ||d| q| t|d | t|d | t|d | t|d | |dd	d
 | |dd	d | t|dd d S )Nr   r9   r-  r.  r/  r  r   rE  rR        ar   u   a�   ab   a�b   ar   )r2  Zunicode_decodeutf8r   r'   r3   r&  LookupError)r#   r2  Z
decodeutf8rB  rk   r   r   r   test_decodeutf89  s    
zCAPITest.test_decodeutf8c                 C   s   dd l }|j}dD ]@}|d}| |||t|f | ||d|t|f q| t|d | t|d | t|d | |dd	 | |dd
d	 | t|d | |dd
d | t|dd d S )Nr   r:  r  r   rE  rR  r;  r<  )rj   rl   r   r=  )r>  r   r?  r   )r2  Zunicode_decodeutf8statefulr   r'   r  r3   r&  r@  )r#   r2  Zdecodeutf8statefulrB  rk   r   r   r   test_decodeutf8statefulO  s    
z CAPITest.test_decodeutf8statefulc              
   C   sp  ddl m} dD ]V}t|D ]H\}}| ||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   🄀🇱rl   rm   z!>_<!r1   r   r   )r2  rC  r\  r'   r   r  )r#   rC  r    r   r  r   r   r   test_findchari  s     $$$ "zCAPITest.test_findcharc           	      C   sx  ddl m} g d}t|D ]\}}|d | D ]}| t||d|dd q0tdD ]8}| ||d||d|||d  ddd| f qTtdD ]8}| |||||d|||d  ddd| f qq|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  rs  r  rm   rl   r   )
r2  rF  r\  r3   r1  r]   r'   r}  r~  r  )	r#   rF  r  idxZfrom_toZ
from_startZto_startrB  r   r   r   test_copycharacters  s<    zCAPITest.test_copycharactersc                 C   sb   ddl m} | |dd | |dd | |dd | t|d	d
 | td|d	d d S )Nr   )unicode_encodedecimalr   r     ٣.١٤s   3.14
    3.14 s    3.14    123€r   z'^'decimal' codec can't encode characterr   )r2  rJ  r'   r3   r6  r  r   )r#   rJ  r   r   r   test_encode_decimal  s$    


zCAPITest.test_encode_decimalc                 C   sP   ddl m} | |dd | |dd | |dd | |dd d S )Nr   )unicode_transformdecimaltoasciir   rK  z3.14rL  rM  )r2  rO  r'   )r#   Ztransform_decimalr   r   r   test_transform_decimal  s    



zCAPITest.test_transform_decimalc                 C   sx   ddl m} dD ]b}d}tdD ]P}|t|7 }| ||t| |d   | ||t| |d   q qd S )Nr   )getargs_s_hash)r     i   i rQ   r  rl   )r2  rQ  r]   r\   r'   r   )r#   rQ  krB  r   r   r   r   test_pep393_utf8_caching_bug  s     z%CAPITest.test_pep393_utf8_caching_bugN)r   r   r   r  r   r  r)  r+  r3  r7  r9  rA  rB  rE  rI  rN  rP  rT  r   r   r   r   r  	  s4    r
%







)

r  c                   @   s   e Zd Zdd Zdd ZdS )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   )rx  _stringformatter_parserr  r   r   r   parse  s    z5StringModuleTest.test_formatter_parser.<locals>.parsez2prefix {2!s}xxx{0:^+10.3f}{obj.attr!s} {z[0]!s:10}))prefix r   rQ   rB  )r  r  z^+10.3fN)rQ   zobj.attrrQ   rB  )r2   zz[0]r  rB  zprefix {} suffix)rY  rQ   rQ   N)z suffixNNNr    )r    NNNrQ   r  )rQ   r  rQ   Nrl   )r'   r3   r^   rV  rW  )r#   rX  	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 )Nrl   )rx  rV  formatter_field_name_split)r  itemsr   r   r   r     s    z?StringModuleTest.test_formatter_field_name_split.<locals>.splitr!  zobj.argTr  zobj[key])Fr  zobj.arg[key1][key2])r^  )FZkey1)FZkey2rl   )r'   r3   r^   rV  r\  )r#   r   r   r   r   test_formatter_field_name_split  s    
z0StringModuleTest.test_formatter_field_name_splitN)r   r   r   r[  r_  r   r   r   r   rU    s   !rU  __main__)rV  codecsr  r  r  rV   r  r  r   r   r  r   r   Ztest.support.script_helperr   r   registerr   r    r   rw   r   ZMixinStrUnicodeTestZTestCaser   r  rU  r   mainr   r   r   r   <module>   s^   

                   :     3