
    <e?                        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ej                  Z G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d de          Zedk    r ej                     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                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	Test_MultibyteCodecc                    t           D ]x}|                     d                    |          d           |                     t          d|          d           |                     d                    |          d           yd S )N     )ALL_CJKENCODINGSassertEqualdecodestrencodeselfencs     //usr/lib/python3.11/test/test_multibytecodec.pytest_nullcodingz#Test_MultibyteCodec.test_nullcoding#   s|    # 	2 	2CSZZ__b111Sc]]B///RYYs^^S1111	2 	2r!   c                 l    t           D ]+}|                     d                    |          d           ,d S )Nabcd   abcd)r#   r$   r'   r(   s     r+   test_str_decodez#Test_MultibyteCodec.test_str_decode)   s@    # 	: 	:CV]]3//9999	: 	:r!   c                     t          j        d          }d }t          j        d|           |                     t          |dd           d S )Nzeuc-krc                 $    dt           j        dz   fS )Nr"      )sysmaxsize)excs    r+   <lambda>zBTest_MultibyteCodec.test_errorcallback_longindex.<locals>.<lambda>/   s    "ck!m!4 r!   ztest.cjktests   applehamspam)codecs
getdecoderregister_errorassertRaises
IndexError)r)   dec	myreplaces      r+   test_errorcallback_longindexz0Test_MultibyteCodec.test_errorcallback_longindex-   s]    ))44	ni888*c1>	C 	C 	C 	C 	Cr!   c                     d}t          j        dt           j                   t          D ],}|                     |                    |d          d           -d S )Nu,  ztest.ignorer!   )r8   r:   ignore_errorsr#   r$   r'   )r)   datar*   s      r+    test_errorcallback_custom_ignorez4Test_MultibyteCodec.test_errorcallback_custom_ignore4   sa    mV-ABBB# 	C 	CCT[[m<<cBBBB	C 	Cr!   c                     	 t           D ]&}d                    |          }t          |           '	 t          j        t
                     d S # t          j        t
                     w xY w)Nz# coding: {}
)r#   formatexecr   unlinkr   )r)   r*   codes      r+   test_codingspecz#Test_MultibyteCodec.test_codingspec;   sk    	%'  '..s33T



 V$$$$$IV$$$$s   .A A'c                     |                      t          t          j        d            |                      t          t          j        d            d S N)r;   AttributeError_multibytecodecMultibyteStreamReaderMultibyteStreamWriterr)   s    r+   test_init_segfaultz&Test_MultibyteCodec.test_init_segfaultC   sX    .)?	G 	G 	G.)?	G 	G 	G 	G 	Gr!   c                 v    t           D ]0}|                     t          t          j        |          d           1d S Nr"   )r#   r;   	TypeErrorr8   r9   r(   s     r+   test_decode_unicodez'Test_MultibyteCodec.test_decode_unicodeJ   sE    # 	E 	ECi):3)?)?DDDD	E 	Er!   N)
