o
    HXh?                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ g dZG dd dejZG dd	 d	ejZG d
d dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd deZedkre  dS dS )    N)support)	os_helper)TESTFN)gb2312gbkgb18030hz	big5hkscscp932	shift_jiseuc_jpeuc_jisx0213shift_jisx0213euc_jis_2004shift_jis_2004cp949euc_krjohabbig5cp950
iso2022_jpiso2022_jp_1iso2022_jp_2iso2022_jp_2004iso2022_jp_3iso2022_jp_ext
iso2022_krc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )Test_MultibyteCodecc                 C   sD   t D ]}| d|d | td|d | d|d qd S )N     )ALL_CJKENCODINGSassertEqualdecodestrencodeselfenc r(   B/opt/python-3.10.19/usr/lib/python3.10/test/test_multibytecodec.pytest_nullcoding#   s
   z#Test_MultibyteCodec.test_nullcodingc                 C   s    t D ]}| d|d qd S )Nabcd   abcd)r    r!   r$   r%   r(   r(   r)   test_str_decode)   s   z#Test_MultibyteCodec.test_str_decodec                 C   s2   t d}dd }t d| | t|dd d S )Nzeuc-krc                 S   s   dt jd fS )Nr      )sysmaxsize)excr(   r(   r)   <lambda>/   s    zBTest_MultibyteCodec.test_errorcallback_longindex.<locals>.<lambda>ztest.cjktests   applehamspam)codecs
getdecoderregister_errorassertRaises
IndexError)r&   ZdecZ	myreplacer(   r(   r)   test_errorcallback_longindex-   s   
z0Test_MultibyteCodec.test_errorcallback_longindexc                 C   s4   d}t dt j tD ]}| ||dd qd S )Nu,  ztest.ignorer   )r3   r5   ignore_errorsr    r!   r$   )r&   datar'   r(   r(   r)    test_errorcallback_custom_ignore4   s
   z4Test_MultibyteCodec.test_errorcallback_custom_ignorec              	   C   s:   zt D ]}d|}t| qW tt d S tt w )Nz# coding: {}
)r    formatexecr   unlinkr   )r&   r'   coder(   r(   r)   test_codingspec;   s   

z#Test_MultibyteCodec.test_codingspecc                 C   s$   |  ttjd  |  ttjd  d S N)r6   AttributeError_multibytecodecZMultibyteStreamReaderZMultibyteStreamWriterr&   r(   r(   r)   test_init_segfaultC   s   z&Test_MultibyteCodec.test_init_segfaultc                 C   s"   t D ]}| tt|d qd S Nr   )r    r6   	TypeErrorr3   r4   r%   r(   r(   r)   test_decode_unicodeJ   s   z'Test_MultibyteCodec.test_decode_unicodeN)
__name__
__module____qualname__r*   r-   r8   r;   r@   rE   rH   r(   r(   r(   r)   r   !   s    r   c                   @   sb   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejdd ZdS )Test_IncrementalEncoderc                 C   s   t d }| |dd | | d  | |ddd | | d  | |ddd | |dd	d | | d  d S )
Nr   u   파이썬 마을s   ̽ u	   ☆∼☆Ts   ١r   r   Fr3   getincrementalencoderr!   r$   resetr&   encoderr(   r(   r)   test_statelessQ   s   z&Test_IncrementalEncoder.test_statelessc                 C   s   t d }| |dd | |dd | |dd | |ddd | | d  | |dd	 | |dd | |d
dd | |d
dd d S )Njisx0213   æ̀      ær      ̀T      r   rM   rP   r(   r(   r)   test_stateful^   s   z%Test_IncrementalEncoder.test_statefulc                 C   s   t d }| |dd | t|jd | |dd | t|jd | | d  | |dd | |dd | t|jd | |d	d
d d S )NrS   rV   r   u   ģu   ̀ærU   rW   rY   r   TrX   )r3   rN   r!   r$   r6   UnicodeEncodeErrorrO   rP   r(   r(   r)   test_stateful_keep_bufferq   s   z1Test_IncrementalEncoder.test_stateful_keep_bufferc                 C   s   t d }| }| |dd || | |dd | |dd | }| |dd || | |dd d S )Nr   rT   rU   rV   r   rW   )r3   rN   getstater!   r$   setstate)r&   rQ   Zinitial_stateZpartial_stater(   r(   r)   $test_state_methods_with_buffer_state}   s   

