
    daf                        d dl Z d dlZd dlmZ d dlmZ 	 d dlZd dlmZm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_helper)PY_SSIZE_T_MINPY_SSIZE_T_MAXc                       e Zd Zy)StrN)__name__
__module____qualname__     6/root/Python-3.12.4/Lib/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         | j	                  t
        |t        |       ^ | j                   |dd      d       | j	                  t
        |t        dz  d       | j	                  t
        |t        dz  d	z   d       | j	                  t
        |t        dz  d
       | j	                  t
        |t        dz  d	z   d
       | j	                  t
        |t        dz  d
       | j	                  t
        |t        dz  d	z   d
       | j	                  t        |dd       | j	                  t        |dd       | j	                  t        |t        d       y)zTest PyUnicode_New()r   )unicode_new)r   a      `O               r      r      N)		_testcapir   assertEqualchrassertRaisesMemoryErrorr   SystemErrorr   )selfnewmaxchars      r   test_newzCAPITest.test_new   sZ    	1? 	IGSG_b1SG_c'l1n=k3H	I 	Q)2.+sNA,=vF+sNA,=a,?H+sNA,=wG+sNA,=a,?I+sNA,=wG+sNA,=a,?I+sAx8+sB2+sNA>r   c                    ddl m} g d}g d}t        |      D ]  \  }}|d| D ]  }| j                  t        ||dd|        ||d D ]  }g t        d      t        D ]  }g t        dd|z
        t        t        D ]c  }t        t        |d|z
        d      }	|	dk(  r	|||   k7  r*|d| t        |      |	z  z   |||	z   d z   }
| j                   |||||      |
|	f       e    |d   }| j                  t        ||ddd	       | j                  t        ||t        dd	       | j                  t        ||ddd
       | j                  t        |dddd	       | j                  t        |g ddd	       y)zTest PyUnicode_Fill()r   )unicode_fillabcdeu
   ¡¢£¤¥u   你好世界！u   😀😁😂😃😄)x         8 N   r   r   r-   r      abc)r   r*   	enumerater"   
ValueErrorranger   r   maxminr!   r    
IndexErrorr$   )r%   fillstringscharsidx	fill_chartostartlengthfilledexpectedss               r   	test_fillzCAPITest.test_fill*   s    	3
 .'. 	<NCdsm I!!*dB1iHIcdm 
<8uQx88 	<E"YE"a%i$8"Y."Y."Y <!$SU%;Q!?!Q;2+= %#%fu:I0G#G"UU[^_J]#]((b%)K)16(:<<	<
<		<  AJ*dAr1d;*dA~q$G*dAq!X>+tVQ4@+tRAt<r   c           	      H   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t        d
       | j                  t        |dt        d
       | j                  t        |ddd
       | j                  t        |g dd
       y)zTest PyUnicode_WriteChar()r   )unicode_writecharabcu   ¡¢£u	   你好世u   😀😁😂)r-   r.   r/   r0   r   r   Nr   rH      r-   r   r2   )r   rF   r3   r    r!   r"   r4   r8   r   r   	TypeError)r%   	writecharr:   r;   irC   jcs           r   test_writecharzCAPITest.test_writecharR   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*iM*iM)Y4@)YAt<r   c                 z   ddl m} g d}|D ]  }| j                   ||d      |df       | j                   ||d      |dd df       | j                   ||d      |dz   df       | j                   ||d	      |d
z   df       | j                   ||d      d       | j                  t        ||t
               | j                  t        ||d       | j                  t        ||t                | j                  t        |dd       | j                  t        |g d       | j                  t        |t        d       y)zTest PyUnicode_Resize()r   )unicode_resizerG   rI   r   Nr    
   z       )r   r   r   r2   )	r   rQ   r    r"   r#   r   r$   r   NULL)r%   resizer:   rC   s       r   test_resizezCAPITest.test_resizeq   s'    	7

  	FAVAq\Aq62VAq\AbqE1:6VAq\AHa=9VAr]QZO<VAq\73k61nEk61b9k61nE	F 	+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)zTest PyUnicode_Append()r   )unicode_appendrG   Nr   rH   r2   )r   rX   r    r"   r$   rT   )r%   appendr:   leftrightrB   s         r   test_appendzCAPITest.test_append   s    	7
  	@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)zTest PyUnicode_AppendAndDel()r   )unicode_appendanddelrG   Nr   rH   r2   )r   r^   r    r"   r$   rT   )r%   appendanddelr:   rZ   r[   s        r   test_appendanddelzCAPITest.test_appendanddel   s     	C
  	JD":D  J  dE!:D5LIJ	J
 	+|UFC+|VUC+|VVD+|UB?+|R?+|R<+|T5A+|UDAr   c                    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t               | j                  t        |dd       | j                  t        |dt               | j                  t        |t
        d       | j                  t        |t
        t               | j                  t        |t
        d       | j                  t        |t
        t               y)z"Test PyUnicode_FromStringAndSize()r   )unicode_fromstringandsizer2   rH   r   ab   abc defabc def   ¡¢   ¡¢   你   你   😀   😀s   ¡r      r   r   r   rI   N)
r   rb   r    r"   UnicodeDecodeErrorrT   r#   r   r$   r   )r%   fromstringandsizes     r   test_fromstringandsizezCAPITest.test_fromstringandsize   s    	M*62E:*615t<*;7D*+>?L*?;XF*+>?N,.?aP,.?!L*32B7*43R8+'8&.Q+'8&"E+'8&.Q+'8$C+'8$O+'8$B+'8$Or   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)zTest PyUnicode_FromString()r   )unicode_fromstringr2   rH   rf   rg   rh   ri   rj   rk      rl   r   r   N)r   rq   r    r"   rm   )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           	         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dt               | j                  t        |dt        d       | j                  t        |dt        t               y)z Test PyUnicode_FromKindAndData()r   )unicode_fromkindanddatar+   latin1Nr   r   littleutf-16leutf-16berI   utf-32leutf-32ber   rk   u   )r   r   r   r   r       rR   )r   r   rI   r      r2   r   )r   rv   r    encodesys	byteorderrT   r"   r$   r4   r   )r%   fromkindanddatar:   enc1rC   enc2enc4kinds           r   test_fromkindanddatazCAPITest.test_fromkindanddata   s    	I

 ! 	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&.Q*oq$C*oq$Or   c           
         ddl m} g d}|D ]v  }g t        dt        |      dz         t        D ]Q  }g t        t        |dz
  d      t        |      dz         t        D ]  }| j                   ||||      |||        ! S x | j                  t        |ddd       | j                  t        |dt        d       | j                  t        |ddd       | j                  t        |ddt               y)	zTest PyUnicode_Substring()r   )unicode_substring)rc   u   ab¡¢u   ab¡¢你好u   ab¡¢你好😀😁r   r   rH   r   N)
r   r   r5   lenr   r6   r    r"   r8   r   )r%   	substringr:   rC   r?   ends         r   test_substringzCAPITest.test_substring  s     	=

  	MA@5CFQJ/@@ MPU3uQw?CFQJ?PP MC$$Yq%%=qs|LMM	M
 	*iA>*iJ*i2>*i>Jr   c                     ddl m} dD ]#  }| j                   ||      t        |             % | j	                  t
        |d       | j	                  t
        |g        y)zTest PyUnicode_GetLength()r   )unicode_getlengthrH   rg   u   你好   a😀u	   abcu   r2   N)r   r   r    r   r"   rJ   )r%   	getlengthrC   s      r   test_getlengthzCAPITest.test_getlength'  sV     	=5 	3AYq\3q62	3 	)Y7)Y3r   c           	         ddl m} dD ]  }t        |      D ]'  \  }}| j                   |||      t	        |             ) | j                  t        ||t        |             | j                  t        ||t               | j                  t        ||d       | j                  t        ||t                | j                  t        |dd       | j                  t        |g d       y)zTest PyUnicode_ReadChar()r   )unicode_readcharr   r   r2   N)r   r   r3   r    ordr"   r8   r   r   r   rJ   )r%   readcharrC   rL   rN   s        r   test_readcharzCAPITest.test_readchar5  s     	;5 	GA!! 91  !QQ89j(As1v>j(A~Fj(Ar:j(A~F	G 	)Xvq9)Xr15r   c                 V   ddl m} dD ]p  }| j                   ||      |       t        |      } ||      }| j                  ||       | j	                  t        |      t               | j                  ||       r | j                  t        |d       | j                  t        |g        y)zTest PyUnicode_FromObject()r   )unicode_fromobjectr   r2   N)
r   r   r    r   assertIstypestrassertIsNotr"   rJ   )r%   
fromobjectrC   os2s        r   test_fromobjectzCAPITest.test_fromobjectH  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*        |d0d1d-        |d2d3d-        |d2d4d-        |d2d5d-d        |d$d6dd&j3                  d'              |d7d8d!        |d9d:d!        |d;d<d!        |d=d>d!        |d?d@d!        |dAdBd!        |d=dCd!        |d?dDd!        |dAdEd!        |d7dFd         |d9dGd         |d;dHd         |d7dId!        |d9dJd!        |d;dKd!        |d7dLd!dM        |d9dNd!dM        |d;dOd!dM        |dPdLddM        |dQdNddM        |dRdOddM        |dSdT |dU              |dVdW |dU             dXD ]d  \  }}}}dY|r|n|fdZ|r|n|	fd[|r|n|
fd\|r|n|ffD ]<  \  }} j5                  d]|z   |z   ^      5   ||d]|z   |z    ||             ddd       > f d_d` ||      z  daz
  z   }| daz
  } |t7        |      db ||              |t7        |      db ||             d_d` ||
      z  z  daz
  } |t7        |      dc |
|              dd |de              |dfdg |dh              |didj |dh              |dkdl |dh              |dmdn |dh              |dmdo |dh              |dfdp |dh              |dqdr |dh              |dids |dh              |dtdu |dh              |dkdv |dh              |dwdx |dh              |dwdy |dh              |dzdg |d{              |d|dj |d{              |d}dl |d{              |d~dn |d{              |d~do |d{              |dzdp |d{              |ddr |d{              |d|ds |d{              |ddu |d{              |d}dv |d{              |ddx |d{              |ddy |d{              |dfd |dh              |did |dh              |dkd |dh              |dmd |dh              |dmd |dh              |dfd |dh              |dqd |dh              |did |dh              |dtd |dh              |dkd |dh              |dwd |dh              |dwd |dh              |dfd |d              |did |d              |dkd |d              |dmd |d              |dmd |d              |dfd |d              |dqd |d              |did |d              |dtd |d              |dkd |d              |dwd |d              |dwd |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`       |dh              |dd |dܫ       |dh              |dd |d`       |dܫ       |dh             d} ddd!      } j9                  |t6                j;                  ||        dddū      } j9                  |t6                j;                  |d        dddddū      } j9                  |t6                j;                  ||        |dddd        |dddd        |ddY        |dddY       dD ]6  } j5                  |      5   j+                  t<        d|d        ddd       8  j+                  t<        dd |dU             y# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   |xY w)zTest PyUnicode_FromFormat()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>n  s+      ! #-S#"6	#C?!s   $')tuple)formatargscargs_PyUnicode_FromFormatr   s      r   r   z7CAPITest.test_from_format.<locals>.PyUnicode_FromFormatm  s,     !! !E )8%88r   c                 <     |g| }j                  | |       y r   )r    )rB   r   r   textr   r%   s       r   check_formatz/CAPITest.test_from_format.<locals>.check_formats  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   Nu   𐀀􀀀s   %c%ci   i   %s   %%z%ss   %%sz[%]s   [%%]z%abcs   %%%sr2   rH   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   %03irS   0010s   %0.4i))   iT-123)   dTr   r   )   uF{   123)   oFS   r   )   xF
  rH   )   XFr   ABCr      ls   ll   z   %)r   r   r~   r   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   rc   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assertRaisesRegexr4   r"   OverflowErrorr   subTestr   assertIsInstanceassertRegexr$   )"r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   namer   convsignedvaluerB   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*n7n'*n47o 	c                 d    ddl m} dj                         } ||      }| j                  |d       y)zTest PyUnicode_InternInPlace()r   )unicode_interninplacer2   rH   N)r   r   decoder    )r%   interninplacerC   rs       r   test_interninplacezCAPITest.test_interninplace  s-     	EMMO!E"r   c                     ddl m} | j                   |d      d       | j                   |d      d       | j                  t        |d       | j                  t        |d       | j                   |d	      d
       y)z!Test PyUnicode_InternFromString()r   )unicode_internfromstringr2   rH   rj   rk   rr   rl   r   r   N)r   r  r    r"   rm   )r%   internfromstrings     r   test_internfromstringzCAPITest.test_internfromstring  ss     	K)&159)*=>M,.>H,.>H)#.3r   c                    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t               | j                  t        |d|z  d       | j                  t        |d|z  t               | j                   |t        d      d       | j                  t        |t        d       | j                  t        |t        t               | j                  t        |t        d       | j                  t        |t        d       | j                  t        |t        t               y)zTest PyUnicode_FromWideChar()r   )unicode_fromwidecharSIZEOF_WCHAR_Tr   rx   ry   rz   r   r{   r|   )r   rH   rg   ri   rk   r}   r   )r   u   surrogatepassrH   rc   r   u   ar   r   r   N)r   r  r	  r   r   r   r    r"   r#   r   r$   r   rT   )r%   fromwidecharr	  encodingrC   bs         r   test_fromwidecharzCAPITest.test_fromwidechar  s    	C,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+|S.I+|U>5I2N+|U>5I>ZdA.3+|T1=+|T>J+|T2>+|T2>+|T>Jr   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)zTest PyUnicode_AsWideChar()r   )unicode_aswidechar)unicode_aswidechar_nullr  abcdefr   rc   rH   rI   rS   r   abc re      r1   abc def r~   r   r   rR   r2   N)
r   r  r  r	  r    r!   r"   rJ   r$   rT   )r%   r  r  r	  wcharsizenonbmpnchars           r   test_aswidecharzCAPITest.test_aswidechar  s.    	1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)z!Test PyUnicode_AsWideCharString()r   )unicode_aswidecharstring)unicode_aswidecharstring_nullr  rH   rI   r  re   r1   r  r   r   r   rR   r2   N)r   r  r  r	  r    r"   r4   r!   rJ   r$   rT   )r%   r  r  r	  r  r  r  r  s           r   test_aswidecharstringzCAPITest.test_aswidecharstring/  sg    	7;,.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           	      Z   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	)
zTest PyUnicode_AsUCS4()r   )unicode_asucs4r   r   rR   u   ￿u    ￿r   N)r   r!  r   r    r"   r$   join)r%   r!  rC   ls       r   test_asucs4zCAPITest.test_asucs4R  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)zTest PyUnicode_AsUCS4Copy()r   )unicode_asucs4copyr   rR   N)r   r&  r    r"  )r%   
asucs4copyrC   s      r   test_asucs4copyzCAPITest.test_asucs4copyk  sZ     	?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)zTest PyUnicode_FromOrdinal()r   )unicode_fromordinalr   ar/      €r   rk   r   r   N)r   r*  r    r"   r4   )r%   fromordinals     r   test_fromordinalzCAPITest.test_fromordinal{  sk     	AT*C0V,h7W-|<*k8<*k26r   c                 h   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)zTest PyUnicode_AsUTF8()r   )unicode_asutf8rH   r      abc    абвr1      абв rk   r      😀 re   r~      abc def    r2   N)r   r0  r    r"   UnicodeEncodeErrorrJ   )r%   r0  s     r   test_asutf8zCAPITest.test_asutf8  s     	-q18<!46STa8:OP
A6F,nhJ)^VQ?)^R;r   c                 h   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       | j	                  t
        |dd       | j	                  t        |dd       | j	                  t        |g d       y)zTest PyUnicode_AsUTF8AndSize()r   )unicode_asutf8andsize)unicode_asutf8andsize_nullrH   r   )r1  rI   r2  r1   )r3     rk   r   )r4  r   re   r~   )r5  r1   r1  r5  r6  r2   N)r   r:  r;  r    r"   r7  rJ   )r%   r:  r;  s      r   test_asutf8andsizezCAPITest.test_asutf8andsize  s    	48.ua8-H.x;=_`.|Q?A[\.z1=?QR3E1=xH3JBMR,.CXqQ)%:FAF)%:BB,.H(TUV)%?K)%?QGr   c                 >    ddl m} | j                   |       d       y)z#Test PyUnicode_GetDefaultEncoding()r   )unicode_getdefaultencodings   utf-8N)r   r?  r    )r%   getdefaultencodings     r   test_getdefaultencodingz CAPITest.test_getdefaultencoding  s     	O+-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)z1Test _PyUnicode_TransformDecimalAndSpaceToASCII()r   )'unicode_transformdecimalandspacetoasciir   u   ٣.١٤z3.14u
    3.14 z 3.14 u   12€3z12?r   r   N)r   rC  r    r"   r$   )r%   transform_decimals     r    test_transform_decimal_and_spacez)CAPITest.test_transform_decimal_and_space  s     	[*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)zTest PyUnicode_Concat()r   )unicode_concatrH   defr  u   гдеu	   abcгдеr2  u	   абвdefu   абвгдеza bzc dza bc dr2      defN)r   rG  r    r"   rJ   )r%   concats     r   test_concatzCAPITest.test_concat  s     	7u-x8x0+>%0+>(3^D/<)VVU;)VUF;)VVV<)VR7)VUB7)VR4r   c                 *   ddl m} | j                   |dd      g d       | j                   |ddd      g d       | j                   |ddt              g d       | j                   |ddd      g d       | j                   |ddt              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)zTest PyUnicode_Split()r   )unicode_splita|b|c|d|r+  r  rN   dr   )r+  r  zc|dr   r,  	a||b|c||d||r+  b|crQ     а|б|в|г   а   б   в   г   абабагаламагаrX  r   rY  rY  r[  u   лu   мr[  r    a	b
cder+  r  rN   rQ  e   ab c d er   N)
r   rM  r    r   r   rT   r"   r4   rJ   r   )r%   splits     r   
test_splitzCAPITest.test_split  sh    	5y#.0DEy#q13DEy#~>-	/y#r24HIy#~>-	/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t              g d       | j                   |ddd      g d       | j                   |ddt              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)zTest PyUnicode_RSplit()r   )unicode_rsplitrN  rO  rP  r   )a|brN   rQ  r   r,  rR  rS  rT  rV  rW  r\  rX  r]  u
   aжbжcжd   жr^  r_  ra  r   N)
