B
    18™\ï}  ã               @   sö   d Z 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 )zdUnit tests for memory-based file-like objects.
StringIO -- for unicode strings
BytesIO -- for bytes
é    N)Úsupportc               @   s    e Zd Zdd„ Zdd„ ZeZdS )ÚIntLikec             C   s
   || _ d S )N)Ú_num)ÚselfÚnum© r   úV/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_memoryio.pyÚ__init__   s    zIntLike.__init__c             C   s   | j S )N)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   ÚbufÚbytesIor   r   r   ÚtestInit   s    
zMemorySeekTestMixin.testInitc             C   sx   |   d¡}|  |¡}|  |d d… | d¡¡ |  |dd… | d¡¡ |  |dd … | d¡¡ |  | j| ¡ ¡ d S )Nr   é   é   é   i„  )r   r   ÚassertEqualÚreadÚEOF)r   r   r   r   r   r   ÚtestRead   s    

zMemorySeekTestMixin.testReadc             C   s:   |   d¡}|  |¡}|  || ¡ ¡ |  | j| ¡ ¡ d S )Nr   )r   r   r   r   r   )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   é   g        )r   r   r   Úseekr   ÚassertRaisesÚ	TypeError)r   r   r   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   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 )N)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   r1   r   Úgetvaluer    r!   r-   Ú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   Ú
writelinesr3   r    r!   r4   r5   )r   r   r6   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    r<   r9   )r   r6   r=   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   éÿÿÿÿr)   é   r   r   é   Ú0)r   r   r    r5   r.   r   r   r   r3   r#   r-   r!   r4   )r   r   r6   Úposr   r   r   Útest_truncatey   s,    



zMemoryTestMixin.test_truncatec             C   s   |   d¡}|  |¡}|  | ¡ |¡ |  d ¡}|  | ¡ | j¡ | |d ¡ |  | ¡ |d ¡ | |¡ |  | ¡ |¡ |  t|jg ¡ d S )Nr   rA   )r   r   r   r3   r   r	   r    r!   )r   r   r6   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   i„  é
   r?   r8   r2   )r   r   r   r   r   r   r   r#   Útyper    r!   Úlenr4   r5   )r   r   r6   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 )Nz1234567890
rA   r   r   rF   é   r?   r   r   r2   )r   r   r   Úreadliner   r   r   rH   rG   r    r!   r4   r5   )r   r   r6   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 )Nz1234567890
rF   r   r*   r   rJ   rA   r?   r2   r   )r   r   r   Ú	readlinesr   rG   r    r!   rH   r4   r5   )r   r   r6   r   r   r   Útest_readlinesí   s(    

$




zMemoryTestMixin.test_readlinesc             C   s  |   d¡}|  |d ¡}|  t|ƒ|¡ |  t|dƒ¡ |  t|dƒ¡ d}x |D ]}|  ||¡ |d7 }qRW |  |d¡ | d¡ d}x |D ]}|  ||¡ |d7 }qŽW |  |d¡ | t|ƒd d ¡ |  t|ƒg ¡ |  |d ¡}| 	¡  |  
t|j¡ d S )Nz1234567890
rF   Ú__iter__Ú__next__r   r   rA   )r   r   r   ÚiterÚ
assertTrueÚhasattrr   rH   Úlistr4   r    r5   rP   )r   r   r6   Ú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   iè  éýÿÿÿZ890)	r   r   r   r3   r   rG   r4   r    r5   )r   r   r6   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   r?   r   r   r   rA   )
r   r   r   r    r5   r   r   rH   r   r4   )r   r   r6   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   rH   r   r   r#   r3   r-   )r   r   r6   r   r   r   Útest_overseekC  s    


zMemoryTestMixin.test_overseekc             C   sr   |   d¡}|  |¡}|  | ¡ d¡ | d¡ |  | ¡ d¡ | d¡ |  | ¡ d¡ | ¡  |  t|j¡ d S )Nr   r   r   i'  )r   r   r   r#   r   r4   r    r5   )r   r   r6   r   r   r   Ú	test_tellP  s    



zMemoryTestMixin.test_tellc             C   s(   |   d¡}|  |¡}|  | ¡ d ¡ d S )Nr   )r   r   r   Úflush)r   r   r6   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Úclosedr4   r    r5   )r   r6   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   rg   )r   r3   )rg   Ú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 )N)r   r	   )ÚmeÚaÚb)r   r   r   r	   z  s    zGMemoryTestMixin.test_subclassing.<locals>.test2.<locals>.MemIO.__init__N)r   r   r   r	   r   )r   r   r   rg   y  s   rg   )r   r3   )rg   rh   )r   r   r   r   Útest2x  s    
z/MemoryTestMixin.test_subclassing.<locals>.test2)r   r   )r   ri   rm   r   )r   r   r   Útest_subclassingq  s
    
z MemoryTestMixin.test_subclassingc             C   s$   xt dƒD ]}|  ¡ }d|_q
W d S )Nr8   r   )Úranger   Úfoo)r   Ú_r6   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¡ x t	dt
jd	 ƒD ]Œ}x†||fD ]z}t
 t
