o
    °ó®gŹ.  ć                   @   sō   d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ G dd	 d	ZG d
d deejZG dd deejZG dd dZG dd deejZG dd deejZedkrxe ”  dS dS )é    N)Śarray)Śproxy)ŚTESTFN)Ś	os_helper)Śwarnings_helper)ŚUserListc                   @   st   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S )ŚAutoFileTestsc                 C   s   |   td”| _d S )NŚwb)Śopenr   Śf©Śself© r   śD/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_file.pyŚsetUp   s   zAutoFileTests.setUpc                 C   s   | j r| j  ”  t t” d S ©N)r   Ścloser   Śunlinkr   r   r   r   r   ŚtearDown   s   
zAutoFileTests.tearDownc                 C   sN   t | j}| d” |  | j ” | ” ” | j ”  d | _|  tt|d” d S )Ns
   teststringŚtell)	r   r   ŚwriteŚassertEqualr   r   ŚassertRaisesŚReferenceErrorŚgetattr)r   Śpr   r   r   ŚtestWeakRefs   s   


zAutoFileTests.testWeakRefsc                 C   s   | j }|j |j |j d S r   )r   ŚnameŚmodeŚclosed©r   r   r   r   r   ŚtestAttributes#   s   
zAutoFileTests.testAttributesc                 C   sV   | j  d” | j  ”  tdd}|  td”| _ | j  |”}|  d| ” d | ” d S )Nó   12Śbó
   xxxxxxxxxxŚrb)	r   r   r   r   r
   r   Śreadintor   Śtobytes)r   ŚaŚnr   r   r   ŚtestReadinto*   s   

zAutoFileTests.testReadintoc                 C   sJ   t dd}| j ”  | jtdd| _t| jdr#|  t| jj|” d S d S )Nr#   r$   zutf-8)Śencodingr&   )	r   r   r   r
   r   Śhasattrr   Ś	TypeErrorr&   )r   r(   r   r   r   ŚtestReadinto_text3   s   

’zAutoFileTests.testReadinto_textc                 C   sJ   t ddg}| j |” | j ”  |  td”| _| j ” }|  |d” d S )Nó   1ó   2r%   r"   )r   r   Ś
writelinesr   r
   r   Śreadr   )r   ŚlŚbufr   r   r   ŚtestWritelinesUserList;   s   

