a
    äzeï}  ã                   @   sò   d dl Z d dlmZ d dlZd dlZd dlZd dlZG dd„ dƒZG dd„ dƒZ	G dd„ dƒZ
G d	d
„ d
e
e	e jƒZG dd„ dƒZG dd„ de
e	ee jƒZG dd„ dee jƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZedkrîe  ¡  dS )é    N)Úsupportc                   @   s    e Zd Zdd„ Zdd„ ZeZdS )ÚIntLikec                 C   s
   || _ d S ©N©Z_num)ÚselfÚnum© r   ú(/usr/lib/python3.9/test/test_memoryio.pyÚ__init__   s    zIntLike.__init__c                 C   s   | j S r   r   ©r   r   r   r	   Ú	__index__   s    zIntLike.__index__N)Ú__name__Ú
__module__Ú__qualname__r
   r   Ú__int__r   r   r   r	   r      s   r   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚMemorySeekTestMixinc                 C   s   |   d¡}|  |¡}d S ©NÚ
1234567890)ÚbuftypeÚioclass©r   ÚbufZbytesIor   r   r	   ÚtestInit   s    
zMemorySeekTestMixin.testInitc                 C   sx   |   d¡}|  |¡}|  |d d… | d¡¡ |  |dd… | d¡¡ |  |dd … | d¡¡ |  | j| ¡ ¡ d S )Nr   é   é   é   é„  ©r   r   ÚassertEqualÚreadÚEOFr   r   r   r	   ÚtestRead   s    

zMemorySeekTestMixin.testReadc                 C   s:   |   d¡}|  |¡}|  || ¡ ¡ |  | j| ¡ ¡ d S r   r   r   r   r   r	   ÚtestReadNoArgs$   s    

z"MemorySeekTestMixin.testReadNoArgsc                 C   sn   |   d¡}|  |¡}| d¡ | d¡ |  || ¡ ¡ | d¡ |  |dd … | ¡ ¡ |  t|jd¡ d S )Nr   r   r   é   ç        )r   r   r   Úseekr   ÚassertRaisesÚ	TypeErrorr   r   r   r	   ÚtestSeek+   s    




zMemorySeekTestMixin.testSeekc                 C   s\   |   d¡}|  |¡}|  d| ¡ ¡ | d¡ |  d| ¡ ¡ | d¡ |  d| ¡ ¡ d S ©Nr   r   r   i'  )r   r   r   Útellr%   r   r   r   r	   ÚtestTell7   s    



zMemorySeekTestMixin.testTellN)r   r   r   r   r!   r"   r(   r+   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	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dd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)S )*ÚMemoryTestMixinc                 C   s   |   ¡ }|  | j|j¡ d S r   )r   r&   ÚUnsupportedOperationÚdetach©r   r   r   r   r	   Útest_detachD   s    zMemoryTestMixin.test_detachc                 C   sÔ   |   | |dƒ¡d¡ |   | d¡d¡ |   | |dƒ¡d¡ |   | ¡ d¡ |   | d¡d¡ |   | ¡ d¡ |   | |dƒ¡d¡ |   | d¡d¡ |   | |dƒ¡d	¡ |   | d
¡d
¡ |   | ¡ d	¡ d S )Nzblah.r   r   zHello.é   z	 world


é	   Úhr   é   )r   Úwriter%   r*   Útruncate)r   ÚfÚtr   r   r	   Ú	write_opsH   s    zMemoryTestMixin.write_opsc                 C   sŠ   |   d¡}|  |¡}|  || j ¡ |  | ¡ |¡ |  ¡ }|  || j ¡ |  | ¡ |¡ |  t|jd ¡ | ¡  |  t	|j|   d¡¡ d S )Nzhello world
Ú )
r   r   r9   r   Úgetvaluer&   r'   r5   ÚcloseÚ
ValueError©r   r   Úmemior   r   r	   Ú
test_writeU   s    

zMemoryTestMixin.test_writec                 C   s¸   |   d¡}|  ¡ }|  | |gd ¡d ¡ |  | ¡ |d ¡ | g ¡ |  | ¡ |d ¡ |  ¡ }|  t|j|gdg ¡ |  | ¡ |¡ |  t|jd ¡ | ¡  |  t|jg ¡ d S )Nr   éd   r   )	r   r   r   Ú
writelinesr;   r&   r'   r<   r=   r>   r   r   r	   Útest_writelinesb   s    

