
    dafn                         d dl Z d dlZd dlmZ  ej                  d      ZdZ G d de j                        Ze	dk(  r e j                          yy)    N)import_helper	_testcapic                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)CAPITestc                    t         j                  }| j                   |dt              d       | j                   |dd      d       d}d}| j                   ||t              |       | j                   ||d      |       | j                   ||d      |j	                  d             | j                  t        ||d       | j                   ||dd      d	       | j                   |t        |      t              |       | j                   |t        |      d      |       | j                  t        |dd
       | j                  t        ||dd
       | j                  t        |dt               | j                  t        |dd       | j                  t        |g t               | j                  t        |g d       | j                  t        |t        t               | j                  t        |t        d       y)z"Test PyUnicode_FromEncodedObject()   abcabcascii
   a¡你😀
   a¡你😀utf-8latin1replaceu   a���������fooN)r   unicode_fromencodedobjectassertEqualNULLdecodeassertRaisesUnicodeDecodeError	bytearrayLookupError	TypeErrorSystemError)selffromencodedobjectbss       5/root/Python-3.12.4/Lib/test/test_capi/test_codecs.pytest_fromencodedobjectzCAPITest.test_fromencodedobject   s   %??*648%@*67;UC4#*1d3Q7*1g6:*1h7(9KL,.?GL*1gyA)	+*9Q<>B*9Q<A1E+'8&%H+'8!WeL)%6tD)%6wG)%6DA)%6GD+'8$E+'8$H    c                    t         j                  }| j                   |dd      d       | j                   |dd      d       | j                   |ddd      d       | j                  t        |dd       | j                   |ddd      d       | j                   |dt
              d       | j                   |dt
        d      d       | j                  t        |d	d
       | j                  t        |d	dd
       y)zTest PyUnicode_Decode()s   [€]r   u   [€]s   []z
iso8859-15strictr   u   [�]   r   N)r   unicode_decoder   r   r   r   r   )r   r   s     r   test_decodezCAPITest.test_decode5   s    )) 17;ZH	<8*E	<BJO,fiI	7I>
K 148*E	4;ZH+vw>+vwGr!   c                    t         j                  }| j                   |dt              d       | j                   |dd      d       d}d}| j                   ||t              |       | j                   ||d      |       | j                   |dd      d	       | j	                  t
        |dd       | j                   ||dd
      d       | j	                  t        |dd       | j	                  t        ||dd       | j	                  t        |dt               | j	                  t        |dd       | j	                  t        |g t               | j	                  t        |g d       y)z Test PyUnicode_AsEncodedString()r	   r   r
   r   r   r      ¡¢r      r   s   a???r   N)r   unicode_asencodedstringr   r   r   UnicodeEncodeErrorr   r   )r   asencodedstringr   r   s       r   test_asencodedstringzCAPITest.test_asencodedstringG   s2   #;;5v>8&A#4D115G4a8X>L,oz7SGY?I+uE+7EJ)_fdC)_fgF)_b$?)_b'Br!   c                    t         j                  }dD ]D  }|j                  d      }| j                   ||      |       | j                   ||d      |       F | j	                  t
        |d       | j	                  t
        |d       | j	                  t
        |d       | j	                  t
        |d       | j                   |dd      d	       | j                   |d
d      d       | j	                  t        |dd       y)Test PyUnicode_DecodeUTF8()r	   r(      你好u   a😀r   r#               ar      a�   ab   a�b   ar   N)r   unicode_decodeutf8encoder   r   r   r   )r   
decodeutf8r   r   s       r   test_decodeutf8zCAPITest.test_decodeutf8^   s    11
C 	9A!AZ]A.Z84a8	9
 	,j'B,j'B,j'B,j,GL)<iHM9=zJ+z8UCr!   c                 ^   t         j                  }dD ]Z  }|j                  d      }| j                   ||      |t	        |      f       | j                   ||d      |t	        |      f       \ | j                  t        |d       | j                  t        |d       | j                  t        |d       | j                   |d      d       | j                   |dd	      d       | j                  t        |d
       | j                   |d
