
    z%i                         d dl Z d dlZd dlmZ d dlmZ 	 d dlZdZ G d de	      Z
 G d de j                        Zedk(  r e j                          yy# e$ r dZY Cw xY w)	    N)support)import_helperc                       e Zd Zy)StrN)__name__
__module____qualname__     O/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_capi/test_unicode.pyr   r      s    r   r   c                   *   e Zd Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Z	ej                   ej                  edu d      d               Z
ej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d	               Zej                   ej                  edu d      d
               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zd Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Zej                   ej                  edu d      d               Z ej                   ej                  edu d      d               Z!ej                   ej                  edu d      d               Z"ej                   ej                  edu d      d               Z#ej                   ej                  edu d      d               Z$ej                   ej                  edu d      d                Z%ej                   ej                  edu d      d!               Z&ej                   ej                  edu d      d"               Z'ej                   ej                  edu d      d#               Z(ej                   ej                  edu d      d$               Z)ej                   ej                  edu d      d%               Z*ej                   ej                  edu d      d&               Z+ej                   ej                  edu d      d'               Z,ej                   ej                  edu d      d(               Z-ej                   ej                  edu d      d)               Z.ej                   ej                  edu d      d*               Z/ej                   ej                  edu d      d+               Z0ej                   ej                  edu d      d,               Z1ej                   ej                  edu d      d-               Z2ej                   ej                  edu d      d.               Z3ej                   ej                  edu d      d/               Z4ej                   ej                  edu d      d0               Z5ej                   ej                  edu d      d1               Z6y)2CAPITestNzneed _testcapi modulec                 .   	 ddl m} dD ]@  }| j                   |d|      d       | j                   |d|      t        |      dz         B | j                   |dd      d       | j	                  t
        |dd       | j	                  t
        |dd       y )Nr   )unicode_new)r   a      i`O            )	_testcapir   assertEqualchrassertRaisesSystemError)selfnewmaxchars      r   test_newzCAPITest.test_new   s     	#0? 	>GSG_b1SG_c'l1n=	> 	Q)2.+sAx8+sB2r   c                    	 ddl m} g d}g d}t        |      D ]  \  }}|d | D ]  }| j                  t        ||dd|        ||d  D ]  }t        d      D ]w  }t        dd|z
        D ]c  }t        t        |d|z
        d      }	|	dk(  r	|||   k7  r*|d | t        |      |	z  z   |||	z   d  z   }
| j                   |||||      |
|	f       e y   |d   }| j                  t        ||ddd       | j                  t        ||ddd	       | j                  t        |d
ddd       | j                  t        |g ddd       y )Nr   )unicode_fillabcdeu
   ¡¢£¤¥u   你好世界！u   😀😁😂😃😄)x         8    r   r   r&   r      abc)r   r#   	enumerater   
ValueErrorrangemaxminr   r   
IndexErrorr   )r   fillstringscharsidx	fill_chartostartlengthfilledexpectedss               r   	test_fillzCAPITest.test_fill!   s    	$2
 .'. 	<NCdsm I!!*dB1iHIcdm 
<"1X 	<E"'AI"6 <!$SU%;Q!?!Q;2+= %#%fu:I0G#G"UU[^_J]#]((b%)K)16(:<<	<
<		<  AJ*dAr1d;*dAq!X>+tVQ4@+tRAt<r   c           	         	 ddl m} g d}g d}t        |      D ]h  \  }}t        |      D ]U  \  }}||k  r2| j                   ||d|      |d d t	        |      z   |dd  z   df       =| j                  t        ||d|       W j | j                  t        |ddd	       | j                  t        |dd
d	       | j                  t        |ddd	       | j                  t        |g dd	       y )Nr   )unicode_writecharabcu   ¡¢£u	   你好世u   😀😁😂)r&   r'   r(   r)   r         rA      r&   r   r+   )	r   r?   r,   r   r   r   r-   r1   	TypeError)r   	writecharr3   r4   ir<   jcs           r   test_writecharzCAPITest.test_writecharH   s     	(<
 8g& 	FDAq!%( F16$$Yq!Q%7&'ec!fnqu&<a%@B %%j)Q1EF	F 	*i4@*iDA)Y4@)YAt<r   c                    	 ddl m} g d}|D ]r  }| j                   ||d      |df       | j                   ||d      |d d df       | j                   ||d      |dz   df       | j                   ||d      d       t | j                  t        |d	d       | j                  t        |g d       | j                  t        |t
        d       y )
Nr   )unicode_resizer@   rD   rC       )r   r   r+   )r   rL   r   r   r   NULL)r   resizer3   r<   s       r   test_resizezCAPITest.test_resizee   s     	&6

  	4AVAq\Aq62VAq\AbqE1:6VAq\AHa=9VAq\73		4
 	+vvq9+vr15+vtQ7r   c                    	 ddl m} g d}|D ]/  }|d d d   }|D ]   }||z   }| j                   |||      |       " 1 | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dg        | j                  t        |g d       | j                  t        |g g        | j                  t        |t
        d       | j                  t        |dt
               y )Nr   )unicode_appendr@   r   rA   r+   )r   rS   r   r   r   rO   )r   appendr3   leftrightr;   s         r   test_appendzCAPITest.test_append{   s    	&6
  	@D":D  @%<  e!4h?@	@ 	+vuf=+vvu=+vvv>+vub9+vr59+vr26+vtU;+vud;r   c                    	 ddl m} g d}|D ]-  }|d d d   }|D ]  }| j                   |||      ||z            / | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dg        | j                  t        |g d       | j                  t        |g g        | j                  t        |t
        d       | j                  t        |dt
               y )Nr   )unicode_appendanddelr@   r   rA   r+   )r   rY   r   r   r   rO   )r   appendanddelr3   rU   rV   s        r   test_appendanddelzCAPITest.test_appendanddel   s     	,B
  	JD":D  J  dE!:D5LIJ	J
 	+|UFC+|VUC+|VVD+|UB?+|R?+|R<+|T5A+|UDAr   c                 0   	 ddl m} | j                   |d      d       | j                   |dd      d       | j                   |d      d       | j                   |d	      d
       | j                   |d      d       | j                   |d      d       | j                  t        |dd       | j                  t        |dd       | j                   |dd      d       | j                   |t
        d      d       | j                  t        |dd       y )Nr   )unicode_fromstringandsizer+   rA   rC   ab   abc defabc def   ¡¢   ¡¢   你   你   😀   😀s   ¡rB      r   r   r   )r   r]   r   r   UnicodeDecodeErrorrO   r   )r   fromstringandsizes     r   test_fromstringandsizezCAPITest.test_fromstringandsize   s    	1L*62E:*615t<*;7D*+>?L*?;XF*+>?N,.?aP,.?!L*32B7*43R8+'8&"Er   c                 ^   	 ddl m} | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d
       | j                  t        |d       | j                  t        |d       | j                   |d      d       y )Nr   )unicode_fromstringr+   rA   ra   rb   rc   rd   re   rf      rg   r   r   )r   rl   r   r   rh   )r   
fromstrings     r   test_fromstringzCAPITest.test_fromstring   s     	*>F+U3$78*EO4h?$78,G,j'B,j'BC"-r   c           	      N   	 ddl m} g d}d}|d d D ]*  }| j                   |d|j                  |            |       , t        j
                  dk(  rdnd	}|d d
 D ]*  }| j                   |d|j                  |            |       , t        j
                  dk(  rdnd}|D ]*  }| j                   |d|j                  |            |       , | j                   |ddj                  |            d       dD ]U  }| j                   ||d      d       | j                   ||d|z        d       | j                   ||t        d      d       W dD ]  }| j                  t        ||d        | j                  t        |ddd       | j                  t        |dt        d       y )Nr   )unicode_fromkindanddatar$   latin1rC   rB   littleutf-16leutf-16berD   utf-32leutf-32berM   rf   u   )rB   rC   rM   r   r       rN   )r   r   rD   r      r+   r   )
r   rq   r   encodesys	byteorderrO   r   r   r-   )r   fromkindanddatar3   enc1r<   enc2enc4kinds           r   test_fromkindanddatazCAPITest.test_fromkindanddata   s    	/H

 ! 	DA_Q?C	D ]]h6zJ! 	DA_Q?C	D ]]h6zJ 	DA_Q?C	DL,?,?,EF'	) 	AD_T37<_T5:>E_T4;R@	A
 # 	GDk?D#F	G*oq&"E*oq$Cr   c           
      T   	 ddl m} g d}|D ]f  }t        dt        |      dz         D ]I  }t        t	        |dz
  d      t        |      dz         D ]  }| j                   ||||      |||        ! K h | j                  t        |ddd       | j                  t        |ddd       y )Nr   )unicode_substring)r^   u   ab¡¢u   ab¡¢你好u   ab¡¢你好😀😁rC   rB   rA   r   )r   r   r.   lenr/   r   r   r1   )r   	substringr3   r<   r8   ends         r   test_substringzCAPITest.test_substring   s     	)<

  	MAq#a&1*- M U1Wa#a&1*= MC$$Yq%%=qs|LMM	M
 	*iA>*i2>r   c                     	 ddl m} dD ]#  }| j                   ||      t        |             % | j	                  t
        |d       | j	                  t
        |g        y )Nr   )unicode_getlengthrA   rb   u   你好   a😀u	   abcu   r+   )r   r   r   r   r   rE   )r   	getlengthr<   s      r   test_getlengthzCAPITest.test_getlength  sY     	)<5 	3AYq\3q62	3 	)Y7)Y3r   c           	      \   	 ddl m} dD ]p  }t        |      D ]'  \  }}| j                   |||      t	        |             ) | j                  t        ||t        |             | j                  t        ||d       r | j                  t        |dd       | j                  t        |g d       y )Nr   )unicode_readcharr   r   r+   )	r   r   r,   r   ordr   r1   r   rE   )r   readcharr<   rG   rI   s        r   test_readcharzCAPITest.test_readchar  s     	(:5 	;A!! 91  !QQ89j(As1v>j(Ar:	; 	)Xvq9)Xr15r   c                 X   	 ddl m} dD ]p  }| j                   ||      |       t        |      } ||      }| j                  ||       | j	                  t        |      t               | j                  ||       r | j                  t        |d       | j                  t        |g        y )Nr   )unicode_fromobjectr   r+   )
r   r   r   r   assertIstypestrassertIsNotr   rE   )r   
fromobjectr<   os2s        r   test_fromobjectzCAPITest.test_fromobject-  s     	*>5 	$AZ]A.AAABR#MM$r(C(R#	$ 	)Z8)Z4r   c           
          ! 	 t        j                  d       ddlm}m}m!m}m}m}m	}m
}m}m}	m}
m}m}m}m}m} d}t%        ||       |f _        ! _         !fd fd} |ddd	        j+                  t,        d
dd        |dd |d              |dd |d              j/                  t0              5   d |d             d d d         |dd |d       |d              |dd        |dd        |dd        |ddd        |d d!d"        |d#d$d%j3                  d&              |d'd(d)        |d*d+d,        |d-d.d)        |d/d0d,        |d1d2d,        |d1d3d,        |d1d4d,d         |d#d5d d%j3                  d&              |d6d7d         |d8d9d         |d:d;d         |d<d=d         |d>d?d         |d@dAd         |d<dBd         |d>dCd         |d@dDd         |d6dEd        |d8dFd        |d:dGd        |d6dHd         |d8dId         |d:dJd         |d6dKd dL        |d8dMd dL        |d:dNd dL        |dOdKd dL        |dPdMd dL        |dQdNd dL        |dRdS |dT              |dUdV |dT             dWD ]d  \  }}}}dX|r|n|fdY|r|n|	fdZ|r|n|
fd[|r|n|ffD ]<  \  }} j5                  d\|z   |z   ]      5   ||d\|z   |z    ||             d d d        > f d^d_ ||      z  d`z
  z   }| d`z
  } |t7        |      da ||              |t7        |      da ||             d^d_ ||
      z  z  d`z
  } |t7        |      db |