zMemoryTestMixin.test_writelinesc                    s*   ˆ   ¡ }‡ fdd„}ˆ  t|j|ƒ ¡ d S )Nc                   3   s   ˆ   d¡V  t‚d S )NÚspam)r   ÚKeyboardInterruptr   r   r   r	   Ú	error_gens   s    z8MemoryTestMixin.test_writelines_error.<locals>.error_gen)r   r&   rE   rB   )r   r?   rF   r   r   r	   Útest_writelines_errorq   s    z%MemoryTestMixin.test_writelines_errorc                 C   sn  |   d¡}|  |¡}|  t|jd¡ |  t|jtdƒ¡ | d¡ |  | tdƒ¡d¡ |  | ¡ |d d… ¡ |  | ¡ d¡ |  | ¡ |d d… ¡ |  | d¡d¡ |  | ¡ |d d… ¡ |  | 	¡ d¡ | dd¡ | 
|¡ |  | ¡ |d d… | ¡ | 	¡ }|  | d ¡|¡ |  | 	¡ |¡ |  t|jd¡ | ¡  |  t|jd¡ |  t|jtdƒ¡ d S )	Nr   éÿÿÿÿr1   é   r   r   é   Ú0)r   r   r&   r=   r6   r   r%   r   r;   r*   r5   r'   r<   )r   r   r?   Úposr   r   r	   Útest_truncatey   s,    



zMemoryTestMixin.test_truncatec                 C   s   |   d¡}|  |¡}|  | ¡ |¡ |  d ¡}|  | ¡ | j¡ | |d ¡ |  | ¡ |d ¡ | |¡ |  | ¡ |¡ |  t|jg ¡ d S )Nr   rJ   )r   r   r   r;   r    r
   r&   r'   r>   r   r   r	   Ú	test_init’   s    



zMemoryTestMixin.test_initc                 C   sz  |   d¡}|  |¡}|  | d¡| j¡ |  | d¡|d d… ¡ |  | d¡|dd… ¡ |  | d¡|dd … ¡ |  | ¡ | j¡ | d¡ |  | tdƒ¡| j¡ |  | tdƒ¡|d d… ¡ |  | tdƒ¡|dd… ¡ |  | tdƒ¡|dd … ¡ | d¡ |  | ¡ |¡ |  | ¡ | j¡ |  | ¡ d¡ | d¡ |  | d¡|¡ | d¡ |  | tdƒ¡|¡ | d¡ |  t| ¡ ƒt|ƒ¡ | d	¡ |  t| ¡ ƒt|ƒ¡ | d¡ |  | d ¡|¡ |  	t
|jd
¡ | t|ƒd ¡ |  | d¡| j¡ | t|ƒd ¡ |  | tdƒ¡| j¡ | t|ƒd ¡ |  | ¡ | j¡ | ¡  |  	t|j¡ d S )Nr   r   r   r   r   r   é
   rH   rA   r:   )r   r   r   r   r    r%   r   r*   Útyper&   r'   Úlenr<   r=   r>   r   r   r	   Ú	test_readž   sF    








zMemoryTestMixin.test_readc                 C   s’  |   d¡}|  |d ¡}|  | d¡| j¡ |  | tdƒ¡| j¡ |  | ¡ |¡ |  | ¡ |¡ |  | ¡ | j¡ | d¡ |  | d¡|d d… ¡ |  | d¡|dd… ¡ |  | d¡|dd… ¡ | d¡ |  | tdƒ¡|d d… ¡ |  | tdƒ¡|dd… ¡ |  | tdƒ¡|dd… ¡ | d¡ |  | d¡|¡ | d¡ |  | tdƒ¡|¡ | d¡ |  | d¡| j¡ |  | tdƒ¡| j¡ | t|ƒd d ¡ |  | ¡ | j¡ |   d¡}|  |d	 d d… ¡}|  | ¡ |¡ |  | ¡ |¡ |  | ¡ |d d… ¡ |  | ¡ | j¡ | d¡ |  t| ¡ ƒt|ƒ¡ |  | ¡ |¡ |  	t
|jd
¡ | ¡  |  	t|j¡ d S )Nú1234567890
rJ   r   r   rO   é   rH   r   r#   r:   )r   r   r   Úreadliner    r   r%   rQ   rP   r&   r'   r<   r=   r>   r   r   r	   Útest_readlineÄ   sH    