d	      d       | j                  t        |dd       y)z#Test PyUnicode_DecodeUTF8Stateful()r0   r   r#   r2   r3   r4   r5   )a   r   r7   )r8      r9   r   N)r   unicode_decodeutf8statefulr;   r   lenr   r   r   )r   decodeutf8statefulr   r   s       r   test_decodeutf8statefulz CAPITest.test_decodeutf8statefulr   s   &AAC 	KA!A/2QAK@/8<q#a&kJ	K
 	,.@'J,.@'J,.@'J+L98D+L)DhO,.@-P+M9EW+'98UKr!   c                 
   t         j                  }dD ])  }| j                   ||      |j                  d             + | j	                  t
        |d       | j	                  t        |d       | j	                  t        |g        y)zTest PyUnicode_AsUTF8String()r0   r      r   N)r   unicode_asutf8stringr   r;   r   r+   r   )r   asutf8stringr   s      r   test_asutf8stringzCAPITest.test_asutf8string   st     55C 	AA\!_ahhw.?@	A 	,lHE)\6:)\26r!   c                 ^   t         j                  }t        j                  dk(  rdnd}dD ]  }|j	                  d      }| j                   |d|      ||f       |j	                  d      }| j                   |d|      d|f       | j                   |dd|z         d|f       |j	                  d	      }| j                   |d|      d|f       | j                   |dd
|z         d|f        | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                   |ddd      d       | j                   |ddd      d       | j                   |d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       y)zTest PyUnicode_DecodeUTF16()littler@   r0   utf-16r   utf-16le   utf-16be      as   as   a           r   rM      �r@   rX   r   rX           s   =s   =s   s   =s   =r   N)	r   unicode_decodeutf16sys	byteorderr;   r   r   r   r   )r   decodeutf16naturalbyteorderr   r   s        r   test_decodeutf16zCAPITest.test_decodeutf16   s    33!$(!:2C 	DA"A[A.1A10EF$A[Q/"a9[KM:RGD$A[A.A7[KM:QFC	D 	,k2tD,k1dC,k1lK,k1lK,k2{K,k1kJ,k1kJRi@.QQY?OQY?OQ(;YGXQ(;YGW,k2{K,k1kJ,k1kJRi@.QQY?OQY?OQ(;YGXQ(;YGW+{BUK+{A{EJ+{A{EJr!   c           	         t         j                  }t        j                  dk(  rdnd}dD ]  }|j	                  d      }| j                   |d|      ||t        |      f       |j	                  d      }| j                   |d|      d|t        |      f       | j                   |dd|z         d|t        |      d	z   f       |j	                  d
      }| j                   |d|      d|t        |      f       | j                   |dd|z         d|t        |      d	z   f        | 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                   |dd      d       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d        | j                   |dd!d      d"       | j                  t        |dd#       | j                   |dd#d      d$       | j                  t        |dd%       | j                   |dd%d      d&       | j                  t        |ddd'       | j                  t        |ddd'       | j                  t        |ddd'       y())z$Test PyUnicode_DecodeUTF16Stateful()rL   rM   r@   r0   rN   r   rO   rP      rQ   rR   s   a =)rM   r?   rd   s   a =s   a = s    a)r@   r?   rd   s    a=s    a=s   a = rM   r?   rA   s    a=ީr@   r?   rA   rT   rU   rV   r   )rM   rX   rd   )r@   rX   rd   )r   rX   rd   r[   rM   rX   rA   r\   r@   rX   rA   s   =a )rM      �arA   s   = a)r@   ri   rA   r   N)
r   unicode_decodeutf16statefulr^   r_   r;   r   rC   r   r   r   )r   decodeutf16statefulra   r   r   s        r   test_decodeutf16statefulz!CAPITest.test_decodeutf16stateful   s^   'CC!$(!:2C 	VA"A0A69I1cRSf8UV$A0Q7"aQI0KMBRCPQFSTHDUV$A0A6As1vG0KMBQ3q6RS8DTU	V 	,RA<P,R1DE|T,R1HI<X,Q@+N,Q0CDkR,Q0GH+V,Q0OPR^_,Q0OPR]^,.A2{S,.A1kR,.A1kR,RiHJ[\,QYGIYZ,QYGIYZ,Q0CYOQbc,Q0CYOQab,.A2GZ[,R1DiPRde,.A1FYZ,Q0CYOQbc+':BUS+':A{ER+':A{ERr!   c                 
   t         j                  }dD ])  }| j                   ||      |j                  d             + | j	                  t
        |d       | j	                  t        |d       | j	                  t        |g        y)zTest PyUnicode_AsUTF16String()r0   rN   rG   r   N)r   unicode_asutf16stringr   r;   r   r+   r   )r   asutf16stringr   s      r   test_asutf16stringzCAPITest.test_asutf16string   u    !77C 	CA]1-qxx/AB	C 	,mXF)]F;)]B7r!   c                    t         j                  }t        j                  dk(  rdnd}dD ]  }|j	                  d      }| j                   |d|      ||f       |j	                  d      }| j                   |d|      d|f       | j                   |dd|z         d|f       |j	                  d	      }| j                   |d|      d|f       | j                   |dd
