B
    u9aB(                 @   s  d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlZdddddd	d
dddddddddddddddddg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d,d- Zed.kre  dS )/    )support)TESTFNN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   sH   xBt D ]:}| d|d | td|d | d|d qW d S )N     )ALL_CJKENCODINGSassertEqualdecodestrencode)selfenc r&   )/usr/lib/python3.7/test_multibytecodec.pytest_nullcoding   s    
z#Test_MultibyteCodec.test_nullcodingc             C   s$   xt D ]}| d|d qW d S )Nabcds   abcd)r   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>*   r   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   s8   d}t dt j x tD ]}| ||dd qW d S )Nu,  ztest.ignorer   )r0   r2   ignore_errorsr   r    r#   )r$   datar%   r&   r&   r'    test_errorcallback_custom_ignore/   s    
z4Test_MultibyteCodec.test_errorcallback_custom_ignorec          	   C   s6   z$xt D ]}d|}t| qW W d tt X d S )Nz# coding: {}
)r   formatexecr   unlinkr   )r$   r%   coder&   r&   r'   test_codingspec6   s
    

z#Test_MultibyteCodec.test_codingspecc             C   s$   |  ttjd  |  ttjd  d S )N)r3   AttributeError_multibytecodecZMultibyteStreamReaderZMultibyteStreamWriter)r$   r&   r&   r'   test_init_segfault>   s    
z&Test_MultibyteCodec.test_init_segfaultc             C   s&   x t D ]}| tt|d qW d S )Nr   )r   r3   	TypeErrorr0   r1   )r$   r%   r&   r&   r'   test_decode_unicodeE   s    
z'Test_MultibyteCodec.test_decode_unicodeN)
__name__
__module____qualname__r(   r*   r5   r8   r=   r@   rB   r&   r&   r&   r'   r      s   r   c               @   s,   e Zd Zdd Zdd Zdd Z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)r0   getincrementalencoderr    r#   reset)r$   encoderr&   r&   r'   test_statelessL   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jisx0213u   æ̀s      ær   u   ̀Ts   s   r   )r0   rG   r    r#   rH   )r$   rI   r&   r&   r'   test_statefulY   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 )NrK   rL   r   u   ģu   ̀æs   u   ̀s   r   Ts   )r0   rG   r    r#   r3   UnicodeEncodeErrorrH   )r$   rI   r&   r&   r'   test_stateful_keep_bufferl   s    z1Test_IncrementalEncoder.test_stateful_keep_bufferc             C   s6   t dd}| |dd | |dd d S )Nz	shift-jisbackslashreplace   ÿs   \xff
   
)r0   rG   r    r#   )r$   rI   r&   r&   r'   test_issue5640x   s    z&Test_IncrementalEncoder.test_issue5640N)rC   rD   rE   rJ   rM   rO   rT   r&   r&   r&   r'   rF   J   s   rF   c               @   s,   e Z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   )r0   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   ̽)r0   rV   r    r!   r3   UnicodeDecodeError)r$   rW   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   )r0   rV   r    r!   rH   r3   rZ   )r$   rW   ZESCr&   r&   r'   test_iso2022   s    z$Test_IncrementalDecoder.test_iso2022c             C   s.   x(t D ] }t| }| t|jd qW d S )Nr   )r   r0   rV   r3   rA   r!   )r$   r%   rW   r&   r&   r'   rB      s    
z+Test_IncrementalDecoder.test_decode_unicodeN)rC   rD   rE   rX   r[   r`   rB   r&   r&   r&   r'   rU   }   s   	rU   c               @   s   e Zd Zdd ZdS )Test_StreamReaderc          	   C   sh   zVt td}z|d W d |  X tj tdd}z| t|jd W d |  X W d t	t X d S )Nwb   r   )encoding   )
openr   writecloser0   r3   rZ   readr   r;   )r$   fr&   r&   r'   test_bug1728403   s    

z!Test_StreamReader.test_bug1728403N)rC   rD   rE   rk   r&   r&   r&   r'   ra      s   ra   c               @   s$   e Zd Zdd Zdd Zdd ZdS )Test_StreamWriterc             C   sh   t  }td|}|d | | d |d | | d |d | | d d S )Nr   123s   123u   𒍅s   12379u   가¬s   123797501)ioBytesIOr0   	getwriterrg   r    getvalue)r$   scr&   r&   r'   test_gb18030   s    



zTest_StreamWriter.test_gb18030c             C   sh   t  }td|}|d | | d |d | | d |d | | d d S )Nzutf-8rm   s   123u   𒍅s   123𒍅u   가¬s   123𒍅가¬)rn   ro   r0   rp   rg   r    rq   )r$   rr   rs   r&   r&   r'   
test_utf_8   s    



zTest_StreamWriter.test_utf_8c             C   s4   t  }td|}|d | | d d S )Nr   r)   s   abcd)rn   ro   r0   rp   rg   r    rq   )r$   rr   Zwrr&   r&   r'   test_streamwriter_strwrite   s    
z,Test_StreamWriter.test_streamwriter_strwriteN)rC   rD   rE   rt   ru   rv   r&   r&   r&   r'   rl      s   rl   c               @   s$   e Zd Zdd Zdd Zdd ZdS )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_g2   s    zTest_ISO2022.test_g2c             C   sF   |  ddd x.dD ]&}d|}| tdd |D  qW 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>   s    z2Test_ISO2022.test_iso2022_jp_g0.<locals>.<genexpr>)ZassertNotInr#   ZassertFalseany)r$   rd   er&   r&   r'   test_iso2022_jp_g0   s    

zTest_ISO2022.test_iso2022_jp_g0c             C   s(   x"t ddD ]}t|dd qW d S )Ni   i   iso_2022_jpignore)rangechrr#   )r$   r}   r&   r&   r'   test_bug1572832   s    zTest_ISO2022.test_bug1572832N)rC   rD   rE   rx   r   r   r&   r&   r&   r'   rw      s   rw   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 )N)r    textr#   rd   expected_reset)r$   r&   r&   r'   test_encode   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 )N)r#   )r|   char)rI   r&   r'   r~      s   z7TestStateful.test_incrementalencoder.<locals>.<genexpr>r   T)final)	r0   rG   rd   joinr   r    expectedr#   rH   )r$   outputr&   )rI   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 )N)r#   )r|   indexr   )rI   
last_indexr&   r'   r~      s   z=TestStateful.test_incrementalencoder_final.<locals>.<genexpr>r   T)r   )
r0   rG   rd   lenr   r   	enumerater    r   r#   )r$   r   r&   )rI   r   r'   test_incrementalencoder_final   s    z*TestStateful.test_incrementalencoder_finalN)rC   rD   rE   r   rd   r   rH   r   r   r   r   r&   r&   r&   r'   r      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)rC   rD   rE   r   rd   r   rH   r   r&   r&   r&   r'   r     s
   r   c               C   s   t t d S )N)r   Zrun_unittestrC   r&   r&   r&   r'   	test_main
  s    r   __main__)Ztestr   Ztest.supportr   Zunittestrn   r0   r,   r?   r   ZTestCaser   rF   rU   ra   rl   rw   r   r   r   rC   r&   r&   r&   r'   <module>   s,    

.3+