|              dc |dd              |dedf |dg              |dhdi |dg              |djdk |dg              |dldm |dg              |dldn |dg              |dedo |dg              |dpdq |dg              |dhdr |dg              |dsdt |dg              |djdu |dg              |dvdw |dg              |dvdx |dg              |dydf |dz              |d{di |dz              |d|dk |dz              |d}dm |dz              |d}dn |dz              |dydo |dz              |d~dq |dz              |d{dr |dz              |ddt |dz              |d|du |dz              |ddw |dz              |ddx |dz              |ded |dg              |dhd |dg              |djd |dg              |dld |dg              |dld |dg              |ded |dg              |dpd |dg              |dhd |dg              |dsd |dg              |djd |dg              |dvd |dg              |dvd |dg              |ded |d              |dhd |d              |djd |d              |dld |d              |dld |d              |ded |d              |dpd |d              |dhd |d              |dsd |d              |djd |d              |dvd |d              |dvd |d              |d d |d              |dd |d              |dd |d              |dd |d              |dd |d              |d d |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |dd |d              |ddd«        |d dd dī        |ddd dī        |d d |d               |dd |dǫ              |dd |dȫ              |dd |d               |dd |dǫ              |dd |dȫ              |dd |dǫ              | ||      d^kD  rdndd |dȫ              | ||      d^kD  rdndd |dȫ              |d dd  |dū              |ddd  |dū              |ddd  |dǫ              |ddd  |dȫ              |ddd  |d               |ddd  |dǫ              |ddd  |dȫ              |ddd  |dǫ              | ||      d^kD  rdnddd  |dȫ              | ||      d^kD  rdnddd  |dȫ              |dd |d۫      d        |dd |d^      d        |dd |d۫       |d^      d        |dd |d۫      d         |dd |d^      d         |dd |d۫       |d^      d         |dd |d۫       |d^      d d        |dd |d۫       |d^      d  |d               |dd |d_       |dg              |dd |d۫       |dg              |dd |d_       |d۫       |dg             d} dcd       } j9                  |t6                j;                  ||        dddī      } j9                  |t6                j;                  |d        dcdd dī      } j9                  |t6                j;                  ||        |ddd d        |ddd d        |ddX        |dddX       dD ]6  } j5                  |      5   j+                  t<        d|d       d d d        8  j+                  t<        dd |dT             y # 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   |xY w)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_pr   c_wchar	c_wchar_pPyUnicode_FromFormatc                 >    t        fd|D              } | g| S )Nc              3   R   K   | ]  }t        |t              r |      n|   y wN)
isinstancer   ).0argr   s     r   	<genexpr>zJCAPITest.test_from_format.<locals>.PyUnicode_FromFormat.<locals>.<genexpr>S  s+      ! #-S#"6	#C?!s   $')tuple)formatargscargs_PyUnicode_FromFormatr   s      r   r   z7CAPITest.test_from_format.<locals>.PyUnicode_FromFormatR  s,     !! !E )8%88r   c                 <     |g| }j                  | |       y r   )r   )r;   r   r   textr   r   s       r   check_formatz/CAPITest.test_from_format.<locals>.check_formatX  s"    '66DXt,r   u   ascii=unicodeés	   ascii=%Uu	   unicodeéz^^PyUnicode_FromFormatV\(\) expects an ASCII-encoded format string, got a non-ASCII byte: 0xe9$s   unicode=%sasciiu   ꯍs   %ciͫ  u   􏿿r   r   u   𐀀􀀀s   %c%ci   i   %s   %%z%ss   %%sz[%]s   [%%]z%abcs   %%%sr+   rA   s   %.3ss   abcdefu   abc[�s   %.5su   abc[€]utf8z'\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=   12010s   %03i
   0010s   %0.4i))   iT-123)   dTr   r   )   uF{   123)   oFS   r   )   xF
  rA   )   XFr   ABCr      ls   ll   z   %)r   rC   ry   rB   s   %llds   %llus   %pr   r   s   %2ir   z
       123s   %10i