|z         d|f        | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                   |ddd      d       | j                  t        |dd       | j                   |ddd      d       | j                  t        |dd       | j                   |ddd      d       | j                  t        |ddd       | j                  t        |ddd       | j                  t        |ddd       y)r/   rL   rM   r@   r0   utf-32r   utf-32le     utf-32be        a          a s	     a    s	        a    r   rW   rY   rZ                =       =r   N)	r   unicode_decodeutf32r^   r_   r;   r   r   r   r   )r   decodeutf32ra   r   r   s        r   test_decodeutf32zCAPITest.test_decodeutf32   s   33!$(!:2C 	LA"A[A.1A10EF$A[Q/"a9[,?,ABRGL$A[A.A7[,?,ABQFK	L 	,k2?VW,k1>UV,k1>ef,k1>ef,k2?RS,k1>QR,k1>QRR)<iH.YQ(;YGWQ(;YGWQ(KYWYghQ(KYWYfg,k2?RSR)<iH.Y,k1>QRQ(;YGW+{B8KUS+{A7JER+{A7JERr!   c           	         t         j                  }t        j                  dk(  rdnd}dD ]  }|j	                  d      }| j                   |d|      ||t        |      f       |j	                  d      }| j                   |d|      d|t        |      f       | j                   |dd|z         d|t        |      d	z   f       |j	                  d
      }| j                   |d|      d|t        |      f       | j                   |dd|z         d|t        |      d	z   f        | 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                   |dd      d       dD ]  }| j                   |d|      d       | j                   |d|      d       | j                   |d|      d       | j                   |dd|z         d       | j                   |dd|z         d        | j                  t        |dd       | j                  t        |dd       | j                  t        |dd       | j                   |ddd      d        | j                   |ddd      d!       | j                   |ddd      d"       | j                   |dd#d      d$       | j                   |dd%d      d&       | j                  t        |dd'       | j                   |dd'd      d        | j                  t        |dd(       | j                   |dd(d      d!       | j                  t        |ddd)       | j                  t        |ddd)       | j                  t        |ddd)       y*)+z$Test PyUnicode_DecodeUTF32Stateful()rL   rM   r@   r0   rs   r   rt   ru   rA   rv   rw   rx   re   s   a    s   a    ry   rf   s      a s      a s     a    )rM   r?      s        a )r@   r?   r   )r4   s   s   )rM    r   )r@   r   r   )r   r   r   )rM   r   rA   )r@   r   rA   rz   r   rg   rh   )r   rX   rA   r{   )rM   rX   r   r|   )r@   rX   r   r}   r~   r   N)
r   unicode_decodeutf32statefulr^   r_   r;   r   rC   r   r   r   )r   decodeutf32statefulra   r   r   s        r   test_decodeutf32statefulz!CAPITest.test_decodeutf32stateful#  s   'CC!$(!:2C 	^A"A0A69I1cRSf8UV$A0Q7"aQI04G4IJRQRTWXYTZ[\T\L]^$A0A6As1vG04G4IJQPQSVWXSYZ[S[L\]	^ 	,R1HI<X,R1LM|\,R1PQS_`,Q0GH+V,Q0KLkZ,Q0OPR]^,Q0_`bno,Q0_`bmn6 	XA0Q7E0A6
C0A6
C04G4IJKX04G4IJJW	X 	,.A2GZ[,.A1FYZ,.A1FYZ,R1DiPRcd,Q0CYOQab,Q0CYOQab,Q0SU^_ars,Q0SU^_aqr,.A2GZ[,R1DiPRcd,.A1FYZ,Q0CYOQab+':B@SUZ[+':A?RTYZ+':A?RTYZr!   c                 
   t         j                  }dD ])  }| j                   ||      |j                  d             + | j	                  t
        |d       | j	                  t        |d       | j	                  t        |g        y)zTest PyUnicode_AsUTF32String()r0   rs   rG   r   N)r   unicode_asutf32stringr   r;   r   r+   r   )r   asutf32stringr   s      r   test_asutf32stringzCAPITest.test_asutf32stringW  rq   r!   c                     t         j                  }| j                   |d      d       | j                   |dd      d       | j                   |d      d       | j                   |dd      d       y)zTest PyUnicode_DecodeLatin1()r   r	   r#   r)   r(   N)r   unicode_decodelatin1r   )r   decodelatin1s     r   test_decodelatin1zCAPITest.test_decodelatin1c  se     55f-u5fh7?k2J?k8<jIr!   c                    t         j                  }| j                   |d      d       | j                   |d      d       | j                  t        |d       | j                  t
        |d       | j                  t
        |g        y)zTest PyUnicode_AsLatin1String()r	   r   r(   r)      你N)r   unicode_aslatin1stringr   r   r+   r   )r   aslatin1strings     r   test_aslatin1stringzCAPITest.test_aslatin1stringn  sn    "99.7