r   re  r    r   r   rT   r"   r4   rJ   r   )r%   rsplits     r   test_rsplitzCAPITest.test_rsplit  s    	7	3/1EF	324EF	3?-	/	335IJ	3?-	/	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)zTest PyUnicode_Partition()r   )unicode_partitiona|b|crO  )r+  rO  rU  a||b||crS  )r+  rS  zb||c   а|б|в)rX  rO  u   б|в
   кабанrX  )u   кrX  u   бан   aжbжcrg  )r+  rg  u   bжcr      a|b|c   |N)r   rk  r    r"   r4   rJ   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)zTest PyUnicode_RPartition()r   )unicode_rpartitionrl  rO  )rf  rO  rN   rm  rS  )za||brS  rN   rn  )u   а|бrO  rZ  ro  rX  )u   кабrX  u   нrp  rg  )u   aжbrg  rN   r   rq  rr  N)r   rv  r    r"   r4   rJ   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                 F   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)zTest PyUnicode_SplitLines()r   )unicode_splitlinesza
bc
drP  T)za
zbzc
rQ  u   ab c d)u   au   b u   c rQ  u   а
бв
гrW  s   a
bc
dN)r   rz  r    r"   rJ   )r%   
splitliness     r   test_splitlineszCAPITest.test_splitlinesA  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)zTest PyUnicode_Translate()r   )unicode_translateabcdr+  Ar  BrN   <>zAB<>du   абвгrX  u   АrY  u   БrZ  u   АБ<>гrH   Nstrictfooignoreacreplaceu   a�cbackslashreplaceza\x62cr2   r      A)	r   r~  r    r   r"   UnicodeTranslateErrorLookupErrorrJ   rT   )r%   	translates     r   test_translatezCAPITest.test_translateS  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)zTest PyUnicode_Join()r   )unicode_joinrO  )r+  r  rN   rl  )r+  r   rN   za||cr   rH   za b c)rX  rY  rZ  rn  rg  u
   ажбжвrr  )   a   b   cr   r   N)r   r  r    rT   r"   rJ   r$   )r%   r"  s     r   	test_joinzCAPITest.test_joinl  s    	3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                 F   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t
              d       | j                   ||ddd      d       | j                   ||dt	        |      d      d       | j                   ||dt	        |       d	      d       | j                   ||dt	        |       dz
  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)zTest PyUnicode_Count()r   )unicode_count   ¡u   耀肀u   u   🄀🇱r   !>_<!zr   !r      !   !>_<!N)