0000000123s   %010iz
123       s   %-10is   %-010is   %.2i0000123s   %.7is   %10.2iz
   0000123s   %10.7is   %010.7iz
0000123   s   %-10.7is   %-010.7ir   r   z
      -123z
-000000123z
-123      z-0000123z
  -0000123z
-0000123  s   %2us   %10us   %010us   %-10us   %-010us   %.2us   %.7us   %10.2us   %10.7us   %010.7us   %-10.7us   %-010.7us   %2or   s   %10os   %010os   %-10os   %-010os   %.2os   %.7os   %10.2os   %10.7os   %010.7os   %-10.7os   %-010.7os   %2xr   z
       abcs   %10x
0000000abcs   %010xz
abc       s   %-10xs   %-010xs   %.2x0000abcs   %.7xs   %10.2xz
   0000abcs   %10.7xs   %010.7xz
0000abc   s   %-10.7xs   %-010.7xr   s   %2Xz
       ABCs   %10X
0000000ABCs   %010Xz
ABC       s   %-10Xs   %-010Xs   %.2X0000ABCs   %.7Xs   %10.2Xz
   0000ABCs   %10.7Xs   %010.7Xz
0000ABC   s   %-10.7Xs   %-010.7Xz%A:'abc\xe9\uabcd\U0010ffff's   %%A:%Au   abcéꯍ􏿿s   %Vs   xyzxyzs   %lsu   人民u	   💻+🐍z   abs   %5.2lsu	      人民s   %5lsu     💻+🐍u   人s   %.1lsu   💻   u   💻+s   %.2lss   %lVs   %5.2lVs   %5lVs   %.1lVs   %.2lVz  abcs   %*sr   r^   s   %.*ss   %*.*ss   %*Us   %.*Us   %*.*Us   %*.*Vs   %*.*lVz     123s   %*i00123s   %.*iz   00123s   %*.*iz^0x[a-zA-Z0-9]{3,}$s   %p %p123456z#0x[a-zA-Z0-9]{3,} 0x[a-zA-Z0-9]{3,}u   repr=人民s   repr=%Vs   人民u   repr=abc�s   abcr   s   %s)r   s   %0s   %01s   %.s   %.1s   %0%ss   %1%ss   %.%ss   %.1%ss   %1abcs   %ls   %lls   %zs   %llss   %zs)fmtzinvalid format strings   %+i)r   import_moduler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   getattrargtypesrestypeassertRaisesRegexr-   r   OverflowErrorrz   subTestr   assertIsInstanceassertRegexr   )"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   namer   convsignedvaluer;   modctypemin_longlongmax_longlongmax_ulonglongp_format_regex	p_format1	p_format2	p_format3r   r   r   r   s"   `                              @@@r   test_from_formatzCAPITest.test_from_format@  s   )
 	##H-	( 	( 	( 	( 	( & '	4 8*2&(1%	9	-
 	,$m	5
 	z2 "3W	> 	XE&M	+\E(O	-}- 	9 h8	9 	+eGneHo	? 	S	T	U	Vf	& 	Ui	)\m226:	<^K	)Xn	.]K	)Zn	.Zn	.Zn	.Znd	4\dM$8$8$@	B
 	\ %	)Y!5	*\"E	+ 	_ %	)Z!5	*\"E	+ 	_ %	)Z!5	*\"E	+ 	\ &	*Y!6	+\"F	, 	\ %	)Y!5	*\"E	+ 	\ %	1Y!5&	2\"E6	3\ $	0Y!4	1\"D&	2 	UeBi	)VuRy	*.
 	B)D&% ve62vW5f
