
    daf,?                        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.                          yy)    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                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	Test_MultibyteCodecc                     t         D ]`  }| j                  dj                  |      d       | j                  t        d|      d       | j                  dj	                  |      d       b y )N     )ALL_CJKENCODINGSassertEqualdecodestrencodeselfencs     3/root/Python-3.12.4/Lib/test/test_multibytecodec.pytest_nullcodingz#Test_MultibyteCodec.test_nullcoding#   sW    # 	2CSZZ_b1Sc]B/RYYs^S1	2r!   c                 \    t         D ]#  }| j                  dj                  |      d       % y )Nabcd   abcd)r#   r$   r'   r(   s     r+   test_str_decodez#Test_MultibyteCodec.test_str_decode)   s*    # 	:CV]]3/9	:r!   c                     t        j                  d      }d }t        j                  d|       | j                  t        |dd       y )Nzeuc-krc                 ,    dt         j                  dz   fS )Nr"      )sysmaxsize)excs    r+   <lambda>zBTest_MultibyteCodec.test_errorcallback_longindex.<locals>.<lambda>/   s    "ckk!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	ni8*c1>	Cr!   c                     d}t        j                  dt         j                         t        D ]$  }| j	                  |j                  |d      d       & y )Nu,  ztest.ignorer!   )r8   r:   ignore_errorsr#   r$   r'   )r)   datar*   s      r+    test_errorcallback_custom_ignorez4Test_MultibyteCodec.test_errorcallback_custom_ignore4   sI    mV-A-AB# 	CCT[[m<cB	Cr!   c                     	 t         D ]  }dj                  |      }t        |         	 t        j                  t
               y # t        j                  t
               w xY w)Nz# coding: {}
)r#   formatexecr   unlinkr   )r)   r*   codes      r+   test_codingspecz#Test_MultibyteCodec.test_codingspec;   sL    	%' '..s3T
 V$IV$s   'A Ac                     | j                  t        t        j                  d        | j                  t        t        j                  d        y N)r;   AttributeError_multibytecodecMultibyteStreamReaderMultibyteStreamWriterr)   s    r+   test_init_segfaultz&Test_MultibyteCodec.test_init_segfaultC   s:    .)??	G.)??	Gr!   c                 n    t         D ],  }| j                  t        t        j                  |      d       . y Nr"   )r#   r;   	TypeErrorr8   r9   r(   s     r+   test_decode_unicodez'Test_MultibyteCodec.test_decode_unicodeJ   s0    # 	ECi):):3)?D	Er!   N)
__name__
__module____qualname__r,   r0   r?   rC   rI   rQ   rU    r!   r+   r   r   !   s)    2:CC%GEr!   r   c                   f    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y)Test_IncrementalEncoderc                     t        j                  d             }| j                  |j                  d      d       | j                  |j	                         d        | j                  |j                  dd      d       | j                  |j	                         d        | j                  |j                  dd      d       | j                  |j                  dd	      d       | j                  |j	                         d        y )
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9(IJE	G$/(<dC4	6$/D137E2C8$/r!   c                     t        j                  d             }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j	                         d        | j                  |j                  d      d	       | j                  |j                  d      d       | j                  |j                  d
d      d       | j                  |j                  d
d      d       y )Njisx0213   æ̀      ær!      ̀T      r"   r]   r`   s     r+   test_statefulz%Test_IncrementalEncoder.test_stateful^   s     ;&..z:<7E1371;?$7E$/1;?137D1;?D137r!   c                     t        j                  d             }| j                  |j                  d      d       | j	                  t
        |j                  d       | j                  |j                  d      d       | j	                  t
        |j                  d       | j                  |j                         d        | j                  |j                  d      d       | j                  |j                  d      d       | j	                  t
        |j                  d       | j                  |j                  d	d
      d       y )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:<137,gnnhG7E,gnnhG$/1;?137,gnnhGD1;?r!   c                     t        j                  d             }|j                         }| j                  |j	                  d      d       |j                  |       | j                  |j	                  d      d       | j                  |j	                  d      d       |j                         }| j                  |j	                  d      d       |j                  |       | j                  |j	                  d      d       y )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E'7E137((*1;?'1;?r!   c                     t        j                  d             }| j                  |j                  d      d       |j	                         }| j                  |j                  d      d       |j	                         }| j                  |j                  d      d       |j                  |       | j                  |j                  d      d       |j                  |       | j                  |j                  d      d       y )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##%13JK##%,.>?"1;?",d3r!   c                     t        j                  d             }| j                  |j                         d       |j	                  d       | j                  |j                         t
        j                  dd             |j	                  d       | j                  |j                         d        t        j                  d             }| j                  |j                         t
        j                  dd             |j	                  d	       | j                  |j                         t
        j                  d