r   r  r3   r    r   r   r   r"   rJ   r   )r%   r  r   rL   chs        r   
test_countzCAPITest.test_count~  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NCQGsCA6:sCS1=qAsC#c(B?CsC#c(1bA1EsCDaH)]Cq#c(K)]Hc1c#hO)]CS1c#hO)]BQC!Lr   c           
          ddl m} d}| j                   ||ddt        |      d      d       | j                   ||ddt        |      d      d       | j                   ||ddt        d      d       | j                   ||dt        |       t        d      d       | j                   ||dt
        t        |      d      d       | j                   ||ddt        d      d       | j                   ||dt
        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)zTest PyUnicode_Tailmatch()r   )unicode_tailmatchababahalamahaabar   r   ahar  r   baah)r  r  N)r   r  r    r   r   r   r"   rJ   )r%   	tailmatchr   s      r   test_tailmatchzCAPITest.test_tailmatch  s    	=3q#c(B?C3q#c(A>B3q."EqI3Cy."MqQ3~s3xLaP3q.!DaH3~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      d
       | j                   ||d	dt	        |      dz   d      d
       | j                   ||d	dt
        d      d
       | j                   ||d	dd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                   ||d	t	        |       dd      d       | j                   ||d	t        dd      d       | j                   ||d	t        dd      d       | j                   ||d	t        t
        d      d       | j                   ||d	t        t
        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)zTest PyUnicode_Find()r   )unicode_findr  r   r   r  r  r   r  r   r  r  N)