+>Fy9	 B
U \\d):\; B !%d!2E%LBB BB	B& q6*#559:;$}q(S&j6	8S&j6	8a&"556:S'k-8	:UHRL1 	U65:6\7E#J7\8U3Z8\8U3Z8\9eCj9U7E#J7Y7E#J7\9eCj9\9eCj9\:uSz:\:uSz:\;c
;V65;7\7E$K8\8U4[9\8U4[9\9eDk:V7E$K8Z7E$K8\9eDk:\9eDk:\:uT{;\:uT{;\;d<U66#;7\7F3K8\8VC[9\8VC[9\9fSk:U7F3K8Y7F3K8\9fSk:\9fSk:\:vc{;\:vc{;\;s<U66%=9\7F5M:\8VE];\8VE];\9fUm<U7F5M:Y7F5M:\9fUm<\9fUm<\:ve}=\:ve}=\;u>U66%=9\7F5M:\8VE];\8VE];\9fUm<U7F5M:Y7F5M:\9fUm<\9fUm<\:ve}=\:ve}=\;u>U66%=9\7F5M:\8VE];\8VE];\9fUm<U7F5M:Y7F5M:\9fUm<\9fUm<\:ve}=\:ve}=\;u> 	4 9	; 	UE6	+UD&	* 	UFIe$45^VY~-FG,Y'>?	AWi5)9:&>1JK.i(?@	BXx>)BCVG_q%8\hy)@A	CfWo&9]|y)@A	C 	UUIe$4	6UT9U#3	5^T9^#<	>,T9-D#E	GWi&6	8&dIn$=	?.dI.E$F	HXtY~%>	@VG_q%8\htY/F%G	IfWo&9]|tY/F%G	I 	WfeAh7T7E!Hf5Wha%(FCWfeAh6T7E!He4Wha%(EBWha%(D&IWiq589U+	-Zq5:>WguQxs<Z58U1XuSzJ 0(6	i-N3(8VD	i-?	A )$G	i-N3
 	('B	D 	%z	3 	R	RC	!
; 	7C #& 7&&{4K(#v77 7	7 	{,C &%)	5o		9 	9`B BH7 7s$    nn+n8n(+n58o	c                 f    	 ddl m} dj                         } ||      }| j                  |d       y )Nr   )unicode_interninplacer+   rA   )r   r   decoder   )r   interninplacer<   rs       r   test_interninplacezCAPITest.test_interninplace  s/     	-DMMO!E"r   c                     	 ddl m} | j                   |d      d       | j                   |d      d       | j                  t        |d       | j                  t        |d       | j                   |d	      d
       y )Nr   )unicode_internfromstringr+   rA   re   rf   rm   rg   r   r   )r   r   r   r   rh   )r   internfromstrings     r   test_internfromstringzCAPITest.test_internfromstring  su     	0J)&159)*=>M,.>H,.>H)#.3r   c                 X   	 ddl m} ddl m} |dk(  rt        j                  dk(  rdnd}n|dk(  rt        j                  dk(  rd	nd
}dD ]J  }|j                        }| j                   ||      |       | j                   ||d|z  z   d      |       L dD ]K  }|j                  d      }| j                   ||      |       | j                   ||d|z  z   d      |       M | j                   |dj                        d      d       |dk(  r(| j                   |dj                  |      d      d       | j                  t        |d|z  d       | j                   |t        d      d       | j                  t        |t        d       | j                  t        |t        d       y )Nr   )unicode_fromwidecharSIZEOF_WCHAR_TrC   rs   rt   ru   rM   rv   rw   )r   rA   rb   rd   rf   rx   r   )r   u   surrogatepassrA   r^   r   u   ar   rB   )
r   r  r  r{   r|   rz   r   r   r   rO   )r   fromwidecharr  encodingr<   bs         r   test_fromwidecharzCAPITest.test_fromwidechar  s    	,B,Q%(]]h%>zJHq %(]]h%>zJH> 	LA"A\!_a0\!eN.B*BBGK	L $ 	LA?3A\!_a0\!eN.B*BBGK	L
 	ell8&<a@$GQ\-*>*>x*H!LiX+|U>5I2NdA.3+|T1=+|T2>r   c                    	 ddl m} ddl m} ddl m}  |dd      \  }}| j	                  |d       | j	                  |d        |dd	      \  }}| j	                  |d	       | j	                  |d       | j	                   |dd
      d       | j	                   |dd      d        |dd      \  }}| j	                  |d	       | j	                  |d        |dd
      \  }}| j	                  |d	       | j	                  |d        |dd      \  }}| j	                  |d       | j	                  |d       | j	                   |dd      d       t        d      }|dk(  rd}nd} ||d
      \  }}| j	                  ||       | j	                  ||dz          | j	                   ||d
      |dz          | j                  t        |dd
       | j                  t        |g d
       | j                  t        |t        d
       | j                  t        |dd
       | j                  t        |g d
       | j                  t        |t        d
       y )Nr   )unicode_aswidechar)unicode_aswidechar_nullr  abcdefrC   r^   rA   rD   r   rM   abc r`      r*   abc def ry   r   rB   rN   r+   )
r   r  r  r  r   r   r   rE   r   rO   )r   r  r  r  wcharsizenonbmpnchars           r   test_aswidecharzCAPITest.test_aswidechar  s1    	*05,(15tq!%(2tq!&0;Q?0:A>(2tq!((3tq!((R8tq!-0R@!DXQEE(4tu%.0<eaiH)%7D)%7R@+'94D)%<fbI)%<b"E+'>bIr   c                 &   	 ddl m} ddl m} ddl m}  |d      \  }}| j	                  |d       | j	                  |d       | j	                   |d      d        |d      \  }}| j	                  |d	       | j	                  |d
       | j                  t        |d       t        d      }|dk(  rd}nd} ||      \  }}| j	                  ||       | j	                  ||dz          | j	                   ||      |       | j                  t        |d       | j                  t        |g        | j                  t        |t               | j                  t        |d       | j                  t        |g        | j                  t        |t               y )Nr   )unicode_aswidecharstring)unicode_aswidecharstring_nullr  rA   rD   r  r`   r*   r  r   rC   rB   rN   r+   )r   r  r  r  r   r   r-   r   rE   r   rO   )r   r  r  r  r  r  r  r  s           r   test_aswidecharstringzCAPITest.test_aswidecharstring  sj    	06;,.u5tq!(6u=uE.z:tq!-*&CZPXQEE.v6tu%.6v>G)%=vF)%=rB+'?F)%BFK)%BBG+'DdKr   c           	      \   	 ddl m} dD ]  }t        |      }| j                   |||d      |dz          | j                   |||d      |dz          | j                   |||dz   d      |dz          | j                   |||dz   d      |dz          | j	                  t
        |||dz
  d       | j	                  t
        |||dz
  d       dj                  ||g      }| j                   ||t        |      d      |dz          | j                   ||t        |      d      |dz          " y )	Nr   )unicode_asucs4r   rB   rN   u   ￿u    ￿rC   )r   r  r   r   r   r   join)r   r  r<   ls       r   test_asucs4zCAPITest.test_asucs42  s*    	&,5 	GAAA^Aq!4af=^Aq!4ajA^AqsA6*E^AqsA6*Ek>1ac1Ek>1ac1E		1a&!A^As1vq91T6B^As1vq91X:F	Gr   c                     	 ddl m} dD ]K  }| j                   ||      |dz          dj                  ||g      }| j                   ||      |dz          M y )Nr   )unicode_asucs4copyr   rN   )r   r"  r   r  )r   