z$AutoFileTests.testWritelinesUserListc                 C   s   |   t| jjg d¢” d S ©N)é   é   é   ©r   r-   r   r1   r   r   r   r   ŚtestWritelinesIntegersD   s   z$AutoFileTests.testWritelinesIntegersc                 C   s"   t g d¢}|  t| jj|” d S r6   )r   r   r-   r   r1   )r   r3   r   r   r   ŚtestWritelinesIntegersUserListH   s   z,AutoFileTests.testWritelinesIntegersUserListc                 C   s,   G dd d}|   t| jj| | g” d S )Nc                   @   s   e Zd ZdS )z8AutoFileTests.testWritelinesNonString.<locals>.NonStringN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r   Ś	NonStringO   s    r@   r:   )r   r@   r   r   r   ŚtestWritelinesNonStringM   s   
’z%AutoFileTests.testWritelinesNonStringc                 C   sd   | j }|  |jt” |  | ” ” |  |j” t|dr&|  t	t
f|jd” | ”  |  |j” d S )Nr&   Ś )r   r   r   r   ZassertFalseŚisattyr   r,   r   ŚOSErrorr-   r&   r   Ś
assertTruer    r   r   r   Ś
testErrorsU   s   
zAutoFileTests.testErrorsc                 C   sĘ   ddddddddd	d
ddg ffdg}|  d” | j d d d ” |  | jj” |D ]\}}t| j|}| jt|g|¢R   q(|  | j d d d ”d ” zdd  W d S    |  | jjt	 
”  d ” Y d S )N)Śfilenor   )Śflushr   )rC   r   )Ś__next__r   ©r2   r   )r   )ó    ©Śreadliner   ©Ś	readlinesr   )Śseek)r   )r   r   r1   )Ś__iter__r   )Śtruncater   r7   r   )Śappendr   Ś__exit__rE   r   r   r   Ś
ValueErrorr   ŚsysŚexc_info)r   ŚmethodsŚ
methodnameŚargsŚmethodr   r   r   ŚtestMethods`   s2   ō
zAutoFileTests.testMethodsc                 C   s   |   t| jj” d S r   )r   rD   r   r2   r   r   r   r   ŚtestReadWhenWriting   s   z!AutoFileTests.testReadWhenWritingN)r=   r>   r?   r   r   r   r!   r*   r.   r5   r;   r<   rA   rF   r\   r]   r   r   r   r   r      s    			"r   c                   @   ó   e Zd ZejZdS )ŚCAutoFileTestsN©r=   r>   r?   Śior
   r   r   r   r   r_      ó    
r_   c                   @   ó   e Zd ZeejZdS )ŚPyAutoFileTestsN©r=   r>   r?   ŚstaticmethodŚpyior
   r   r   r   r   rd      ó    rd   c                   @   sL   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S )ŚOtherFileTestsc                 C   s   t  t” d S r   )r   r   r   r   r   r   r   r      s   zOtherFileTests.tearDownc              	   C   sX   |   td” ”  dD ]}z|   t|”}W n	 ty   Y q
w | ”  |  d| ” q
d S )Nr	   )rB   ZaUzwU+zU+z+UzrU+z%r is an invalid file mode)r
   r   r   rU   Śfail)r   r   r   r   r   r   ŚtestModeStrings   s   ’łzOtherFileTests.testModeStringsc                 C   s    t jdkr
|  d” t j ” s|  d” |  ttf” t j d” W d    n1 s,w   Y  |  ttf” t j 	”  W d    d S 1 sIw   Y  d S )NZosf1V5zE sys.stdin.seek(-1) may crash the interpreter on OSF1. Test manually.z stdin must be a TTY in this testé’’’’)
rV   ŚplatformZskipTestŚstdinrC   r   ŚIOErrorrU   rP   rR   r   r   r   r   Ś	testStdin   s   
’

’"’zOtherFileTests.testStdinc              
   C   s¦   d}z|   t|”}W n; tyE } z/|jd dkr3t|}t|v s%||vr:|  d| ” W Y d }~d S W Y d }~d S W Y d }~d S d }~ww | ”  |  d| ” d S )NZqwertyr   z&bad error message for invalid mode: %szno error for invalid mode: %s)r
   r   rU   rZ   Śstrrj   r   )r   Zbad_moder   ŚmsgŚsr   r   r   ŚtestBadModeArgument­   s   żżz"OtherFileTests.testBadModeArgumentc              
   C   s²   z3|   td|”}| t| d”” | ”  | ”  |   td|”}t| ”  d”}| ”  | ”  W n t	yP } z|  
d|t|f ” W Y d }~nd }~ww |  ||” d S )Nr	   Śasciir%   z error setting buffer size %d: %s)r
   r   r   rq   Śencoder   Śintr2   ŚdecoderD   rj   r   )r   rs   r   Śdrr   r   r   r   Ś_checkBufferSize½   s   "’zOtherFileTests._checkBufferSizec              	   C   s   dD ]}t j| dtd |  |” W d    q1 sw   Y  q|  td” |  d” W d    d S 1 s9w   Y  d S )N)rl   r   i   zline buffering)ŚmessageŚcategoryr7   )r   Zcheck_no_warningsŚRuntimeWarningrz   ZassertWarnsRegex)r   rs   r   r   r   ŚtestSetBufferSizeĖ   s   žż"’z OtherFileTests.testSetBufferSizec                 C   są   |   td”}zd| d” | ”  |   td”}| d”}|dkr&|  d| ” | ” dkr5|  d| ”  ” | ”  | ” dkrH|  d| ”  ” | ”  tj	 
t”}|dkrd|  d	| ” W | ”  d S W | ”  d S | ”  w )
Nr	   s   12345678901zrb+é   s   12345z(Read on file opened for update failed %rzFile pos after read wrong %dz!File pos after ftruncate wrong %dz"File size after ftruncate wrong %d)r
   r   r   r   r2   rj   r   rR   ŚosŚpathŚgetsize)r   r   ŚdataŚsizer   r   r   ŚtestTruncateOnWindowsŁ   s(   

żz$OtherFileTests.testTruncateOnWindowsc                 C   s¦  d}d}|t | }g d¢}ddddtdd	ffg}|  td
”}| || ” | |” | ”  |D ]\}}|  td”}	|  t|	|” t	|	|}
|
|  |	 ”  q2|  td”}	t
|D ]}t|	 q\| d”}z|	 ” }W n ty|   |  d” Y nw ||kr|  d||f ” | d”}tddt | }z|	 |” W n ty­   |  d” Y nw | ” }||kræ|  d||f ” | d”}z	|	 t |”}W n tyŪ   |  d” Y nw ||kré|  d||f ” z|	 ” }W n tyż   |  d” Y nw ||kr|  d||f ” |	 ”  |  td”}	z7|	D ]}qz|	 ”  |	 |” |	 ”  |	 ”  W n ty?   |  d” Y nw W |	 ”  d S W |	 ”  d S |	 ”  w )Ni @  s   ham
)s   spam, spam and eggs
s   eggs, spam, ham and spam
s   saussages, spam, spam and eggs
s   spam, ham, spam and eggs
s(   spam, spam, spam, spam, spam, ham, spam
s   wonderful spaaaaaam.
rL   rJ   rN   r&   r#   sd                                                                                                       r	   r%   r   zLreadline() after next() with supposedly empty iteration-buffer failed anywayzEreadline() after next() with empty buffer failed. Got %r, expected %ró    zLreadinto() after next() with supposedly empty iteration-buffer failed anywayzEreadinto() after next() with empty buffer failed. Got %r, expected %rzHread() after next() with supposedly empty iteration-buffer failed anywayzAread() after next() with empty buffer failed. Got %r, expected %rzMreadlines() after next() with supposedly empty iteration-buffer failed anywayzFreadlines() after next() with empty buffer failed. Got %r, expected %rz'read* failed after next() consumed file)Ślenr   r
   r   r   r1   r   r   Śnextr   ŚrangeŚpoprM   rU   rj   r&   r'   r2   rO   )r   Z
dataoffsetZfillerZnchunksZ	testlinesrX   ZbagrY   rZ   r   ŚmethŚiZtestlineŚliner4   Ślinesr   r   r   ŚtestIterationõ   s   ’


	

’’
’’
’’’
’
’’žzOtherFileTests.testIterationN)r=   r>   r?   r   rk   rp   rt   rz   r~   r   r   r   r   r   r   ri      s    ri   c                   @   r^   )ŚCOtherFileTestsNr`   r   r   r   r   r   V  rb   r   c                   @   rc   )ŚPyOtherFileTestsNre   r   r   r   r   r   Y  rh   r   Ś__main__)rV   r   Zunittestr   Śweakrefr   ra   Z_pyiorg   Ztest.support.os_helperr   Ztest.supportr   r   Ścollectionsr   r   ZTestCaser_   rd   ri   r   r   r=   Śmainr   r   r   r   Ś<module>   s*    v K’