zMemoryTestMixin.test_readlinec                 C   sZ  |   d¡}|  |d ¡}|  | ¡ |gd ¡ | d¡ |  | ¡ |dd … g|gd  ¡ | d¡ |  | d¡|gd ¡ | d¡ |  | d¡|gd ¡ | d¡ |  | d¡|gd ¡ | d¡ |  t| ¡ d ƒt|ƒ¡ | d¡ |  | d ¡|gd ¡ |  t|jd	¡ | t|ƒd d
 ¡ |  | ¡ g ¡ | 	¡  |  t
|j¡ d S )NrS   rO   r   r2   r   rT   rJ   rH   r:   r   )r   r   r   Ú	readlinesr%   rP   r&   r'   rQ   r<   r=   r>   r   r   r	   Útest_readlinesí   s(    

$




zMemoryTestMixin.test_readlinesc                 C   sü   |   d¡}|  |d ¡}|  t|ƒ|¡ |  t|dƒ¡ |  t|dƒ¡ d}|D ]}|  ||¡ |d7 }qP|  |d¡ | d¡ d}|D ]}|  ||¡ |d7 }qˆ|  |d¡ | t|ƒd d ¡ |  t|ƒg ¡ |  |d ¡}| 	¡  |  
t|j¡ d S )NrS   rO   Ú__iter__Ú__next__r   r   rJ   )r   r   r   ÚiterZ
assertTrueÚhasattrr%   rQ   Úlistr<   r&   r=   rZ   )r   r   r?   ÚiÚliner   r   r	   Útest_iterator  s*    



zMemoryTestMixin.test_iteratorc                 C   s¤   |   d¡}|  |¡}|  | ¡ |¡ | ¡  |  | ¡ |¡ |  t| ¡ ƒt|ƒ¡ |  |d ¡}|  | ¡ dd … |   d¡¡ |  |¡}| ¡  |  t|j¡ d S )Nr   éè  éýÿÿÿZ890)	r   r   r   r;   r   rP   r<   r&   r=   r>   r   r   r	   Útest_getvalue  s    


zMemoryTestMixin.test_getvaluec                 C   s\  |   d¡}|  |¡}| d¡ |  t|jd¡ |  t|jdd¡ |  t|jdd¡ |  | d¡d¡ |  | dd¡d¡ |  | ¡ |¡ |  | d¡d¡ |  | dd¡d¡ |  | ¡ |dd … ¡ |  | t|ƒ¡t|ƒ¡ |  | ¡ | j¡ | t|ƒd ¡ |  | ¡ | j¡ |  | dd¡t|ƒ¡ |  | ¡ | j¡ | 	¡  |  t|jd¡ d S )Nr   r   rH   r   r#   r   rJ   )
r   r   r   r&   r=   r%   r   rQ   r    r<   r>   r   r   r	   Ú	test_seek,  s(    


zMemoryTestMixin.test_seekc                 C   s¨   |   d¡}|  |¡}|  | t|ƒd ¡d¡ |  | ¡ | j¡ |  | ¡ d¡ |  | ¡ |¡ | 	| j¡ |  | ¡ |¡ | 	|¡ |  | ¡ ||   d¡ | ¡ d S )Nr   r   é   ú )
r   r   r   r%   rQ   r   r    r*   r;   r5   r>   r   r   r	   Útest_overseekC  s    


zMemoryTestMixin.test_overseekc                 C   sr   |   d¡}|  |¡}|  | ¡ d¡ | d¡ |  | ¡ d¡ | d¡ |  | ¡ d¡ | ¡  |  t|j¡ d S r)   )r   r   r   r*   r%   r<   r&   r=   r>   r   r   r	   Ú	test_tellP  s    



zMemoryTestMixin.test_tellc                 C   s(   |   d¡}|  |¡}|  | ¡ d ¡ d S r   )r   r   r   Úflushr>   r   r   r	   Ú
test_flush\  s    