asucs4copyr<   s      r   test_asucs4copyzCAPITest.test_asucs4copyK  s]     	*>5 	4AZ]AdF3		1a&!AZ]AdF3		4r   c                     	 ddl m} | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                  t        |d	       | j                  t        |d
       y )Nr   )unicode_fromordinalr   ar(      €r   rf   r   r   )r   r&  r   r   r-   )r   fromordinals     r   test_fromordinalzCAPITest.test_fromordinal[  sm     	+@T*C0V,h7W-|<*k8<*k26r   c                 j   	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |d	d
      d       | j                   |dd      d       | j                  t        |dd       | j                  t
        |dd       | j                  t
        |g d       y )Nr   )unicode_asutf8rA   rM      abc    абвr*      абв rf   r      😀 r`   ry      abc def    r+   )r   r,  r   r   UnicodeEncodeErrorrE   )r   r,  s     r   test_asutf8zCAPITest.test_asutf8h  s     	&,q18<!46STa8:OP
A6F,nhJ)^VQ?)^R;r   c                    	 ddl m} ddl m} | j                   |dd      d       | j                   |dd      d	       | j                   |d
d      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j	                  t
        |dd       | j	                  t        |dd       | j	                  t        |g d       y )Nr   )unicode_asutf8andsize)unicode_asutf8andsize_nullrA   rM   )r-  rD   r.  r*   )r/     rf   r   )r0  rM   r`   ry   )r1  r*   r-  r1  r2  r+   )r   r6  r7  r   r   r3  rE   )r   r6  r7  s      r   test_asutf8andsizezCAPITest.test_asutf8andsizex  s     	-38.ua8-H.x;=_`.|Q?A[\.z1=?QR3E1=xH3JBMR,.CXqQ)%:FAF)%:BBr   c                 @    	 ddl m} | j                   |       d       y )Nr   )unicode_getdefaultencodings   utf-8)r   r;  r   )r   getdefaultencodings     r   test_getdefaultencodingz CAPITest.test_getdefaultencoding  s     	2N+-x8r   c                 ^   	 ddl m} | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d	       | j                   |d
      d
       | j                  t        |d       | j                  t        |g        y )Nr   )'unicode_transformdecimalandspacetoasciir   u   ٣.١٤z3.14u
    3.14 z 3.14 u   12€3z12?r   r   )r   r?  r   r   r   )r   transform_decimals     r    test_transform_decimal_and_spacez)CAPITest.test_transform_decimal_and_space  s     	@Z*51	 *+@A	!*+IJ!	#*;7	 *2.3+'8&A+'8"=r   c                 ,   	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |dd      d	       | j                   |dd      d
       | j                   |dd      d       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |g d       | j                  t        |dg        | j                  t        |g g        y )Nr   )unicode_concatrA   defr  u   гдеu	   abcгдеr.  u	   абвdefu   абвгдеza bzc dza bc dr+      def)r   rC  r   r   rE   )r   concats     r   test_concatzCAPITest.test_concat  s     	&6u-x8x0+>%0+>(3^D/<)VVU;)VUF;)VVV<)VR7)VUB7)VR4r   c                 t   	 ddl m} | j                   |dd      g d       | j                   |ddd      g d       | j                   |dd      dg       | j                   |d	d
      g d       | j                   |dd      g d       | j                   |dd      g d       | j                   |dt              g d       | j                   |dt              g d       | j	                  t
        |dd       | j	                  t        |dt        d             | j	                  t        |g d       y )Nr   )unicode_splita|b|c|d|r'  r
  rI   drC   )r'  r
  zc|dr(  	a||b|c||d||r'  b|crM     а|б|в|г   а   б   в   г   абабагаламагаrT  r   rU  rU  rW  u   лu   мrW  r    a	b
cder'  r
  rI   rM  e   ab c d er   )r   rI  r   rO   r   r-   rE   r   )r   splits     r   
test_splitzCAPITest.test_split  s    	%4y#.0DEy#q13DEy(3i[A{D13DE}c24LM;TBE	G1482	4:DA2	4 	*eY;)UIs3x@)UB4r   c                    	 ddl m} | j                   |dd      g d       | j                   |ddd      g d       | j                   |dd      dg       | j                   |d	d
      g d       | j                   |dd      g d       | j                   |dd      g d       | j                   |dd      g d       | j                   |dt              g d       | j                   |dt              g d       | j	                  t
        |dd       | j	                  t        |dt        d             | j	                  t        |g d       y )Nr   )unicode_rsplitrJ  rK  rL  rC   )a|brI   rM  r(  rN  rO  rP  rR  rS  rX  rT  rY  u
   aжbжcжd   жrZ  r[  r]  r   )r   ra  r   rO   r   r-   rE   r   )r   rsplits     r   test_rsplitzCAPITest.test_rsplit  s1    	&6	3/1EF	324EF	84ykBT24EFs35MN <dCE	Gd35IJ 2D92	4 ;TB2	4 	*fi<)VYCA)VR5r   c                    	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |d	d      d
       | j                   |dd      d       | j                   |dd      d       | j                  t        |dd       | j                  t
        |dd       | j                  t
        |dd       | j                  t
        |dt        d             | j                  t
        |g d       y )Nr   )unicode_partitiona|b|crK  )r'  rK  rQ  a||b||crO  )r'  rO  zb||c   а|б|в)rT  rK  u   б|в
   кабанrT  )u   кrT  u   бан   aжbжcrc  )r'  rc  u   bжcr      a|b|c   |)r   rg  r   r   r-   rE   r   )r   	partitions     r   test_partitionzCAPITest.test_partition  s     	)<7C02CD9d35HI:s35IJ<68NO9d35HI*i"=)Y#>)Y>)YSB)YC8r   c                    	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |d	d      d
       | j                   |dd      d       | j                   |dd      d       | j                  t        |dd       | j                  t
        |dd       | j                  t
        |dd       | j                  t
        |dt        d             | j                  t
        |g d       y )Nr   )unicode_rpartitionrh  rK  )rb  rK  rI   ri  rO  )za||brO  rI   rj  )u   а|бrK  rV  rk  rT  )u   кабrT  u   нrl  rc  )u   aжbrc  rI   r   rm  rn  )r   rr  r   r   r-   rE   r   )r   
rpartitions     r   test_rpartitionzCAPITest.test_rpartition  s     	*>GS13DEIt46IJJ46JKL$79OPIt46IJ*j'2>)Z3?)Z$?)Z#c(C)ZS9r   c                 H   	 ddl m} | j                   |d      g d       | j                   |dd      g d       | j                   |d      g d       | j                   |dd      g d       | j                   |d	      g d
       | j                  t        |d       y )Nr   )unicode_splitlinesza
bc
drL  T)za
zbzc
rM  u   ab c d)u   au   b u   c rM  u   а
бв
гrS  s   a
bc
d)r   rv  r   r   rE   )r   
splitliness     r   test_splitlineszCAPITest.test_splitlines  s     	*>N35IJND95	7$:;-	/$:DA=	?$679QR)ZAr   c                    	 ddl m} | j                   |dt        d      dt        d      t        d      t        d      d	i      d
       | j                   |dt        d      dt        d      t        d      t        d      d	i      d       | j                   |di       d       | j                   |dg       d       | j	                  t
        |dt        d      d i       | j	                  t
        |dt        d      d id       | j	                  t        |dt        d      d id       | j                   |dt        d      d id      d       | j                   |dt        d      d id      d       | j                   |dt        d      d id      d       | j	                  t        |dg        | j	                  t        |dg        | j	                  t        |dt        d      di       | j	                  t        |dd       | j	                  t        |dt               | j	                  t        |dt        d      d id       y )Nr   )unicode_translateabcdr'  Ar
  BrI   <>zAB<>du   абвгrT  u   АrU  u   БrV  u   АБ<>гrA   strictfooignoreacreplaceu   a�cbackslashreplaceza\x62cr+   r      A)	r   rz  r   r   r   UnicodeTranslateErrorLookupErrorrE   rO   )r   	translates     r   test_translatezCAPITest.test_translate%  s    	)<6CHc3s8SXsSVxY]+^_ahi:D	4TCPTIWZ[_W`bf/ghjtu5"-u55"-u5/ECHdCST/ECHdCSU]^+y%#c(D9I5Q53s8T*:HEtL53s8T*:IF