r   r  r3   r    r   r   r   r"   rJ   r   )r%   findr   rL   r  s        r   	test_findzCAPITest.test_find  s8    	3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>1=qAc33s8A:r:A>c3>2>Bc31a0"5c31b126c3C!Q7<c3C!R8"=c3S	2q91=c3S	2r:A>c3A>Bc3B?Cc3JANc3KQO)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      d	       | j                   ||t	        d      dt        |      dz   d      d	       | j                   ||t	        d      dt        d      d	       | j                   ||t	        d      dd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       | j                   ||t	        d      t        |       dd      d       | j                   ||t	        d      t        dd      d       | j                   ||t	        d      t        dd      d       | j                   ||t	        d      t        t        d      d       | j                   ||t	        d      t        t        d      d	       y
)zTest PyUnicode_FindChar()r   )unicode_findcharr  r   r   r  r   r  r   N)r   r  r3   r    r   r   r   r   )r%   r  r   rL   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NANPQR)#s3xCHQJKQO)#s3xNBOQRS)#s3xAqA2F)#s3xArBBG)#s3xS1aH"M)#s3xS1bI2N)#s3x#c(BJAN)#s3x#c(BKQO)#s3xQOQRS)#s3xRPRST)#s3xYZ[]^_)#s3xY[\^_`r   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              d       | j                   ||ddd      d       | j                   ||ddt              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)zTest PyUnicode_Replace()r   )unicode_replaceabracadabrar+  =z=br=c=d=br=r  z<>br<>c<>d<>br<>abraz=cad=r   z=br=cadabrar   r  r   z=a=b=r=a=c=a=d=a=b=r=a=rg  u   жbrжcжdжbrжr\  rX  u   =б=б=г=л=м=г=u   Баден-Баденu
   БаденBadenzBaden-Baden   =r  N)r   r  r    r   r   r"   rJ   r   )r%   r  r   s      r   test_replacezCAPITest.test_replace  s    	9c3/?c402DEfc2G<c32MBc32C8c3?Oc33]Cc3?O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
)zTest PyUnicode_Compare()r   )unicode_comparerH   rH  r   r   re   r2  r2   N)r   r  r    r"   rJ   )r%   compares     r   test_comparezCAPITest.test_compare,  s	    	9.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)z'Test PyUnicode_CompareWithASCIIString()r   )unicode_comparewithasciistringrH   r2   rI  r   rH  r   rd   re   r2  N)r   r  r    )r%   comparewithasciistrings     r   test_comparewithasciistringz$CAPITest.test_comparewithasciistringB  s     	W/v>B/v>C/v>B/{CQG/
KH!L/&A1Er   c           	      2   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)zTest PyUnicode_RichCompare()r   )unicode_richcomparer<  )rH   r2  rk   r  r2   rH   N)r   r  r5   r   NotImplemented)r%   richcompareLTLEEQNEGTGEr:   s1r   ops               r   test_richcomparezCAPITest.test_richcompareS  s    	A!&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	)
zTest PyUnicode_Format()r   )unicode_formatzx=%d!*   zx=42!)r  z
x=%d y=%s!z
x=42 y=[]!N)r   r  r    r"   r$   rT   )r%   r   s     r   test_formatzCAPITest.test_formato  sx     	7,g6/9r2h7F+vw=+vtR8r   c                 p   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)zTest PyUnicode_Contains()r   )unicode_containsr  r   r   r  xrg  rR   re   bcs   abcdr  N)r   r  r    r"   rJ   r   )r%   containss     r   test_containszCAPITest.test_contains|  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)zTest PyUnicode_IsIdentifier()r   )unicode_isidentifierr+  r   b0   µu   𝔘𝔫𝔦𝔠𝔬𝔡𝔢r    [   ©032MN)r   r  r    )r%   isidentifiers     r   test_isidentifierzCAPITest.test_isidentifier  s     	C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        ||t        |dd       | j                  t        ||d|dd       | j                  t        ||t        |dd       | j                  t        ||d|dd       | j                  t        ||d|t        d       | j                  t        ||d|dd       | j                  t        ||d|t        d       | j                  t        ||d	|dd       | j                  t        ||d	|dt               | j                  t        ||d|dd       | j                  t        ||d|dt               | j                  t        ||dd
dd       | j                  t        ||dg dd       y)zTest PyUnicode_CopyCharacters()r   )unicode_copycharactersr+   Nr   rR   r<  r   r   r   )r   r  r3   r"   r$   r5   r    ljustrjustr8   r   r   )	r%   r  r:   r<   from_r>   
from_startto_startrC   s	            r   test_copycharacterszCAPITest.test_copycharacters  s    	5
 $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QRTUWXY*&<aQ1M*&<aQRTUWXY*&<aAq!L*&<aA~WXY*&<aAr1M*&<aA~WXY+'=q!Q1M+'=q!Q>Z+'=q!Q2N+'=q!Q>Z+'=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   r   )r   r  r5   r!   r    r   )r%   r  krC   rL   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(   rD   rO   rV   r\   r`   ro   rt   r   r   r   r   r   r   r  r  r  r  r  r$  r(  r.  r8  r=  rA  rE  rK  rc  ri  rt  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r      s	   X__Y$&(?@? A ?& X__Y$&(?@!= A !=L X__Y$&(?@= A =: X__Y$&(?@8 A 80 X__Y$&(?@< A <4 X__Y$&(?@B A B2 X__Y$&(?@P A P. X__Y$&(?@
. A 
. X__Y$&(?@P A PD X__Y$&(?@K A K, 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$&(?@K A KB 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$&(?@H A H* X__Y$&(?@9 A 9 X__Y$&(?@> A >$ X__Y$&(?@5 A 5& X__Y$&(?@5 A 54 X__Y$&(?@6 A 66 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: X__Y$&(?@U A UB X__Y$&(?@#D A #DN X__Y$&(?@a A aD X__Y$&(?@< A <: 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$&(?@0O A 0Oj X__Y$&(?@O A Or   r   __main__)r  r   testr   test.supportr   r   r   r   ImportErrorrT   r   r   TestCaser   r	   mainr   r   r   <module>r     sw     
  &8
 	# 	\Ox   \O~. zHMMO S/  Is   A A&%A&