zMemoryTestMixin.test_flushc                 C   s¨   |   ¡ }|  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ |  |jd¡ | ¡  |  t	|j¡ |  t	|j¡ |  t	|j¡ |  t	|j¡ |  |jd¡ d S )NTF)
r   r   ÚwritableÚreadableÚseekableÚisattyÚclosedr<   r&   r=   ©r   r?   r   r   r	   Ú
test_flagsb  s    zMemoryTestMixin.test_flagsc                    sF   ˆ  d¡‰ ‡ ‡fdd„}‡ ‡fdd„}ˆ |ƒ ˆ ¡ ˆ |ƒ ˆ ¡ d S )Nr   c                     s"   G dd„ dˆj ƒ} | ˆ ƒ}| ¡ S )Nc                   @   s   e Zd ZdS )z>MemoryTestMixin.test_subclassing.<locals>.test1.<locals>.MemION)r   r   r   r   r   r   r	   ÚMemIOt  s   rr   ©r   r;   ©rr   Úm©r   r   r   r	   Útest1s  s    z/MemoryTestMixin.test_subclassing.<locals>.test1c                     s(   G ‡fdd„dˆj ƒ} | ˆ d ƒ}| ¡ S )Nc                       s   e Zd Z‡ fdd„ZdS )z>MemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIOc                    s   ˆ j  | |¡ d S r   )r   r
   )ÚmeÚaÚbr   r   r	   r
   z  s    zGMemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIO.__init__N©r   r   r   r
   r   r   r   r	   rr   y  s   rr   rs   rt   rv   r   r	   Útest2x  s    
z/MemoryTestMixin.test_subclassing.<locals>.test2)r   r   )r   rw   r|   r   rv   r	   Útest_subclassingq  s
    
z MemoryTestMixin.test_subclassingc                 C   s    t dƒD ]}|  ¡ }d|_qd S )NrA   r   )Úranger   Úfoo)r   Ú_r?   r   r   r	   Útest_instance_dict_leak  s    z'MemoryTestMixin.test_instance_dict_leakc           	         s  ˆ   d¡}ˆ  |¡}d|_| d¡ G ‡ fdd„dˆ jƒ}dd l}d|_|j|_||_||dƒ}| d¡ t	dt
jd	 ƒD ]ˆ}||fD ]z}t
 t