S53s8T*:<NOQZ[)Y;)YR8)YC$7GH)Ys;)Yt<+y%#c(D9I5Qr   c                    	 ddl m} | j                   |dg d      d       | j                   |dg d      d       | j                   |dg d      d	       | j                   |t        g d      d
       | j                   |dg d      d       | j                   |dg d      d       | j	                  t
        |dg d       | j	                  t
        |dg d       | j	                  t
        |t        g d       | j	                  t
        |dd       | j	                  t
        |dd       | j	                  t        |dt               y )Nr   )unicode_joinrK  )r'  r
  rI   rh  )r'  r   rI   za||cr   rA   za b c)rT  rU  rV  rj  rc  u
   ажбжвrn  )   a   b   cr   r   )r   r  r   rO   r   rE   r   )r   r  s     r   	test_joinzCAPITest.test_join>  s    	$2c?3W=c>2F;b/2E:dO4g>c#56
Cd$67F)T4A)T30BC)T41CD)T37)T34+tS$7r   c                 |   	 ddl m} dD ]9  }t        |      D ])  \  }}| j                   |||dt	        |            d       + ; d}| j                   ||ddt	        |            d       | j                   ||ddt	        |            t	        |      dz          | j                   ||ddt	        |      dz         d       | j                   ||ddd      d       | j                   ||dt	        |      d      d       | j                   ||dt	        |       d	      d       | j                  t        ||d
dt	        |             | j                  t        |dddt	        |             | j                  t        ||t        d      dt	        |             | j                  t        |g ddt	        |      d       y )Nr   )unicode_count   ¡u   耀肀u   u   🄀🇱rB   !>_<!zr   !r      !   !>_<!)r   r  r,   r   r   r   rE   r   )r   r  r   rG   chs        r   
test_countzCAPITest.test_countP  s    	%+Q 	IC"3 I2  sB3s8!DaHI	I sCCH=qAsB3s8<c#hqjIsCCHQJ?CsCA6:sCS1=qAsC#c(B?C)]Cq#c(K)]Hc1c#hO)]CS1c#hO)]BQC!Lr   c           
      v   	 ddl m} d}| j                   ||ddt        |      d      d       | j                   ||ddt        |      d      d       | j                   ||ddt        j
                  d      d       | j                   ||dt        |       t        j
                  d      d       | j                   ||dt        j
                   dz
  t        |      d      d       | j                   ||ddt        j
                  d      d       | j                   ||dt        j
                   dz
  t        |      d      d       | j                   ||ddt        |      d      d       | j                   ||ddt        |      d      d       | j                   ||d	dt        |      d      d       | j                   ||d	dt        |      d      d       | j                   ||d