z<Test_IncrementalEncoder.test_state_methods_with_buffer_statec                 C   s   t d }| |dd | }| |dd | }| |dd || | |dd || | |dd d S )Nr   z   z   あs   $B$"s   (Bzs   $")r3   rN   r!   r$   r]   r^   )r&   rQ   Zen_stateZjp_stater(   r(   r)   (test_state_methods_with_non_buffer_state   s   

z@Test_IncrementalEncoder.test_state_methods_with_non_buffer_statec                 C   s   t d }| | d |d | | tdd |d | | d t d }| | tdd |d	 | | td
d d S )Nr   r   rV   s   æ        littlerW   r   s	    BB      rb   s	    B      )r3   rN   r!   r]   r$   int
from_bytes)r&   Zbuffer_state_encoderZnon_buffer_state_encoderr(   r(   r)   $test_getstate_returns_expected_value   s2   





z<Test_IncrementalEncoder.test_getstate_returns_expected_valuec                 C   ,   t d }tdd}| t|j| d S )Nr   s   	                rd   )r3   rN   re   rf   r6   UnicodeErrorr^   )r&   rQ   Zpending_size_niner(   r(   r)   "test_setstate_validates_input_size      z:Test_IncrementalEncoder.test_setstate_validates_input_sizec                 C   rh   )Nr   s
           rd   )r3   rN   re   rf   r6   UnicodeDecodeErrorr^   )r&   rQ   Zinvalid_utf8r(   r(   r)   #test_setstate_validates_input_bytes   rk   z;Test_IncrementalEncoder.test_setstate_validates_input_bytesc                 C   s6   t dd}| |dd | |dd d S )Nz	shift-jisbackslashreplace   ÿs   \xff
   
)r3   rN   r!   r$   rP   r(   r(   r)   test_issue5640   s   z&Test_IncrementalEncoder.test_issue5640c                 C   s<   dd l }d}d}td||f }||}| |d d S )Nr   r
   uE   Python の開発は、1990 年ごろから開始されています。a5  
            import codecs
            encoding = %r
            text = %r
            encoder = codecs.getincrementalencoder(encoding)()
            text2 = encoder.encode(text).decode(encoding)
            if text2 != text:
                raise ValueError(f"encoding issue: {text2!a} != {text!a}")
        )	_testcapitextwrapdedentZrun_in_subinterpr!   )r&   rs   encodingtextr?   resr(   r(   r)   test_subinterp   s   
	z&Test_IncrementalEncoder.test_subinterpN)rI   rJ   rK   rR   rZ   r\   r_   rc   rg   rj   rm   rr   r   Zcpython_onlyry   r(   r(   r(   r)   rL   O   s     		rL   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test_IncrementalDecoderc                 C   sF   t d }| |dd | |dd | |dd d S )Nr   s   ̽u   파이s    u
   썬 마을r   r   )r3   getincrementaldecoderr!   r"   r&   decoderr(   r(   r)   	test_dbcs   s   z!Test_IncrementalDecoder.test_dbcsc                 C   s|   t d }| |dd | t|jdd | |dd | |dd | t|jdd | |dd d S )	Nr   s   u   파r   T   u   이s   ̽)r3   r{   r!   r"   r6   rl   r|   r(   r(   r)   test_dbcs_keep_buffer   s   
z-Test_IncrementalDecoder.test_dbcs_keep_bufferc                 C   s   t d }d}| ||d d | |ddd | ||d d | |dd	 | |d
d	 | |ddd	 | | d  | |dd | ||d d | t|jdd | |dd	 d S )Nz
iso2022-jp      (r      BT   $s   B@$u   世s   @$@s   @$z@$r   )r3   r{   r!   r"   rO   r6   rl   )r&   r}   ZESCr(   r(   r)   test_iso2022   s   z$Test_IncrementalDecoder.test_iso2022c                 C   s*   t D ]}t| }| t|jd qd S rF   )r    r3   r{   r6   rG   r"   )r&   r'   r}   r(   r(   r)   rH     s   z+Test_IncrementalDecoder.test_decode_unicodec                 C   s   t d }| |dd | \}}| |d | |dd | \}}| |d | |dd | \}}| |d |||f | |dd | \}}| |d |d | | d d S )	Nr   s   u   うr      r      )s   abci[)r3   r{   r!   r"   r]   r^   )r&   r}   Zpending1_Zpending2flags2Zpending3Zpending4r(   r(   r)   test_state_methods  s    
z*Test_IncrementalDecoder.test_state_methodsc                 C   sP   t d }| t|jd | t|jd | t|jd | t|jd d S )Nr   {   )invalidr   )s   1234r   )s	   123456789r   )r3   r{   r6   rG   r^   ri   r|   r(   r(   r)   test_setstate_validates_input-  s
   z5Test_IncrementalDecoder.test_setstate_validates_inputN)	rI   rJ   rK   r~   r   r   rH   r   r   r(   r(   r(   r)   rz      s    	rz   c                   @   s   e Zd Zdd ZdS )Test_StreamReaderc              	   C   s   z9t td}z|d W |  n|  w tj tdd}z| t|jd W |  n|  w W t	t d S t	t w )Nwb   r   )rv      )