j||d
¡}ˆ  | ¡ | ¡ ¡ ˆ  |j|j¡ ˆ  |j|j¡ ˆ  | ¡ | ¡ ¡ | ¡  ˆ  tt
j||¡ q†qz|`d S )Nr   é*   rJ   c                       s   e Zd Z‡ fdd„ZdS )z6MemoryTestMixin.test_pickling.<locals>.PickleTestMemIOc                    s   ˆ j  | |¡ || _d S r   )r   r
   r   )rx   Z	initvaluer   r   r   r	   r
     s    z?MemoryTestMixin.test_pickling.<locals>.PickleTestMemIO.__init__Nr{   r   r   r   r	   ÚPickleTestMemIOŽ  s   rƒ   r   Ú__main__éP   r   )Úprotocol)r   r   r   r%   r„   r   r   r   rƒ   r~   ÚpickleÚHIGHEST_PROTOCOLÚloadsÚdumpsr   r;   Ú	__class__r*   r<   r&   r=   )	r   r   r?   rƒ   r„   ZsubmemioÚprotoÚobjÚobj2r   r   r	   Útest_picklingˆ  s*    




zMemoryTestMixin.test_picklingN)r   r   r   r0   r9   r@   rC   rG   rM   rN   rR   rV   rX   r`   rc   rd   rg   rh   rj   rq   r}   r   r   r   r   r   r	   r,   B   s(   &)r,   c                   @   s`   e Zd ZejZedd„ ƒZej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 )ÚPyBytesIOTestc                 C   s
   |   d¡S )NÚascii)Úencode)Úsr   r   r	   r   ³  s    zPyBytesIOTest.buftypeó    c                 C   sÔ   |   d¡}| ¡ }|  t|ƒd¡ | d¡ | ¡ }|  t|ƒd¡ |  t|jd¡ |  t|j¡ |  t|j	¡ |  
|j¡ d|dd…< |  t|ƒd¡ |  | ¡ d¡ ~t ¡  | ¡  | 	¡  |  t|j¡ d S )Nó
   1234567890r   sd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs   abcr#   r1   s
   123abc7890)r   Ú	getbufferr   Úbytesr%   r&   ÚBufferErrorr5   r6   r<   ÚassertFalsero   r;   r   Ú
gc_collectr=   )r   r?   r   r   r   r	   Útest_getbuffer¹  s$    

zPyBytesIOTest.test_getbufferc                 C   s<   |   d¡}|  |  |¡ ¡ |¡ |  |  |¡ d¡|¡ d S )Nr   rH   )r   r   r   Úread1r/   r   r   r	   Ú
test_read1Ò  s    
zPyBytesIOTest.test_read1c                 C   sj  |   d¡}|  |¡}tdƒ}|  | |¡d¡ |  |d¡ |  | |¡d¡ |  |d¡ |  | |¡d¡ |  |d¡ tdƒ}| d¡ |  | |¡d¡ |  |d	¡ td
ƒ}| d¡ |  | |¡d¡ |  |d
¡ |  t|jd¡ dd l}| dd¡}|  |¡}| |¡ |  | 	¡ d	¡ | 
¡  |  t|j|¡ |  d¡}tƒ }| d¡ | |¡ |  |d
¡ d S )Nr   s   hellor   s   12345s   67890r   s   hello worldrO   s   1234567890dr”   r:   rz   s   123r‚   )r   r   Ú	bytearrayr   Úreadintor%   r&   r'   ÚarrayÚtobytesr<   r=   )r   r   r?   rz   r    ry   r   r   r	   Útest_readinto×  s<    








zPyBytesIOTest.test_readintoc                 C   sâ   |   d¡}|  |¡}|  | dd¡d¡ |  | dd¡d¡ |  | dd¡d¡ |  | dd¡d¡ |  | dd¡d	¡ |  | dd¡d
¡ | dd¡ |  | ¡ |dd … ¡ | d¡ | dd¡ |  | ¡ |dd … ¡ d S )Nr   rH   r   r   r#   éüÿÿÿrJ   r2   rO   re   rb   )r   r   r   r%   r   r>   r   r   r	   Útest_relative_seekø  s    


z PyBytesIOTest.test_relative_seekc                 C   s>   |   ¡ }|  t| j d¡ |  t|jd¡ |  t|jdg¡ d S r   )r   r&   r'   r5   rB   rp   r   r   r	   Útest_unicode  s    zPyBytesIOTest.test_unicodec                 C   s\   d}dd l }|  dt|ƒ¡}|  |¡}|  | ¡ |¡ |  | |¡d¡ |  | ¡ |¡ d S )Nr•   r   rz   rO   )r    r]   r   r   r;   r5   )r   r   r    ry   r?   r   r   r	   Útest_bytes_array  s    
zPyBytesIOTest.test_bytes_arrayc                 C   s.   |   d¡}| j|d | jt| j|d d d S )Nr   )Zinitial_bytes)r   )r   r   r&   r'   r/   r   r   r	   Útest_issue5449  s    
zPyBytesIOTest.test_issue5449N)r   r   r   Úpyior-   Ústaticmethodr   ÚBytesIOr   r    r›   r   r¢   r¤   r¥   r¦   r§   r   r   r   r	   r   ®  s   
!	r   c                   @   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d„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTextIOTestMixinc                    s„   | j d d‰ ‡ fdd„}|  ˆ jd ¡ ˆ  d¡ |ƒ  |  ˆ jd¡ ˆ  d¡ |ƒ  |  ˆ jd¡ ˆ  d¡ |ƒ  |  ˆ jd	¡ d S )
N©Únewlinec                      s   ˆ   d¡ ˆ  ¡  d S )Nr   )r%   r   r   ©r?   r   r	   Úforce_decode%  s    
z<TextIOTestMixin.test_newlines_property.<locals>.force_decodeúa
Ú
úb
)r±   ú
úcd)úr±   r³   )r   r   Únewlinesr5   )r   r¯   r   r®   r	   Útest_newlines_property   s    


z&TextIOTestMixin.test_newlines_propertyc                 C   sx   |   ¡ }|  t|jdd¡ |  t|jdd¡ |  t|jdd¡ |  t|jdd¡ |  t|jdd¡ |  t|jdd¡ d S )NrH   r   r#   rb   rJ   )r   r&   ÚOSErrorr%   rp   r   r   r	   r¤   3  s    z"TextIOTestMixin.test_relative_seekc                 C   s0   |   ¡ }|  |j¡ |  |j¡ |  |j¡ d S r   )r   ZassertIsNoneÚencodingÚerrorsr™   Úline_bufferingrp   r   r   r	   Útest_textio_properties=  s    z&TextIOTestMixin.test_textio_propertiesc                 C   sz   |   d¡}|  t|ƒg d¢¡ |  | ¡ d¡ |   ¡ }|  | d¡d¡ | d¡ |  t|ƒg d¢¡ |  | ¡ d¡ d S )Núa
b
cd©r°   r²   r´   rI   r   ©r   r   r]   r;   r5   r%   rp   r   r   r	   Útest_newline_defaultF  s    

z$TextIOTestMixin.test_newline_defaultc                 C   s  | j dd d}|  t|ƒg d¢¡ | d¡ |  | d¡d¡ |  | d¡d¡ |  | d¡d	¡ |  | d¡d
¡ |  | ¡ d¡ | j d d}|  d| d¡¡ |  d| d¡¡ |  d| d¡¡ | d¡ |  | ¡ d¡ |  | ¡ d¡ | j dd d}|  | d¡d¡ d S )Nr½   r¬   )r°   zb
zc
Údr   r   ry   rJ   z
bú
cr±   za
b
c
dr°   r#   r²   r´   za
bza
b©r   r   r]   r%   r   r;   r5   rp   r   r   r	   Útest_newline_noneQ  s"    

z!TextIOTestMixin.test_newline_nonec                 C   sø   | j ddd}|  t|ƒg d¢¡ | d¡ |  | d¡d¡ |  | d¡d	¡ |  | d
¡d¡ |  | ¡ d¡ | j dd}|  d| d¡¡ |  d| d¡¡ |  d| d	¡¡ |  d| d¡¡ | d¡ |  t|ƒg d¢¡ |  | ¡ d¡ d S )Nr½   r:   r¬   )r°   r²   úcrÁ   r   r   za
brJ   rÂ   r   rµ   r°   úbzdrÃ   rp   r   r   r	   Útest_newline_emptyg  s    

z"TextIOTestMixin.test_newline_emptyc                 C   s‚   | j ddd}|  t|ƒg d¢¡ |  | ¡ d¡ | j dd}|  | d¡d¡ | d¡ |  t|ƒg d¢¡ |  | ¡ d¡ d S )Nr½   r±   r¬   r¾   rI   r   r¿   rp   r   r   r	   Útest_newline_lfz  s    
zTextIOTestMixin.test_newline_lfc                 C   sº   | j ddd}|  | ¡ d¡ | d¡ |  t|ƒg d¢¡ |  | ¡ d¡ | j dd}|  | d¡d¡ | d¡ |  t|ƒg d¢¡ | d¡ |  | ¡ g d¢¡ |  | ¡ d¡ d S )Nr½   rµ   r¬   zabcdr   )zarÆ   rµ   rÅ   rÁ   rI   )r   r   r   r%   r]   r;   r5   rW   rp   r   r   r	   Útest_newline_cr†  s    


zTextIOTestMixin.test_newline_crc                 C   sº   | j ddd}|  | ¡ d¡ | d¡ |  t|ƒg d¢¡ | d¡ |  | ¡ g d¢¡ |  | ¡ d¡ | j dd}|  | d¡d¡ | d¡ |  t|ƒg d¢¡ |  | ¡ d¡ d S )Nr½   r³   r¬   z
a
b
cdr   )za
zb
r´   rI   )r   r   r   r%   r]   rW   r;   r5   rp   r   r   r	   Útest_newline_crlf–  s    


z!TextIOTestMixin.test_newline_crlfc                 C   s4   | j dd d}|  | d¡d¡ |  | ¡ d¡ d S )Nza
b
r¬   r   za
b
)r   r   r   r;   rp   r   r   r	   Útest_issue5265¦  s    zTextIOTestMixin.test_issue5265c                 C   s>   | j t| jdd | j t| jdd dD ]}| j|d q(d S )Nó   
r¬   Úerror)Nr:   r±   rµ   r³   )r&   r'   r   r=   )r   r­   r   r   r	   Útest_newline_argument¬  s    z%TextIOTestMixin.test_newline_argumentN)r   r   r   r·   r¤   r¼   rÀ   rÄ   rÇ   rÈ   rÉ   rÊ   rË   rÎ   r   r   r   r	   r«     s   
	r«   c                   @   s(   e Zd ZeZejZejZdZ	dd„ Z
dS )ÚPyStringIOTestr:   c                 C   s@   |   d¡}|  | ¡ d¡ |   ¡ }| d¡ |  | ¡ d¡ d S )Nu   í €)r   r   r   r5   r;   rp   r   r   r	   Útest_lone_surrogates»  s
    

z#PyStringIOTest.test_lone_surrogatesN)r   r   r   Ústrr   r¨   ÚStringIOr   r-   r    rÐ   r   r   r   r	   rÏ   ´  s
   rÏ   c                   @   s,   e Zd ZeZejZdZG dd„ dejƒZ	dS )ÚPyStringIOPickleTestr:   c                   @   s   e Zd Zdd„ Zdd„ ZdS )zPyStringIOPickleTest.ioclassc                 O   s   t  t  tj|i |¤Ž¡¡S r   )r‡   r‰   rŠ   r¨   rÒ   ©ÚclsÚargsÚkwargsr   r   r	   Ú__new__Í  s    z$PyStringIOPickleTest.ioclass.__new__c                 O   s   d S r   r   ©r   rÖ   r×   r   r   r	   r
   Ï  s    z%PyStringIOPickleTest.ioclass.__init__N©r   r   r   rØ   r
   r   r   r   r	   r   Ì  s   r   N)
r   r   r   rÑ   r   r¨   r-   r    rÒ   r   r   r   r   r	   rÓ   Å  s   rÓ   c                   @   s|   e Zd ZejZejZdd„ Zdd„ Ze	j
Z
e	jdd„ ƒZdd„ Ze	jd	d
„ ƒZe	jdd„ ƒZe	jdd„ ƒZe	jdd„ ƒZdS )ÚCBytesIOTestc                 C   sr   |   ¡ }| ¡ }|  t|ƒd¡ t|d ƒ |  |d t¡ |d d urX|  |d t¡ | ¡  |  	t
|j¡ d S )Nr#   r   r   rJ   )r   Ú__getstate__r   rQ   rž   ÚassertIsInstanceÚintÚdictr<   r&   r=   ©r   r?   Ústater   r   r	   Útest_getstate×  s    zCBytesIOTest.test_getstatec                 C   sÄ   |   ¡ }| d¡ | tdƒdd f¡ | ddddif¡ |  t|jd¡ |  t|jd¡ |  t|jd¡ |  t|jd	¡ |  t|jd
¡ |  t|j¡ |  t|jd¡ | ¡  |  t|jd¡ d S )N)ó   no errorr   Nrã   r   rD   r#   )r”   rH   N)Úunicoder   N)r”   r$   N)r”   r   r   )s   len-testr   )s   closedr   N)r   Ú__setstate__rž   r&   r=   r'   r<   rp   r   r   r	   Útest_setstateâ  s    
zCBytesIOTest.test_setstatec                 C   s^   t  d¡}| j}|  t t ¡ ¡|¡ |t ¡ |ƒ d}|t d| ¡|t 	d| ¡ ƒ d S )NZP2n2Pnra   ó   a)
r   ZcalcobjsizeÚcheck_sizeofr   ÚobjectÚ
__sizeof__Úiorª   ÚsysÚ	getsizeof)r   ZbasesizeÚcheckÚnr   r   r	   Útest_sizeofô  s    
zCBytesIOTest.test_sizeofc                 C   sL   d}t  |¡}|  |¡}|  t  |¡|d ¡ ||ƒ |  t  |¡|¡ d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r   )rì   Úgetrefcountr   r   )r   ÚmutationZimmÚold_rcr?   r   r   r	   Ú_test_cow_mutationÿ  s    

zCBytesIOTest._test_cow_mutationc                 C   s   dd„ }|   |¡ d S )Nc                 S   s   |   d¡ d S )Nr   )r6   r®   r   r   r	   rò     s    z0CBytesIOTest.test_cow_truncate.<locals>.mutation©rô   ©r   rò   r   r   r	   Útest_cow_truncate  s    zCBytesIOTest.test_cow_truncatec                 C   s   dd„ }|   |¡ d S )Nc                 S   s   |   d¡ |  d¡ d S )Nr   s   foo)r%   r5   r®   r   r   r	   rò     s    
z-CBytesIOTest.test_cow_write.<locals>.mutationrõ   rö   r   r   r	   Útest_cow_write  s    zCBytesIOTest.test_cow_writec                    s,   |   d¡}| ¡ ‰ ‡ fdd„}|  |¡ d S )Ns   fooooooc                    s   |   ˆ ¡ d S r   )rå   r®   ©rá   r   r	   rò     s    z0CBytesIOTest.test_cow_setstate.<locals>.mutation)r   rÜ   rô   )r   r?   rò   r   rù   r	   Útest_cow_setstate  s    
zCBytesIOTest.test_cow_setstatec                 C   s2   t dƒ}t |¡}|  |¡}|  t |¡|¡ d S )Ni   )rž   rì   rñ   r   r   )r   Zbaró   r?   r   r   r	   Útest_cow_mutable   s    

zCBytesIOTest.test_cow_mutableN)r   r   r   rë   rª   r   r-   râ   ræ   r   rè   Zcpython_onlyrð   rô   r÷   rø   rú   rû   r   r   r   r	   rÛ   Ó  s    

	


rÛ   c                   @   s0   e Zd ZejZejZdd„ Zdd„ Zdd„ Z	dS )ÚCStringIOTestc                 C   s¤   |   d¡}|  |¡}|  | ¡ |¡ |  | |¡t|ƒ¡ |  | ¡ t|ƒ¡ |  | ¡ |¡ |  | |¡t|ƒ¡ |  | ¡ t|ƒd ¡ |  | ¡ || ¡ d S )Nu   ð ŒŠð ‡rJ   )r   r   r   r;   r5   rQ   r*   r>   r   r   r	   Útest_widechar0  s    

zCStringIOTest.test_widecharc                 C   s†   |   ¡ }| ¡ }|  t|ƒd¡ |  |d t¡ |  |d t¡ |  |d t¡ |d d url|  |d t¡ | ¡  |  	t
|j¡ d S )Nr   r   r   rJ   r#   )r   rÜ   r   rQ   rÝ   rÑ   rÞ   rß   r<   r&   r=   rà   r   r   r	   râ   <  s    zCStringIOTest.test_getstatec                 C   sÒ   |   ¡ }| d¡ | dddddif¡ |  t|jd¡ |  t|jd¡ |  t|jd	¡ |  t|jd
¡ |  t|jd¡ |  t|jd¡ |  t|jd¡ |  t|j¡ |  t|jd¡ | ¡  |  t|jd¡ d S )N)úno errorr±   r   Nrþ   r:   r   rD   r#   )r:   r7   r   N)r:   r:   rH   N)r”   r:   r   N)r:   r”   r   N)r:   r:   r$   N)r:   r:   r   r   )zlen-testr   )ro   r:   r   N)r   rå   r&   r=   r'   r<   rp   r   r   r	   ræ   H  s    
zCStringIOTest.test_setstateN)
r   r   r   rë   rÒ   r   r-   rý   râ   ræ   r   r   r   r	   rü   *  s
   rü   c                   @   s$   e Zd ZejZG dd„ dejƒZdS )ÚCStringIOPickleTestc                   @   s   e Zd Zdd„ Zdd„ ZdS )zCStringIOPickleTest.ioclassc                 O   s   t  t  tj|i |¤Ž¡¡S r   )r‡   r‰   rŠ   rë   rÒ   rÔ   r   r   r	   rØ   ^  s    z#CStringIOPickleTest.ioclass.__new__c                 O   s   d S r   r   rÙ   r   r   r	   r
   `  s    z$CStringIOPickleTest.ioclass.__init__NrÚ   r   r   r   r	   r   ]  s   r   N)r   r   r   rë   r-   rÒ   r   r   r   r   r	   rÿ   Z  s   rÿ   r„   )ZunittestÚtestr   rë   Z_pyior¨   r‡   rì   r   r   r,   ZTestCaser   r«   rÏ   rÓ   rÛ   rü   rÿ   r   Úmainr   r   r   r	   Ú<module>   s,   -  np ÿW0