dt        |      dz
  d      d       | j                   ||d
dt        |      dz
  d      d       | j                   ||ddt        |      dz
  d      d       | j                   ||d
t        |       dz   dd      d       | j                   ||ddt        |      d      d       | j                   ||ddt        |      dz
  d      d       | j                   ||dt        |       dd      d       | j                  t        ||ddt        |      d       | j                  t        ||ddt        |      d       y )Nr   )unicode_tailmatchababahalamahaabar   rB   ahar  r   baah)r  r  )r   r  r   r   r{   maxsizer   rE   )r   	tailmatchr   s      r   test_tailmatchzCAPITest.test_tailmatchl  s    	)<3q#c(B?C3q#c(A>B3q#++rBAF3Cy#++rJAN3|A~s3xLaP3q#++qA1E3|A~s3xKQO3QC!<a@3QC"=qA3As3x;Q?3As3x<a@3aS!R@!D3aS!R@!D3q#c(1*bA1E3s3xik2rBAF3aS1=qA3aS!Q?C3s3xiQ?C 	)Y^QCRTU)Y^QCRSTr   c                    	 ddl m} dD ]_  }t        |      D ]O  \  }}| j                   |||dt	        |      d      |       | j                   |||dt	        |      d      |       Q a d}| j                   ||ddt	        |      d      d       | j                   ||ddt	        |      d      d       | j                   ||ddt	        |      d      d       | j                   ||ddt	        |      d      t	        |             | j                   ||d	dt	        |      dz   d      d
       | j                   ||d	dt	        |      dz   d      d
       | j                   ||d	ddd      d       | j                   ||d	t	        |      dd      d       | j                   ||d	t	        |       dd      d       | j                   ||d	t	        |       dd      d       | j                  t        ||ddt	        |      d       | j                  t        |dd	dt	        |      d       | j                  t        ||t        d	      dt	        |      d       | j                  t        |g d	dt	        |      d       y )Nr   )unicode_findr  rB   r   r  r  r   r  rM   r  r  )r   r  r,   r   r   r   rE   r   )r   findr   rG   r  s        r   	test_findzCAPITest.test_find  sO    	$2Q 	DC"3 D2  c2q#c(A!>B  c2q#c(B!?CD	D
 c33s8Q7<c33s8R8"=c2q#c(A6:c2q#c(B7SBc33s8A:q91=c33s8A:r:A>c31a0"5c3C!Q7<c3S	2q91=c3S	2r:A>)T3aS1E)T8S!SXqI)T3C!SXqI)T2sAs3xCr   c                    	 ddl m} dD ]q  }t        |      D ]a  \  }}| j                   ||t	        |      dt        |      d      |       | j                   ||t	        |      dt        |      d      |       c s d}| j                   ||ddt        |      d      d       | j                   ||ddt        |      d      d       | j                   ||t	        d      dt        |      dz   d      d	       | j                   ||t	        d      dt        |      dz   d      d	       | j                   ||t	        d      ddd      d       | j                   ||t	        d      t        |      dd      d       | j                   ||t	        d      t        |       dd      d       | j                   ||t	        d      t        |       dd      d       y )
Nr   )unicode_findcharr  rB   r   r  r   r  rM   )r   r  r,   r   r   r   )r   r  r   rG   r  s        r   test_findcharzCAPITest.test_findchar  s    	(.Q 	UC"3 U2  !1#s2w3s8Q!OQRS  !1#s2w3s8R!PRSTU	U
 )#xCHaH"M)#xCHbI2N)#s3xCHQJJAN)#s3xCHQJKQO)#s3xAqA2F)#s3xS1aH"M)#s3x#c(BJAN)#s3x#c(BKQOr   c           	         	 ddl m} d}| j                   ||dd      d       | j                   ||dd      d       | j                   ||d	d      d
       | j                   ||ddd      d       | j                   ||ddd      |       | j                   ||ddt        j                        d       | j                   ||dd      |       | j                   ||dd      d       | j                   ||dd      d       | j                   |ddd      d       | j                   |ddd      d       | j                  t        |ddd       | j                  t        |ddd       | j                  t        |ddd       | j                  t        |ddt        d             | j                  t        |dt        d      d       | j                  t        |g dd       y )Nr   )unicode_replaceabracadabrar'  =z=br=c=d=br=r~  z<>br<>c<>d<>br<>abraz=cad=rC   z=br=cadabrar  r   z=a=b=r=a=c=a=d=a=b=r=a=rc  u   жbrжcжdжbrжrX  rT  u   =б=б=г=л=м=г=u   Баден-Баденu
   БаденBadenzBaden-Baden   =r  )r   r  r   r{   r  r   rE   r   )r   r  r   s      r   test_replacezCAPITest.test_replace  s    	'8c3/?c402DEfc2G<c32MBc32C8c3<mLc3/5b#.0IJc402DE!=tSIK`a!8,PR_`)Wc3=)Wc4=)WdC=)Wc3CA)Wc3s8SA)Wb#s;r   c                 ^   	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                  t        |d	d       | j                  t        |dd	       | j                  t        |d	d	       | j                  t        |g d       | j                  t        |dg        | j                  t        |g g        y )
