o
    HXîhï}  ã                   @   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 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©Z_num)ÚselfÚnum© r   ú</opt/python-3.10.19/usr/lib/python3.10/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   ó   
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   r:   r   Úgetvaluer'   r(   r6   Ú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‚)NÚspam)r   ÚKeyboardInterruptr   r   r   r	   Ú	error_gens   s   €z8MemoryTestMixin.test_writelines_error.<locals>.error_gen)r   r'   rF   rC   )r   r@   rG   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   éÿÿÿÿr2   é   r   r   é   Ú0)r   r   r'   r>   r7   r   r&   r   r<   r+   r6   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   rK   )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   é
   rI   rB   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
rK   r   r   rP   é   rI   r   r$   r;   )r   r   r   Úreadliner!   r   r&   rR   rQ   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 )NrT   rP   r   r3   r   rU   rK   rI   r;   r   )r   r   r   Ú	readlinesr&   rQ   r'   r(   rR   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 }q(|  |d¡ | d¡ d}|D ]}|  ||¡ |d7 }qD|  |d¡ | t|ƒd d ¡ |  t|ƒg ¡ |  |d ¡}| 	¡  |  
t|j¡ d S )NrT   rP   Ú__iter__Ú__next__r   r   rK   )r   r   r   ÚiterZ
assertTrueÚhasattrr&   rR   Úlistr=   r'   r>   r[   )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    rQ   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   rI   r   r$   r   rK   )
r   r   r    r'   r>   r&   r   rR   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&   rR   r    r!   r+   r<   r6   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    rs   ©r   r<   ©rs   Úm©r   r   r   r	   Útest1s  s   z/MemoryTestMixin.test_subclassing.<locals>.test1c                     s(   G ‡fdd„dˆj ƒ} | ˆ d ƒ}| ¡ S )Nc                       ó   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	   rs   y  ó    rs   rt   ru   rw   r   r	   Útest2x  s   
z/MemoryTestMixin.test_subclassing.<locals>.test2)r   r   )r   rx   r   r   rw   r	   Útest_subclassingq  s
   
z MemoryTestMixin.test_subclassingc                 C   s    t dƒD ]	}|  ¡ }d|_qd S )NrB   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 ]D}||fD ]=}t
 t
j||d
¡}ˆ  | ¡ | ¡ ¡ ˆ  |j|j¡ ˆ  |j|j¡ ˆ  | ¡ | ¡ ¡ | ¡  ˆ  tt
j||¡ qCq=|`d S )Nr   é*   rK   c                       ry   )z6MemoryTestMixin.test_pickling.<locals>.PickleTestMemIOc                    s   ˆ j  | |¡ || _d S r   )r   r
   r‚   )rz   Z	initvaluer‚   r   r   r	   r
     s   
z?MemoryTestMixin.test_pickling.<locals>.PickleTestMemIO.__init__Nr}   r   r   r   r	   ÚPickleTestMemIOŽ  r~   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   r1   r:   rA   rD   rH   rN   rO   rS   rW   rY   ra   rd   re   rh   ri   rk   rr   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$   r2   s
   123abc7890)r   Ú	getbufferr   Úbytesr&   r'   ÚBufferErrorr6   r7   r=   ÚassertFalserp   r<   r   Ú
gc_collectr>   )r   r@   r   r   r   r	   Útest_getbuffer¹  s$   

zPyBytesIOTest.test_getbufferc                 C   s<   |   d¡}|  |  |¡ ¡ |¡ |  |  |¡ d¡|¡ d S )Nr   rI   )r   r   r   Úread1r0   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 worldrP   s   1234567890dr—   r;   r|   s   123r…   )r   r   Ú	bytearrayr   Úreadintor&   r'   r(   ÚarrayÚtobytesr=   r>   )r   r   r@   r|   r£   r{   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   rI   r   r   r$   éüÿÿÿrK   r3   rP   rf   rc   )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(   r6   rC   rq   r   r   r	   Útest_unicode  s   zPyBytesIOTest.test_unicodec                 C   s\   d}dd l }|  dt|ƒ¡}|  |¡}|  | ¡ |¡ |  | |¡d¡ |  | ¡ |¡ d S )Nr˜   r   r|   rP   )r£   r^   r   r   r<   r6   )r   r   r£   r{   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(   r0   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   Únewlinesr6   )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 )NrI   r   r$   rc   rK   )r   r'   ÚOSErrorr&   rq   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_bufferingrq   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·   rJ   r   ©r   r   r^   r<   r6   r&   rq   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   r{   rK   z
bú
cr´   za
b
c
dr³   r$   rµ   r·   za
bza
b©r   r   r^   r&   r    r<   r6   rq   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rK   rÅ   r   r¸   r³   úbzdrÆ   rq   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Á   rJ   r   rÂ   rq   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Ä   rJ   )r   r   r    r&   r^   r<   r6   rX   rq   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·   rJ   )r   r   r    r&   r^   rX   r<   r6   rq   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<   rq   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    r6   r<   rq   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.
    r;   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )zPyStringIOPickleTest.ioclassc                 O   ó   t  t  tj|i |¤Ž¡¡S r   )rŠ   rŒ   r   r«   rÕ   ©ÚclsÚargsÚkwargsr   r   r	   Ú__new__Í  ó   z$PyStringIOPickleTest.ioclass.__new__c                 O   ó   d S r   r   ©r   rÛ   rÜ   r   r   r	   r
   Ï  ó   z%PyStringIOPickleTest.ioclass.__init__N©r   r   r   rÝ   r
   r   r   r   r	   r   Ì  ó    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 ur,|  |d t¡ | ¡  |  	t
|j¡ d S )Nr$   r   r   rK   )r   Ú__getstate__r   rR   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   rE   r$   )r—   rI   N)Úunicoder   N)r—   r%   N)r—   r   r   )s   len-testr   )s   closedr   N)r   Ú__setstate__r¡   r'   r>   r(   r=   rq   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P2n2Pnrb   ó   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   ó   dd„ }|   |¡ d S )Nc                 S   s   |   d¡ d S )Nr   )r7   r±   r   r   r	   rü     ó   z0CBytesIOTest.test_cow_truncate.<locals>.mutation©rþ   ©r   rü   r   r   r	   Útest_cow_truncate  s   zCBytesIOTest.test_cow_truncatec                 C   rÿ   )Nc                 S   s   |   d¡ |  d¡ d S )Nr   s   foo)r&   r6   r±   r   r   r	   rü     r   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ü     r   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   ð ŒŠð ‡rK   )r   r   r   r<   r6   rR   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r6|  |d t¡ | ¡  |  	t
|j¡ d S )Nr   r   r   rK   r$   )r   ræ   r   rR   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   rE   r$   )r;   r8   r   N)r;   r;   rI   N)r—   r;   r   N)r;   r—   r   N)r;   r;   r%   N)r;   r;   r   r   )zlen-testr   )rp   r;   r   N)r   rï   r'   r>   r(   r=   rq   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                   @   r×   )zCStringIOPickleTest.ioclassc                 O   rØ   r   )rŠ   rŒ   r   rõ   rÕ   rÙ   r   r   r	   rÝ   ^  rÞ   z#CStringIOPickleTest.ioclass.__new__c                 O   rß   r   r   rà   r   r   r	   r
   `  rá   z$CStringIOPickleTest.ioclass.__init__Nrâ   r   r   r   r	   r   ]  rã   r   N)r   r   r   rõ   r.   rÕ   r   r   r   r   r	   r  Z  s    r  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>   s2    -  np ÿW0
ÿ