d             y )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M-668!<##H--668A &	'	( 	##H--668!< $N6#?#?#M#O 1::<A%'	(
 	!''11::<A%'	(r!   c                      t        j                  d             }t        j                  dd      }| j	                  t
        |j                  |       y )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   sK    8&..x8:NN0 	
 	,(8(8:KLr!   c                      t        j                  d             }t        j                  dd      }| j	                  t
        |j                  |       y )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   sJ    8&..x8:~~0 	
 	,g.>.>Mr!   c                      t        j                  d      d      }| j                  |j                  d      d       | j                  |j                  d      d       y )Nz	shift-jisbackslashreplace   ÿs   \xff
   
)r8   r^   r$   r'   r`   s     r+   test_issue5640z&Test_IncrementalEncoder.test_issue5640   sL    ;&..{;<NO/:-u5r!   c                     dd l }d}d}t        j                  d      ||fz  }|j                  |      }| j	                  |d       y )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   sU     	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   sN    08&
@@4"(@MN6
 ! !r!   r[   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Test_IncrementalDecoderc                      t        j                  d             }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       y )Nr   s   ̽u   파이s    u
   썬 마을r!   r"   )r8   getincrementaldecoderr$   r%   r)   decoders     r+   	test_dbcsz!Test_IncrementalDecoder.test_dbcs   sj    7&..w79(?@'	)(@A.	0,b1r!   c                     t        j                  d             }| j                  |j                  d      d       | j	                  t
        |j                  dd       | j                  |j                  d      d       | j                  |j                  d      d       | j	                  t
        |j                  dd       | j                  |j                  d      d       y )	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98(C,gnnc4H0(;8(C,gnn%t	-0(;r!   c                 (    t        j                  d             }d}| j                  |j                  |dz         d       | j                  |j                  dd      d       | j                  |j                  |dz         d       | j                  |j                  d      d	       | j                  |j                  d
      d	       | j                  |j                  dd      d	       | j                  |j	                         d        | j                  |j                  d      d       | j                  |j                  |dz         d       | j                  t        |j                  dd       | j                  |j                  d      d	       y )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
3R8d3R8d
3R8/:/:d3X>$/.5d
3R8,gnnc4H/:r!   c                     t         D ]=  } t        j                  |             }| j                  t        |j
                  d       ? y rS   )r#   r8   r   r;   rT   r%   )r)   r*   r   s      r+   rU   z+Test_IncrementalDecoder.test_decode_unicode  s<    # 	=C7f22379Gi<	=r!   c                     t        j                  d             }| j                  |j                  d      d       |j	                         \  }}| j                  |d       | j                  |j                  d      d       |j	                         \  }}| j                  |d       | j                  |j                  d      d       |j	                         \  }}| j                  |d       |j                  ||f       | j                  |j                  d      d       |j	                         \  }}| j                  |d       |j                  d       | j                  |j	                         d       y )	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  sJ   8&..x8: 	4h?&&(!3' 	0"5"++-&7+ 	0(;&&(!3' 	(F+,0(;&&(!3' 	,-))+-@Ar!   c                 @    t        j                  d             }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t
        |j                  d       y )Nr   {   )invalidr   )s   1234r   )s	   123456789r   )r8   r   r;   rT   rq   r   r   s     r+   test_setstate_validates_inputz5Test_IncrementalDecoder.test_setstate_validates_input-  sy    8&..x8:)W%5%5s;)W%5%5~F)W%5%57KL,(8(8:KLr!   N)	rV   rW   rX   r   r   r   rU   r   r   rY   r!   r+   r   r      s"    2	<;=B8Mr!   r   c                       e Zd Zd Zy)Test_StreamReaderc                    	 t        t        d      }	 |j                  d       |j                          t	        j                   t        d      }	 | j                  t        |j                  d       |j                          	 t        j                  t               y # |j                          w xY w# |j                          w xY w# 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5A!!"4affa@	V$ 	
 	V$s9   C B +C !B1 1C B..C 1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y)Test_StreamWriterc                    t        j                         } t        j                  d      |      }|j	                  d       | j                  |j                         d       |j	                  d       | j                  |j                         d       |j	                  d       | j                  |j                         d       y )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	4	6r!   c                    t        j                         } t        j                  d      |      }|j	                  d       | j                  |j                         d       |j	                  d       | j                  |j                         d       |j	                  d       | j                  |j                         d       y )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      |      }|j	                  d       | j                  |j                         d       y )Nr   r.   r/   r   )r)   r   wrs      r+   test_streamwriter_strwritez,Test_StreamWriter.test_streamwriter_strwrite\  sF    JJL(Vi(+
w/r!   N)rV   rW   rX   r   r   r   rY   r!   r+   r   r   D  s    	6
%0r!   r   c                   H    e Zd Zd Zd Z ej                  d      d        Zy)Test_ISO2022c                 N    d}d}| j                  |j                  d      |       y )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  s'    >
(**>:C@r!   c                     | j                  ddj                  d             dD ]4  }dj                  |      }| j                  t        d |D                     6 y )N      ­ziso-2022-jp-2)ziso-2022-jp-2004ziso-2022-jp-3u   㐆c              3   &   K   | ]	  }|d kD    yw)   NrY   ).0xs     r+   	<genexpr>z2Test_ISO2022.test_iso2022_jp_g0.<locals>.<genexpr>l  s      5aT 5s   )assertNotInr'   assertFalseany)r)   r   es      r+   test_iso2022_jp_g0zTest_ISO2022.test_iso2022_jp_g0h  sT    "3":":?"KL= 	7H)AS 51 556	7r!   cpuc                 \    t        dd      D ]  }t        |      j                  dd        y )Ni   i   iso_2022_jpignore)rangechrr'   )r)   r   s     r+   test_bug1572832zTest_ISO2022.test_bug1572832n  s*    w) 	3AFMM-2	3r!   N)rV   rW   rX   r   r   r   requires_resourcer   rY   r!   r+   r   r   b  s.    A
7 Wu%3 &3r!   r   c                   8    e Zd ZdZdZdZdZeez   Zd Zd Z	d Z
y)	TestStatefulu   世世ziso-2022-jps   $B@$@$s   (Bc                     | j                  | j                  j                  | j                        | j                         y rK   )r$   r   r'   r   expected_resetrP   s    r+   test_encodezTestStateful.test_encode{  s+    ))$--8$:M:MNr!   c                 n    t        j                  | j                               dj                  fd| j                  D              }| j                  || j                         | j                  j                  dd      | j                         | j                  j                  dd      d       y )Nr!   c              3   @   K   | ]  }j                  |        y wrK   r'   )r   charra   s     r+   r   z7TestStateful.test_incrementalencoder.<locals>.<genexpr>  s"      # NN4 #s   r"   Tfinal)	r8   r^   r   joinr   r$   expectedr'   r_   )r)   outputra   s     @r+   test_incrementalencoderz$TestStateful.test_incrementalencoder~  s    =&..t}}=? #		# # 	/$7D$7=r!   c                 Z    t        j                  | j                               t        | j                        dz
  dj                  fdt        | j                        D              }| j                  || j                         | j                  j                  dd      d       y )Nr3   r!   c              3   N   K   | ]  \  }}j                  ||k(          y wrK   r   )r   indexr   ra   
last_indexs      r+   r   z=TestStateful.test_incrementalencoder_final.<locals>.<genexpr>  s-      5t NN4*!455s   "%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(35 5 	!4!45$7=r!   N)rV   rW   rX   r   r   r  r_   r   r   r  r  rY   r!   r+   r   r   t  s0    DHHE%NO>>r!   r   c                   &    e Zd ZdZdZdZdZeez   Zy)TestHZStatefulu   聊聊r	   s   ~{ADADs   ~}N)rV   rW   rX   r   r   r  r_   r   rY   r!   r+   r  r    s     DHHE%Nr!   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     s      	 
    " ) ",E(++ ,E\U!h// U!nLMh// LM\%)) % 0)) 0<38$$ 3$>8$$ >8&\ & zHMMO r!   