Nr   )unicode_comparerA   rD  r   rB   r`   r.  r+   )r   r  r   r   rE   )r   compares     r   test_comparezCAPITest.test_compare  s    	'8.2.3.2
3R8Z8!<5115)Wfe<)WeV<)Wff=)Wb%8)WeR8)Wb"5r   c                 >   	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd	      d       | j                   |d
d	      d       | j                   |dd      d       y )Nr   )unicode_comparewithasciistringrA   r+   rE  r   rD  rB   r_   r`   r.  )r   r  r   )r   comparewithasciistrings     r   test_comparewithasciistringz$CAPITest.test_comparewithasciistring  s     	6V/v>B/v>C/v>B/{CQG/
KH!L/&A1Er   c           	      4   	 ddl m} t        d      \  }}}}}}d}|D ]  }	|D ]  }
| j                   ||	|
|      |	|
k         | j                   ||	|
|      |	|
k         | j                   ||	|
|      |	|
k(         | j                   ||	|
|      |	|
k7         | j                   ||	|
|      |	|
kD         | j                   ||	|
|      |	|
k\           ||||||fD ]  }| j                   |dd|      t               | j                   |dd|      t               | j                   |dd|      t               | j                   |g d|      t               | j                   |dg |      t               | j                   |g g |      t                y )Nr   )unicode_richcomparer8  )rA   r.  rf   r  r+   rA   )r   r  r.   r   NotImplemented)r   richcompareLTLEEQNEGTGEr3   s1r   ops               r   test_richcomparezCAPITest.test_richcompare  s    	+@!&qBBB: 	AB Ak"b"5rBw?k"b"5rRx@k"b"5rRx@k"b"5rRx@k"b"5rBw?k"b"5rRx@A	A b"b"b( 	CBMM+feR8.IMM+eVR8.IMM+ffb9>JMM+b%4nEMM+eR4nEMM+b"b1>B	Cr   c                    	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |ddg f      d       | j                  t        |dt
               | j                  t        |t
        d       y )	Nr   )unicode_formatzx=%d!*   zx=42!)r  z
x=%d y=%s!z
x=42 y=[]!)r   r  r   r   r   rO   )r   r   s     r   test_formatzCAPITest.test_format,  s{     	&6,g6/9r2h7F+vw=+vtR8r   c                 r   	 ddl m} | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd      d       | j                   |dd	      d       | j                   |d
d	      d       | j                   |dd      d       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |g d       | j                  t        |dt        d             y )Nr   )unicode_containsr{  r   rB   r
  xrc  rN   r`   bcs   abcdr  )r   r  r   r   rE   r   )r   containss     r   test_containszCAPITest.test_contains9  s    	(:&"-q1&#.2&#.2&$/3&$/3*d3Q7&$/3)Xw<)Xvt<)Xw=)Xr37)Xvs3x@r   c                    	 ddl m} | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d       | j                   |d
      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       y )Nr   )unicode_isidentifierr'  rB   b0   µu   𝔘𝔫𝔦𝔠𝔬𝔡𝔢r    [   ©032M)r   r  r   )r   isidentifiers     r   test_isidentifierzCAPITest.test_isidentifierO  s     	,Bc*A.d+Q/d+Q/&DEqIb)1-c*A.c*A.d+Q/c*A.e,a0r   c                 `   	 ddl m} g d}t        |      D ]  \  }}|d | D ]  }| j                  t        ||d|dd        t        d      D ]9  }| j                   ||d||d      |||dz    j                  dd      d|z
  f       ; t        d      D ]9  }| j                   |||||d      |||dz    j                  dd      d|z
  f       ;  |d   }| j                  t        ||d|dd       | j                  t        ||d|dd       | j                  t        ||d|dd       | j                  t        ||d|dd       | j                  t        ||d|dd       | j                  t        ||d|dd       | j                  t        ||dd	dd       | j                  t        ||dg dd       y )
Nr   )unicode_copycharactersr$   r   rN   r8  r   rB   r   )
r   r  r,   r   r   r.   r   ljustrjustr1   )	r   r  r3   r5   from_r7   
from_startto_startr<   s	            r   test_copycharacterszCAPITest.test_copycharacterse  s    	.4
 $G, 	JCdsm !!*B5!Q $Ah 
  *5!UJJ:jl399!TBz\# "!H   *5(E8QO8HQJ/55a>xZ!	. AJ*&<aAq!L*&<aQ1M*&<aAq!L*&<aAr1M+'=q!Q1M+'=q!Q2N+'=q!S!QO+'=q!RANr   c                 2   ddl m} dD ]  }d}t        d      D ]z  }|t        |      z  }| j	                   ||      t        |      j                         |dz   z         | j	                   ||      t        |      j                         |dz   z         |  y )Nr   )getargs_s_hash)$      r(   i r   r   rB   )r   r  r.   r   r   rz   )r   r  kr<   rG   s        r   test_pep393_utf8_caching_bugz%CAPITest.test_pep393_utf8_caching_bug  s     	-, 	OAA1X 	O SV   !2CFMMOq1u4MN  !2CFMMOq1u4MN	O	Or   )7r   r   r	   r   cpython_onlyunittestskipIfr   r!   r=   rJ   rQ   rW   r[   rj   ro   r   r   r   r   r   r   r   r  r  r  r  r   r$  r*  r4  r9  r=  rA  rG  r_  re  rp  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
   r   r   r   r      s	   X__Y$&(?@	3 A 	3 X__Y$&(?@ = A  =J X__Y$&(?@= A =6 X__Y$&(?@8 A 8( X__Y$&(?@< A <4 X__Y$&(?@B A B2 X__Y$&(?@F A F$ X__Y$&(?@
. A 
. X__Y$&(?@D A D@ X__Y$&(?@? A ?( X__Y$&(?@	4 A 	4 X__Y$&(?@6 A 6 X__Y$&(?@5 A 5"d5L X__Y$&(?@# A # X__Y$&(?@4 A 4 X__Y$&(?@? A ?8 X__Y$&(?@,J A ,J\ X__Y$&(?@L A LB X__Y$&(?@G A G. X__Y$&(?@4 A 4 X__Y$&(?@	7 A 	7 X__Y$&(?@< A < X__Y$&(?@C A C" X__Y$&(?@9 A 9 X__Y$&(?@> A >$ X__Y$&(?@5 A 5& X__Y$&(?@5 A 5* X__Y$&(?@6 A 6, X__Y$&(?@9 A 9$ X__Y$&(?@: A :$ X__Y$&(?@B A B  X__Y$&(?@R A R. X__Y$&(?@8 A 8  X__Y$&(?@M A M4 X__Y$&(?@U A UB X__Y$&(?@D A D> X__Y$&(?@P A P4 X__Y$&(?@< A <6 X__Y$&(?@6 A 6( X__Y$&(?@	F A 	F X__Y$&(?@C A C4 X__Y$&(?@	9 A 	9 X__Y$&(?@A A A( X__Y$&(?@1 A 1( X__Y$&(?@*O A *O^ X__Y$&(?@O A Or   r   __main__)r  r{   testr   test.supportr   r   ImportErrorrO   r   r   TestCaser   r   mainr
   r   r   <module>r     st     
  &
 	# 	TOx   TOn, zHMMO C-  Is   A AA