__name__
__module____qualname__r,   r0   r?   rC   rI   rQ   rU    r!   r+   r   r   !   s        2 2 2: : :C C CC C C% % %G G GE E E E Er!   r   c                   d    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej        d
             ZdS )Test_IncrementalEncoderc                 |    t          j        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r8   getincrementalencoderr$   r'   resetr)   encoders     r+   test_statelessz&Test_IncrementalEncoder.test_statelessQ   s   7&.w7799(IJJE	G 	G 	G$///(<dCC4	6 	6 	6$///D113777E22C888$/////r!   c                 $    t          j        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"   r]   r`   s     r+   test_statefulz%Test_IncrementalEncoder.test_stateful^   sV    ;&.z::<<77EEE11377711;???$77EEE$///11;???113777D11;???D11377777r!   c                     t          j        d                      }|                     |                    d          d           |                     t
          |j        d           |                     |                    d          d           |                     t
          |j        d           |                     |                                d            |                     |                    d          d           |                     |                    d          d           |                     t
          |j        d           |                     |                    d	d
          d           d S )Nrd   rg   r!   u   ģu   ̀ærf   rh   rj   r"   Tri   )r8   r^   r$   r'   r;   UnicodeEncodeErrorr_   r`   s     r+   test_stateful_keep_bufferz1Test_IncrementalEncoder.test_stateful_keep_bufferq   s;   :&.z::<<113777,gnhGGG77EEE,gnhGGG$///11;???113777,gnhGGGD11;?????r!   c                 |    t          j        d                      }|                                }|                     |                    d          d           |                    |           |                     |                    d          d           |                     |                    d          d           |                                }|                     |                    d          d           |                    |           |                     |                    d          d           d S )Nr   re   rf   rg   r!   rh   )r8   r^   getstater$   r'   setstate)r)   ra   initial_statepartial_states       r+   $test_state_methods_with_buffer_statez<Test_IncrementalEncoder.test_state_methods_with_buffer_state}   s   >&.~>>@@((**77EEE'''77EEE113777((**11;???'''11;?????r!   c                 |    t          j        d                      }|                     |                    d          d           |                                }|                     |                    d          d           |                                }|                     |                    d          d           |                    |           |                     |                    d          d           |                    |           |                     |                    d          d           d S )Nr   z   z   あs   $B$"s   (Bzs   $")r8   r^   r$   r'   rp   rq   )r)   ra   en_statejp_states       r+   (test_state_methods_with_non_buffer_statez@Test_IncrementalEncoder.test_state_methods_with_non_buffer_state   s   <&.|<<>>,,d333##%%113JKKK##%%,,.>???"""11;???""",,d33333r!   c                     t          j        d                      }|                     |                                d           |                    d           |                     |                                t
                              dd                     |                    d           |                     |                                d            t          j        d                      }|                     |                                t
                              dd                     |                    d	           |                     |                                t
                              d
d                     d S )Nr   r   rg   s   æ        littlerh   r   s	    BB      rx   s	    B      )r8   r^   r$   rp   r'   int
from_bytes)r)   buffer_state_encodernon_buffer_state_encoders      r+   $test_getstate_returns_expected_valuez<Test_IncrementalEncoder.test_getstate_returns_expected_value   s     Lv;NKKMM-6688!<<<##H----6688A &	' '	( 	( 	( 	##H----6688!<<< $N6#?#M#M#O#O 1::<<A%' '	( 	( 	(
 	!''1111::<<A%' '	( 	( 	( 	( 	(r!   c                      t          j        d                      }t                              dd          }|                     t
          |j        |           d S )Nr   s   	                r}   )r8   r^   r~   r   r;   UnicodeErrorrq   )r)   ra   pending_size_nines      r+   "test_setstate_validates_input_sizez:Test_IncrementalEncoder.test_setstate_validates_input_size   s\    8&.x88::NN0 	 
 	,(8:KLLLLLr!   c                      t          j        d                      }t                              dd          }|                     t
          |j        |           d S )Nr   s
           r}   )r8   r^   r~   r   r;   UnicodeDecodeErrorrq   )r)   ra   invalid_utf8s      r+   #test_setstate_validates_input_bytesz;Test_IncrementalEncoder.test_setstate_validates_input_bytes   s[    8&.x88::~~0 	 
 	,g.>MMMMMr!   c                      t          j        d          d          }|                     |                    d          d           |                     |                    d          d           d S )Nz	shift-jisbackslashreplace   ÿs   \xff
   
)r8   r^   r$   r'   r`   s     r+   test_issue5640z&Test_IncrementalEncoder.test_issue5640   sg    ;&.{;;<NOO//:::--u55555r!   c                     dd l }d}d}t          j        d          ||fz  }|                    |          }|                     |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dedentrun_in_subinterpr$   )r)   r   encodingtextrH   ress         r+   test_subinterpz&Test_IncrementalEncoder.test_subinterp   sp     	V     $  ((..a     r!   N)rV   rW   rX   rb   rk   rn   rt   r{   r   r   r   r   r   cpython_onlyr   rY   r!   r+   r[   r[   O   s        0 0 08 8 8&
@ 
@ 
@@ @ @4 4 4"( ( (@M M MN N N6 6 6
 ! ! ! ! !r!   r[   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Test_IncrementalDecoderc                 4    t          j        d                      }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           d S )Nr   s   ̽u   파이s    u
   썬 마을r!   r"   )r8   getincrementaldecoderr$   r%   r)   decoders     r+   	test_dbcsz!Test_IncrementalDecoder.test_dbcs   s    7&.w7799(?@@'	) 	) 	)(@AA.	0 	0 	0,,b11111r!   c                     t          j        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   ̽)r8   r   r$   r%   r;   r   r   s     r+   test_dbcs_keep_bufferz-Test_IncrementalDecoder.test_dbcs_keep_buffer   s    7&.w779988(CCC,gnc4HHH00(;;;88(CCC,gn%t	- 	- 	-00(;;;;;r!   c                     t          j        d                      }d}|                     |                    |dz             d           |                     |                    dd          d           |                     |                    |dz             d           |                     |                    d          d	           |                     |                    d
          d	           |                     |                    dd          d	           |                     |                                d            |                     |                    d          d           |                     |                    |dz             d           |                     t          |j        dd           |                     |                    d          d	           d S )Nz
iso2022-jp      (r"      BT   $s   B@$u   世s   @$@s   @$z@$r!   )r8   r   r$   r%   r_   r;   r   )r)   r   ESCs      r+   test_iso2022z$Test_IncrementalDecoder.test_iso2022   s   <&.|<<>>d
33R888d33R888d
33R888//::://:::d33X>>>$///..555d
33R888,gnc4HHH//:::::r!   c                     t           D ]?} t          j        |                      }|                     t          |j        d           @d S rS   )r#   r8   r   r;   rT   r%   )r)   r*   r   s      r+   rU   z+Test_IncrementalDecoder.test_decode_unicode  sP    # 	= 	=C7f237799Gi<<<<	= 	=r!   c                     t          j        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[)r8   r   r$   r%   rp   rq   )r)   r   pending1_pending2flags2pending3pending4s           r+   test_state_methodsz*Test_IncrementalDecoder.test_state_methods  s   8&.x88:: 	44h???&&((!3''' 	00"555"++--&7+++ 	00(;;;&&((!3''' 	(F+,,,00(;;;&&((!3''' 	,---))++-@AAAAAr!   c                 F    t          j        d                      }|                     t          |j        d           |                     t          |j        d           |                     t          |j        d           |                     t
          |j        d           d S )Nr   {   )invalidr   )s   1234r   )s	   123456789r   )r8   r   r;   rT   rq   r   r   s     r+   test_setstate_validates_inputz5Test_IncrementalDecoder.test_setstate_validates_input-  s    8&.x88::)W%5s;;;)W%5~FFF)W%57KLLL,(8:KLLLLLr!   N)	rV   rW   rX   r   r   r   rU   r   r   rY   r!   r+   r   r      sv        2 2 2	< 	< 	<; ; ;= = =B B B8M M M M Mr!   r   c                       e Zd Zd ZdS )Test_StreamReaderc                     	 t          t          d          }	 |                    d           |                                 n# |                                 w xY wt	          j         t          d          }	 |                     t          |j        d           |                                 n# |                                 w xY w	 t          j	        t                     d S # t          j	        t                     w xY w)Nwb   r   )r      )
openr   writecloser8   r;   r   readr   rG   )r)   fs     r+   test_bug1728403z!Test_StreamReader.test_bug17284035  s    	%VT""A   								FW555A!!"4afa@@@									V$$$$$IV$$$$s9   C" A C" AC" 7!B- C" -CC" "C=N)rV   rW   rX   r   rY   r!   r+   r   r   4  s#        % % % % %r!   r   c                        e Zd Zd Zd Zd ZdS )Test_StreamWriterc                    t          j                    } t          j        d          |          }|                    d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           d S )Nr   123   123   𒍅s   12379   가¬s   123797501ioBytesIOr8   	getwriterr   r$   getvaluer)   scs      r+   test_gb18030zTest_StreamWriter.test_gb18030E  s    :<<'FY''**	v...	'7888	4	6 	6 	6 	6 	6r!   c                    t          j                    } t          j        d          |          }|                    d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           d S )Nzutf-8r   r   r   s   123𒍅r   s   123𒍅가¬r   r   s      r+   
test_utf_8zTest_StreamWriter.test_utf_8P  s    :<<%FW%%a((	v...	'=>>>	$	% 	% 	% 	% 	%r!   c                     t          j                    } t          j        d          |          }|                    d           |                     |                                d           d S )Nr   r.   r/   r   )r)   r   wrs      r+   test_streamwriter_strwritez,Test_StreamWriter.test_streamwriter_strwrite\  s]    JLL(Vi((++
w/////r!   N)rV   rW   rX   r   r   r   rY   r!   r+   r   r   D  sA        	6 	6 	6
% 
% 
%0 0 0 0 0r!   r   c                        e Zd Zd Zd Zd ZdS )Test_ISO2022c                 `    d}d}|                      |                    d          |           d S )Ns   (B:hu4:unit.ANi de familleu   :hu4:unité de familleziso2022-jp-2)r$   r%   )r)   
iso2022jp2unis      r+   test_g2zTest_ISO2022.test_g2c  s6    >
(**>::C@@@@@r!   c                     |                      dd                    d                     dD ]C}d                    |          }|                     t          d |D                                  Dd S )N      ­ziso-2022-jp-2)ziso-2022-jp-2004ziso-2022-jp-3u   㐆c              3   "   K   | ]
}|d k    V  dS )   NrY   ).0xs     r+   	<genexpr>z2Test_ISO2022.test_iso2022_jp_g0.<locals>.<genexpr>l  s&       5 5aT 5 5 5 5 5 5r!   )assertNotInr'   assertFalseany)r)   r   es      r+   test_iso2022_jp_g0zTest_ISO2022.test_iso2022_jp_g0h  s    "3":":?"K"KLLL= 	7 	7H))AS 5 51 5 5 5556666	7 	7r!   c                 r    t          dd          D ]%}t          |                              dd           &d S )Ni   i   iso_2022_jpignore)rangechrr'   )r)   r   s     r+   test_bug1572832zTest_ISO2022.test_bug1572832n  sB    w)) 	3 	3AFFMM-2222	3 	3r!   N)rV   rW   rX   r   r   r   rY   r!   r+   r   r   b  sD        A A A
7 7 73 3 3 3 3r!   r   c                   :    e Zd ZdZdZdZdZeez   Zd Zd Z	d Z
dS )	TestStatefulu   世世ziso-2022-jps   $B@$@$s   (Bc                 v    |                      | j                            | j                  | j                   d S rK   )r$   r   r'   r   expected_resetrP   s    r+   test_encodezTestStateful.test_encodez  s3    ))$-88$:MNNNNNr!   c                     t          j        | j                              d                    fd| j        D                       }|                     || j                   |                                         dd          | j                   |                                         dd          d           d S )Nr!   c              3   B   K   | ]}                     |          V  d S rK   r'   )r   charra   s     r+   r   z7TestStateful.test_incrementalencoder.<locals>.<genexpr>  sC       # # NN4  # # # # # #r!   r"   Tfinal)	r8   r^   r   joinr   r$   expectedr'   r_   )r)   outputra   s     @r+   test_incrementalencoderz$TestStateful.test_incrementalencoder}  s    =&.t}==?? # # # #	# # # # # 	///$77DDD$77=====r!   c                 n    t          j        | j                              t          | j                  dz
  d                    fdt          | j                  D                       }|                     || j                   |                     	                    dd          d           d S )Nr3   r!   c              3   R   K   | ]!\  }}                     ||k              V  "d S rK   r   )r   indexr   ra   
last_indexs      r+   r   z=TestStateful.test_incrementalencoder_final.<locals>.<genexpr>  sN       5 5t NN4*!4555 5 5 5 5 5r!   r"   Tr   )
r8   r^   r   lenr   r   	enumerater$   r   r'   )r)   r  ra   r  s     @@r+   test_incrementalencoder_finalz*TestStateful.test_incrementalencoder_final  s    =&.t}==??^^a'
 5 5 5 5 5(335 5 5 5 5 	!4555$77=====r!   N)rV   rW   rX   r   r   r  r_   r   r   r  r
  rY   r!   r+   r   r   s  sb        DHHE%NO O O> > >> > > > >r!   r   c                   (    e Zd ZdZdZdZdZeez   ZdS )TestHZStatefulu   聊聊r	   s   ~{ADADs   ~}N)rV   rW   rX   r   r   r  r_   r   rY   r!   r+   r  r    s,        DHHE%NNNr!   r  __main__)rM   r8   r   r4   r   unittesttestr   test.supportr   test.support.os_helperr   r#   TestCaser   r[   r   r   r   r   r   r  rV   mainrY   r!   r+   <module>r     s6        				 



         " " " " " " ) ) ) ) ) )   ",E ,E ,E ,E ,E(+ ,E ,E ,E\U! U! U! U! U!h/ U! U! U!nLM LM LM LM LMh/ LM LM LM\% % % % %) % % % 0 0 0 0 0) 0 0 0<3 3 3 3 38$ 3 3 3"> > > > >8$ > > >8& & & & &\ & & & zHMOOOOO r!   