openr   writecloser3   r6   rl   readr   r>   )r&   fr(   r(   r)   test_bug17284035  s   
z!Test_StreamReader.test_bug1728403N)rI   rJ   rK   r   r(   r(   r(   r)   r   4  s    r   c                   @   $   e Zd Zdd Zdd Zdd ZdS )Test_StreamWriterc                 C   h   t  }td|}|d | | d |d | | d |d | | d d S )Nr   123   123   𒍅s   12379   가¬s   123797501ioBytesIOr3   	getwriterr   r!   getvaluer&   scr(   r(   r)   test_gb18030E     



zTest_StreamWriter.test_gb18030c                 C   r   )Nzutf-8r   r   r   s   123𒍅r   s   123𒍅가¬r   r   r(   r(   r)   
test_utf_8P  r   zTest_StreamWriter.test_utf_8c                 C   s4   t  }td|}|d | | d d S )Nr   r+   r,   r   )r&   r   wrr(   r(   r)   test_streamwriter_strwrite\  s   
z,Test_StreamWriter.test_streamwriter_strwriteN)rI   rJ   rK   r   r   r   r(   r(   r(   r)   r   D  s    r   c                   @   r   )Test_ISO2022c                 C   s   d}d}|  |d| d S )Ns   (B:hu4:unit.ANi de familleu   :hu4:unité de familleziso2022-jp-2)r!   r"   )r&   Z
iso2022jp2Zunir(   r(   r)   test_g2c  s   zTest_ISO2022.test_g2c                 C   sB   |  ddd dD ]}d|}| tdd |D  qd S )N      ­ziso-2022-jp-2)ziso-2022-jp-2004ziso-2022-jp-3u   㐆c                 s   s    | ]}|d kV  qdS )   Nr(   ).0xr(   r(   r)   	<genexpr>l  s    z2Test_ISO2022.test_iso2022_jp_g0.<locals>.<genexpr>)ZassertNotInr$   ZassertFalseany)r&   rv   er(   r(   r)   test_iso2022_jp_g0h  s
   
zTest_ISO2022.test_iso2022_jp_g0c                 C   s$   t ddD ]
}t|dd qd S )Ni   i   iso_2022_jpignore)rangechrr$   )r&   r   r(   r(   r)   test_bug1572832n  s   zTest_ISO2022.test_bug1572832N)rI   rJ   rK   r   r   r   r(   r(   r(   r)   r   b  s    r   c                   @   s<   e Zd ZdZdZdZdZee Zdd Zdd Z	d	d
 Z
dS )TestStatefulu   世世ziso-2022-jps   $B@$@$s   (Bc                 C   s   |  | j| j| j d S rA   )r!   rw   r$   rv   expected_resetrD   r(   r(   r)   test_encodez  s   zTestStateful.test_encodec                    sh   t | j  d fdd| jD }| || j |  jddd| j |  jdddd d S )Nr   c                 3   s    | ]}  |V  qd S rA   r$   )r   charrQ   r(   r)   r     s
    
z7TestStateful.test_incrementalencoder.<locals>.<genexpr>r   Tfinal)	r3   rN   rv   joinrw   r!   expectedr$   rO   r&   outputr(   r   r)   test_incrementalencoder}  s   z$TestStateful.test_incrementalencoderc                    sd   t | j  t| jd d fddt| jD }| || j |  j	dddd d S )Nr.   r   c                 3   s$    | ]\}}  ||kV  qd S rA   r   )r   indexr   rQ   Z
last_indexr(   r)   r     s
    
z=TestStateful.test_incrementalencoder_final.<locals>.<genexpr>r   Tr   )
r3   rN   rv   lenrw   r   	enumerater!   r   r$   r   r(   r   r)   test_incrementalencoder_final  s   z*TestStateful.test_incrementalencoder_finalN)rI   rJ   rK   rw   rv   r   rO   r   r   r   r   r(   r(   r(   r)   r   s  s    	r   c                   @   s$   e Zd ZdZdZdZdZee ZdS )TestHZStatefulu   聊聊r   s   ~{ADADs   ~}N)rI   rJ   rK   rw   rv   r   rO   r   r(   r(   r(   r)   r     s    r   __main__)rC   r3   r   r/   rt   Zunittesttestr   Ztest.supportr   Ztest.support.os_helperr   r    ZTestCaser   rL   rz   r   r   r   r   r   rI   mainr(   r(   r(   r)   <module>   s,   . N