j||d
¡}ˆ  | ¡ | ¡ ¡ ˆ  |j|j¡ ˆ  |j|j¡ ˆ  | ¡ | ¡ ¡ | ¡  ˆ  tt
j||¡ qŠW q|W |`d S )Nr   é*   rA   c                   s   e Zd Z‡ fdd„ZdS )z6MemoryTestMixin.test_pickling.<locals>.PickleTestMemIOc                s   ˆ j  | |¡ || _d S )N)r   r	   rp   )rj   Z	initvaluerp   )r   r   r   r	     s    z?MemoryTestMixin.test_pickling.<locals>.PickleTestMemIO.__init__N)r   r   r   r	   r   )r   r   r   ÚPickleTestMemIOŽ  s   rt   r   Ú__main__éP   r   )Úprotocol)r   r   rp   r   ru   r   r   r   rt   ro   ÚpickleÚHIGHEST_PROTOCOLÚloadsÚdumpsr   r3   Ú	__class__r#   r4   r    r5   )	r   r   r6   rt   ru   ZsubmemioÚprotoÚobjÚobj2r   )r   r   Útest_picklingˆ  s*    




zMemoryTestMixin.test_picklingN)r   r   r   r(   r1   r7   r:   r>   rD   rE   rI   rL   rN   rW   rY   rZ   r]   r^   r`   rf   rn   rr   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 )Ns
   1234567890r   sd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs   abcr   r)   s
   123abc7890)r   Ú	getbufferr   Úbytesr   r    ÚBufferErrorr-   r.   r4   ÚassertFalsere   r3   r   Ú
gc_collectr5   )r   r6   r   r   r   r   Útest_getbuffer¹  s$    

zPyBytesIOTest.test_getbufferc             C   s<   |   d¡}|  |  |¡ ¡ |¡ |  |  |¡ d¡|¡ d S )Nr   r?   )r   r   r   Úread1)r   r   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 worldrF   s   1234567890dr…   r2   rl   s   123rs   )r   r   Ú	bytearrayr   Úreadintor   r    r!   ÚarrayÚtobytesr4   r5   )r   r   r6   rl   r   rk   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   r?   r   r   r   éüÿÿÿrA   r*   rF   r[   rX   )r   r   r   r   r   )r   r   r6   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 )Nr   )r   r    r!   r-   r9   )r   r6   r   r   r   Útest_unicode  s    zPyBytesIOTest.test_unicodec             C   s\   d}dd l }|  dt|ƒ¡}|  |¡}|  | ¡ |¡ |  | |¡d¡ |  | ¡ |¡ d S )Ns
   1234567890r   rl   rF   )r   rT   r   r   r3   r-   )r   r   r   rk   r6   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)rp   )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   )r6   r   r   Úforce_decode%  s    
z<TextIOTestMixin.test_newlines_property.<locals>.force_decodeza
Ú
zb
)rž   z
zcd)úrž   z
)r   r   Únewlinesr-   )r   r   r   )r6   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 )Nr?   r   r   rX   rA   )r   r    ÚOSErrorr   )r   r6   r   r   r   r”   3  s    z"TextIOTestMixin.test_relative_seekc             C   s0   |   ¡ }|  |j¡ |  |j¡ |  |j¡ d S )N)r   ÚassertIsNoneÚencodingÚerrorsr‰   Úline_buffering)r   r6   r   r   r   Útest_textio_properties=  s    z&TextIOTestMixin.test_textio_propertiesc             C   s~   |   d¡}|  t|ƒdddg¡ |  | ¡ d¡ |   ¡ }|  | d¡d¡ | d¡ |  t|ƒdddg¡ |  | ¡ d¡ d S )Nza
b
cdza
zb
zcdr@   r   )r   r   rT   r3   r-   r   )r   r6   r   r   r   Útest_newline_defaultF  s    

z$TextIOTestMixin.test_newline_defaultc             C   s  | j dd d}|  t|ƒddddg¡ | 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 )Nza
b
cd)rœ   za
zb
zc
Údr   r   rk   rA   z
bz
crž   za
b
c
dr   zb
zcdza
bza
b)r   r   rT   r   r   r3   r-   )r   r6   r   r   r   Útest_newline_noneQ  s"    

z!TextIOTestMixin.test_newline_nonec             C   s   | j ddd}|  t|ƒddddg¡ | d¡ |  | d	¡d
¡ |  | d¡d¡ |  | d¡d¡ |  | ¡ d¡ | j dd}|  d| d¡¡ |  d| d¡¡ |  d| d¡¡ |  d| d¡¡ | d¡ |  t|ƒddddg¡ |  | ¡ d¡ d S )Nza
b
cdr2   )rœ   za
zb
zcr©   r   r   za
brA   z
cr   rŸ   zbzd)r   r   rT   r   r   r3   r-   )r   r6   r   r   r   Útest_newline_emptyg  s    