3[A,nhG)^V<)^R8r!   c                 H   t         j                  }| j                   |d      d       | j                   |dd      d       | j                  t        |d       | j                   |dd      d       | j                   |dd      d	       | j                  t
        |dd
       y)zTest PyUnicode_DecodeASCII()r   r	   r#   r4   s   ar   r6   s   abr8   r   N)r   unicode_decodeasciir   r   r   r   )r   decodeasciis     r   test_decodeasciizCAPITest.test_decodeasciiz  s    33V,e4VX6>,k7CXy99EY	:JG+{HeDr!   c                     t         j                  }| j                   |d      d       | j                  t        |d       | j                  t
        |d       | j                  t
        |g        y)zTest PyUnicode_AsASCIIString()r	   r      N)r   unicode_asasciistringr   r   r+   r   )r   asasciistrings     r   test_asasciistringzCAPITest.test_asasciistring  sY    !77u-v6,mVD)]F;)]B7r!   c           	         t         j                  }| j                   |ddddd      d       | j                   |dg d      d       | j                   |dd	      d       | j                   |dg d
      d       | j                   |dg d      d       | j                   |dg d      d       | j                   |dg d      d       | j                   |dg d      d       | j                  t        |di        | j                  t        |dddi       | j                   |dg dd      d       | j                   |dt
              d       | j                  t        |dd       y)zTest PyUnicode_DecodeCharmap()    r?   r   c)r         bacs    )r?   r   r   r	   )   ¡   ¢   £u   ¢¡£)r   u   好u   世u	   好你世)   😀u   😁u   😂u   😁😀😂a   b   c   )r   r   cdbcd    r   N)Nr   r   r   u   b�cs    u    ÿ*   )r   unicode_decodecharmapr   r   r   r   r   )r   decodecharmaps     r   test_decodecharmapzCAPITest.test_decodecharmap  sH   !77yccc2JKUSy/BEJy%8%@y2JK^\y2PQSghy2\]_  	Ay,?Gy/BEJ,mUBG,mUQINy2BINPZ[}d;\J)]E2>r!   c           	      B   t         j                  }| j                   |ddddd      d       | j                   |ddddd      d       | j                   |d	dddd
      d       | j                   |ddddd      d       | j                   |ddddd      d       | j                  t        |di        | j                  t        |dddi       | j                  t
        |di        | j                  t
        |g i        | j                  t
        |dt               y)z Test PyUnicode_AsCharmapString()r	   r   r   r   r   r   u   ¡¢£)         u	   你好世)i`O  i}Y  iN  u   😀😁😂)i  i i r!   s   spams   spamr?   r   NrS   )r   unicode_ascharmapstringr   r   r+   r   r   )r   ascharmapstrings     r   test_ascharmapstringzCAPITest.test_ascharmapstring  s   #;;QA10EF	RRS9TUW`a)=ST^_?`aclm)IUVabmnKopr{|QCW0MNPYZ,osBG,osRJO)_dB?)_b"=)_c4@r!   c                    t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d       | j                   |d
      d       | j                   |d      d       | j                  t              5  | j                   |d      d       ddd       dD ]1  }| j                  t        ||       | j                  t        ||d       3 | j                   |dd      d       | j                   |dd      d       | j                  t        |dd       y# 1 sw Y   xY w)z$Test PyUnicode_DecodeUnicodeEscape()r   r	      \t\n\r\x0b\x0c\x00\\	
 \s   	
 z	
    \xa1\xa2r(   r)      \u4f60\u597dr1   
   \U0001f600r      \z\zN)   \s   \xa   \u4f6	   \U0001f60r#   
   x\U0001f60r      x�   x\U0001f60y   x�yr   r   )r   unicode_decodeunicodeescaper   assertWarnsDeprecationWarningr   r   r   )r   decodeunicodeescaper   s      r   test_decodeunicodeescapez!CAPITest.test_decodeunicodeescape  sn   'CC,V4e<,-EFHXY,-BC^T,\:JG,[9:F,-=>O,^<lK01 	A08%@	A : 	TA02EqI02Eq(S	T 	,^YGS,_iH*U+':E5I	A 	As   E00E9c                 p   t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d
       | j                  t        |d       | j                  t        |g        y)z&Test PyUnicode_AsUnicodeEscapeString()r	   r   r   r   r(   r   r1   r   r   r   N)r   unicode_asunicodeescapestringr   r   r   )r   asunicodeescapestrings     r   test_asunicodeescapestringz#CAPITest.test_asunicodeescapestring  s     ) G G.u5v>./?@BZ[.z:LI.~>@PQ.|<nM)%:FC)%:B?r!   c                 t   t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d
       | j                   |d      d       | j                   |d      d       dD ]1  }| j                  t        ||       | j                  t        ||d       3 | j                   |dd      d       | j                   |dd      d       | j                  t
        |dd       y)z'Test PyUnicode_DecodeRawUnicodeEscape()r   r	      	
 \r   r)   r(   r   r1   r   r   r   z\xa1\xa2r   r   )r   r   r#   r   r   r   r   r   r   r   N)r   unicode_decoderawunicodeescaper   r   r   r   )r   decoderawunicodeescaper   s      r   test_decoderawunicodeescapez$CAPITest.test_decoderawunicodeescape  s-   !*!I!I/7?/0ABDTU/<jI/0@A>R/?N/={K/7?) 	WA02H!L02H!XV	W 	/	JIV/KZX+'=}eTr!   c                 p   t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d
       | j                  t        |d       | j                  t        |g        y)z)Test PyUnicode_AsRawUnicodeEscapeString()r	   r   r   r   r(   r)   r1   r   r   r   N)r    unicode_asrawunicodeescapestringr   r   r   )r   asrawunicodeescapestrings     r   test_asrawunicodeescapestringz&CAPITest.test_asrawunicodeescapestring  s    #,#M#M 1%8&A12BCEVW1*={K1.ACST1,?P)%=vF)%=rBr!   N)__name__
__module____qualname__r    r&   r-   r=   rE   rJ   rb   rl   rp   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r   r   
   s    $I2H$C.D(L.	7(KX(S\	8$SP.[h	8J	9E8?.A"J0@U,Cr!   r   __main__)unittestr^   test.supportr   import_moduler   r   TestCaser   r   mainr   r!   r   <module>r      sV     
 &'M''4	yCx   yCz zHMMO r!   