z"TextIOTestMixin.test_newline_emptyc             C   s†   | j ddd}|  t|ƒdddg¡ |  | ¡ d¡ | j dd}|  | d¡d¡ | d¡ |  t|ƒdddg¡ |  | ¡ d¡ d S )	Nza
b
cdrž   )rœ   za
zb
zcdr@   r   )r   r   rT   r3   r-   r   )r   r6   r   r   r   Útest_newline_lfz  s    
zTextIOTestMixin.test_newline_lfc             C   sÌ   | j ddd}|  | ¡ d¡ | d¡ |  t|ƒddddd	g¡ |  | ¡ d¡ | j dd}|  | d¡d
¡ | d¡ |  t|ƒddddd	g¡ | d¡ |  | ¡ ddddd	g¡ |  | ¡ d¡ d S )Nza
b
cdrŸ   )rœ   zabcdr   zazbzcr©   r@   )r   r   r   r   rT   r3   r-   rM   )r   r6   r   r   r   Útest_newline_cr†  s    


zTextIOTestMixin.test_newline_crc             C   sÀ   | j ddd}|  | ¡ d¡ | d¡ |  t|ƒdddg¡ | d¡ |  | ¡ dddg¡ |  | ¡ d¡ | j dd}|  | d¡d	¡ | d¡ |  t|ƒdddg¡ |  | ¡ d¡ d S )
Nza
b
cdz
)rœ   z
a
b
cdr   za
zb
zcdr@   )r   r   r   r   rT   rM   r3   r-   )r   r6   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   r3   )r   r6   r   r   r   Útest_issue5265¦  s    zTextIOTestMixin.test_issue5265c             C   sB   | j t| jdd | j t| jdd xdD ]}| j|d q*W d S )Nó   
)rœ   Úerror)Nr2   rž   rŸ   z
)r    r!   r   r5   )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 )ÚPyStringIOTestr2   c             C   s@   |   d¡}|  | ¡ d¡ |   ¡ }| d¡ |  | ¡ d¡ d S )Nu   í €)r   r   r   r-   r3   )r   r6   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               @   s0   e Zd ZdZeZejZdZG dd„ dej	ƒZ
dS )ÚPyStringIOPickleTestzETest if pickle restores properly the internal state of StringIO.
    r2   c               @   s   e Zd Zdd„ Zdd„ ZdS )zPyStringIOPickleTest.ioclassc             O   s   t  t  tj||Ž¡¡S )N)rx   rz   r{   r˜   r¶   )ÚclsÚargsÚkwargsr   r   r   Ú__new__Í  s    z$PyStringIOPickleTest.ioclass.__new__c             O   s   d S )Nr   )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   Ú__doc__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 k	rX|  |d t¡ | ¡  |  	t
|j¡ d S )Nr   r   r   rA   )r   Ú__getstate__r   rH   rŽ   ÚassertIsInstanceÚintÚdictr4   r    r5   )r   r6   Ú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)s   no errorr   Ns   no errorr   r;   r   )r…   r?   N)Úunicoder   N)r…   g        N)r…   r   r   )s   len-testr   )s   closedr   N)r   Ú__setstate__rŽ   r    r5   r!   r4   )r   r6   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P2n2Pniè  ó   a)
r   Ú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_rcr6   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   )r.   )r6   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   r-   )r6   r   r   r   rÓ     s    
z-CBytesIOTest.test_cow_write.<locals>.mutation)rÕ   )r   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 )N)rÅ   )r6   )rÂ   r   r   rÓ     s    z0CBytesIOTest.test_cow_setstate.<locals>.mutation)r   r¾   rÕ   )r   r6   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   ÚbarÔ   r6   r   r   r   Útest_cow_mutable   s    

zCBytesIOTest.test_cow_mutableN)r   r   r   rÌ   rš   r   r&   rÃ   rÆ   r   rÉ   Ú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   ð ŒŠð ‡rA   )r   r   r   r3   r-   rH   r#   )r   r   r6   r   r   r   Útest_widechar0  s    

zCStringIOTest.test_widecharc             C   s†   |   ¡ }| ¡ }|  t|ƒd¡ |  |d t¡ |  |d t¡ |  |d t¡ |d d k	rl|  |d t¡ | ¡  |  	t
|j¡ d S )Nr   r   r   rA   r   )r   r¾   r   rH   r¿   rµ   rÀ   rÁ   r4   r    r5   )r   r6   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)zno errorrž   r   Nzno errorr2   r   r;   r   )r2   r/   r   N)r2   r2   r?   N)r…   r2   r   N)r2   r…   r   N)r2   r2   g        N)r2   r2   r   r   )zlen-testr   )re   r2   r   N)r   rÅ   r    r5   r!   r4   )r   r6   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||Ž¡¡S )N)rx   rz   r{   rÌ   r¶   )r¸   r¹   rº   r   r   r   r»   ^  s    z#CStringIOPickleTest.ioclass.__new__c             O   s   d S )Nr   )r   r¹   rº   r   r   r   r	   `  s    z$CStringIOPickleTest.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Þ   Z  s   rÞ   ru   )r¼   ÚunittestÚtestr   rÌ   Z_pyior˜   rx   rÍ   r   r   r%   ÚTestCaser   r›   r³   r·   r½   rÜ   rÞ   r   Úmainr   r   r   r   Ú<module>   s,   -  np 
W0
