o
    GXīh0  ć                   @   sx   d dl mZ d dlmZmZ d dlZd dlZd dlZG dd dejZ	G dd dZ
G dd	 d	e
ZG d
d de
ZdS )é    )Śfindfile)ŚTESTFNŚunlinkNc                   @   s   e Zd Zdd Zdd ZdS )ŚUnseekableIOc                 C   ó   t j©N©ŚioŚUnsupportedOperation©Śself© r   ś9/opt/python-3.10.19/usr/lib/python3.10/test/audiotests.pyŚtell	   ó   zUnseekableIO.tellc                 O   r   r   r   )r   ŚargsŚkwargsr   r   r   Śseek   r   zUnseekableIO.seekN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r   r   r   r      s    r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	Ś
AudioTestsFc                 C   s   d  | _ | _d S r   )ŚfŚfoutr   r   r   r   ŚsetUp   s   zAudioTests.setUpc                 C   s4   | j d ur
| j  ”  | jd ur| j ”  tt d S r   )r   Ścloser   r   r   r   r   r   r   ŚtearDown   s
   



zAudioTests.tearDownc              	   C   s
  |   | ” |” |   | ” |” |   | ” |” |   | ” |” |   | ” |” |   | ” |” | ” }|   |||||||f” |   |j|” |   |j	|” |   |j
|” |   |j|” |   |j|” |   |j|” ttjd D ]}	t ||	”}
|   t |
”|” qqd S )Né   )ŚassertEqualŚgetnchannelsŚgetsampwidthŚgetframerateŚ
getnframesZgetcomptypeZgetcompnameŚ	getparamsŚ	nchannelsŚ	sampwidthŚ	framerateŚnframesŚcomptypeŚcompnameŚrangeŚpickleŚHIGHEST_PROTOCOLŚdumpsŚloads)r   r   r$   r%   r&   r'   r(   r)   ŚparamsŚprotoŚdumpr   r   r   Ścheck_params   s(   ’žzAudioTests.check_paramsN)r   r   r   Śclose_fdr   r   r2   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#S )$ŚAudioWriteTestsc                 C   sL   | j  |d” }| _| | j” | | j” | | j” | 	| j
| j” |S ©NŚwb)ŚmoduleŚopenr   Śsetnchannelsr$   Śsetsampwidthr%   Śsetframerater&   Śsetcomptyper(   r)   ©r   Śtestfiler   r   r   r   Ścreate_file7   s   zAudioWriteTests.create_filec                 C   s   | j  |d”5}|  | ” | j” |  | ” | j” |  | ” | j” |  | 	” |” |  | 
|”|” W d    d S 1 s?w   Y  d S ©NŚrb)r7   r8   r   r   r$   r    r%   r!   r&   r"   Ś
readframes)r   r>   r'   Śframesr   r   r   r   Ś
check_file?   s   "ūzAudioWriteTests.check_filec              	   C   sP   |   t”}| | j” | | j” |  || j| j| j	| j| j
| j” | ”  d S r   )r?   r   Ś
setnframesr'   ŚwriteframesrC   r2   r$   r%   r&   r(   r)   r   ©r   r   r   r   r   Śtest_write_paramsG   s   
’z!AudioWriteTests.test_write_paramsc              
   C   sö   |   | jj” | j td” W d    n1 sw   Y  W d    n1 s)w   Y  |   | jj”< ttd}| j |” W d    n1 sMw   Y  W d    n1 s\w   Y  W d    d S W d    d S 1 stw   Y  d S r5   )ŚassertRaisesr7   ŚErrorr8   r   )r   r>   r   r   r   Ś&test_write_context_manager_calls_closeO   s    ’’’’’"’z6AudioWriteTests.test_write_context_manager_calls_closec              	   C   sb  t td@}| j  |”"}| | j” | | j” | | j” | 	| j
| j” W d    n1 s1w   Y  |  |j| j” W d    n1 sHw   Y  t tdU}| j  |”,}|  | ” j” | ” }|  |j| j” |  |j| j” |  |j| j” W d    n1 sw   Y  | js|  | ” ” |  |j| j” W d    d S 1 sŖw   Y  d S )Nr6   rA   )r8   r   r7   r9   r$   r:   r%   r;   r&   r<   r(   r)   r   Śclosedr3   ŚassertFalseŚgetfpr#   ŚassertIsNone)r   r>   r   r/   r   r   r   Ś#test_context_manager_with_open_fileZ   s*   üśū"÷z3AudioWriteTests.test_context_manager_with_open_filec                 C   sņ   | j  td”"}| | j” | | j” | | j” | 	| j
| j” W d    n1 s,w   Y  | j  t”,}|  | ” j” | ” }|  |j| j” |  |j| j” |  |j| j” W d    n1 sfw   Y  | jsw|  | ” ” d S d S r5   )r7   r8   r   r9   r$   r:   r%   r;   r&   r<   r(   r)   rM   rN   rL   r#   r   r3   rO   )r   r   r/   r   r   r   Ś"test_context_manager_with_filenamem   s    üū’z2AudioWriteTests.test_context_manager_with_filenamec                 C   s@   |   t”}| | j” | | j” | ”  |  t| j| j” d S r   )r?   r   rE   r'   rF   rC   r   rD   rG   r   r   r   Ś
test_write~   s
   
zAudioWriteTests.test_writec                 C   óD   |   t”}| | j” | t| j” | ”  |  t| j| j” d S r   )	r?   r   rE   r'   rF   Ś	bytearrayrC   r   rD   rG   r   r   r   Śtest_write_bytearray   ó
   
z$AudioWriteTests.test_write_bytearrayc                 C   sH   |   t”}| | j” | t d| j”” | ”  |  t| j| j” d S )NŚh)	r?   r   rE   r'   rF   ŚarrayrC   r   rD   rG   r   r   r   Śtest_write_array   s
   
z AudioWriteTests.test_write_arrayc                 C   rS   r   )	r?   r   rE   r'   rF   Ś
memoryviewrC   r   rD   rG   r   r   r   Śtest_write_memoryview   rV   z%AudioWriteTests.test_write_memoryviewc                 C   s¶   t td$}| d” |  |”}| | jd ” | | j” | ”  W d    n1 s,w   Y  t td}|  	| 
d”d” |  || j| j” W d    d S 1 sTw   Y  d S ©Nr6   ó   ababagalamagar   rA   é   ©r8   r   Śwriter?   rE   r'   rF   rC   r   r   ŚreadrD   r=   r   r   r   Śtest_incompleted_write   ó   


ū"žz&AudioWriteTests.test_incompleted_writec                 C   sŽ   t td8}| d” |  |”}| | j” | j| j }| | j	d |  ” | | j	| d  ” | 
”  W d    n1 s@w   Y  t td}|  | d”d” |  || j| j	” W d    d S 1 shw   Y  d S ©Nr6   r]   rA   r^   )r8   r   r`   r?   rE   r'   r$   r%   rF   rC   r   r   ra   rD   ©r   r>   r   Ś	framesizer   r   r   Śtest_multiple_writesŖ   s   


ł	"žz$AudioWriteTests.test_multiple_writesc                 C   s¶   t td$}| d” |  |”}| | jd ” | | j” | ”  W d    n1 s,w   Y  t td}|  	| 
d”d” |  || j| j” W d    d S 1 sTw   Y  d S r\   r_   r=   r   r   r   Śtest_overflowed_writeø   rc   z%AudioWriteTests.test_overflowed_writec                 C   s   |   t”}| | j” | | j” W d    n1 sw   Y  ttd}|  || j| j” W d    d S 1 s;w   Y  d S r@   )r?   r   rE   r'   rF   rC   r   rD   )r   r   r>   r   r   r   Śtest_unseekable_readÄ   s   ž"’z$AudioWriteTests.test_unseekable_readc              	   C   s   t td)}|  |”}| | j” | | j” W d    n1 s"w   Y  W d    n1 s1w   Y  |  t| j| j” d S r5   )r   r   r?   rE   r'   rF   rC   rD   r=   r   r   r   Śtest_unseekable_writeĢ   s   ž’z%AudioWriteTests.test_unseekable_writec              	   C   sź   t td<}| d” |  |”}| | jd ” z| | j” W n	 ty)   Y nw z| 	”  W n	 ty9   Y nw W d    n1 sDw   Y  t
td}|  | d”d” |  || jd | j” W d    d S 1 snw   Y  d S r\   )r   r   r`   r?   rE   r'   rF   rC   ŚOSErrorr   r8   r   ra   rD   r=   r   r   r   Ś!test_unseekable_incompleted_writeŌ   s(   

’’ö"žz1AudioWriteTests.test_unseekable_incompleted_writec              	   C   s   t td<}| d” |  |”}| | jd ” z| | j” W n	 ty)   Y nw z| 	”  W n	 ty9   Y nw W d    n1 sDw   Y  t
td(}|  | d”d” | j| j }|  || jd | jd |  ” W d    d S 1 syw   Y  d S r\   )r   r   r`   r?   rE   r'   rF   rC   rk   r   r8   r   ra   r$   r%   rD   re   r   r   r   Ś test_unseekable_overflowed_writeę   s*   

’’ö""żz0AudioWriteTests.test_unseekable_overflowed_writeN)r   r   r   r?   rD   rH   rK   rP   rQ   rR   rU   rY   r[   rb   rg   rh   ri   rj   rl   rm   r   r   r   r   r4   5   s$    r4   c                   @   s@   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dS )ŚAudioTestsWithSourceFilec                 C   s   t | jdd| _d S )NZ	audiodata)Zsubdir)r   ZsndfilenameŚsndfilepath)Śclsr   r   r   Ś
setUpClassü   s   z#AudioTestsWithSourceFile.setUpClassc              	   C   s:   | j  | j” }| _|  || j| j| j| j| j	| j
” d S r   )r7   r8   ro   r   r2   r$   r%   r&   Śsndfilenframesr(   r)   rG   r   r   r   Śtest_read_params   s   ’z)AudioTestsWithSourceFile.test_read_paramsc              	   C   s   t | jd#}| j  |” }| _|  |j” | ”  |  |j| j” W d    n1 s,w   Y  t t	d@}| j  |d” }| _
|  |j” |  | jj” | ”  W d    n1 s]w   Y  |  |j| j” | ”  W d    d S 1 syw   Y  d S )NrA   r6   )r8   ro   r7   r   rM   rL   r   r   r3   r   r   rI   rJ   )r   r>   r   r   r   r   r   Ś
test_close  s   ü
’
"śz#AudioTestsWithSourceFile.test_closec                 C   s  | j | j }| jd d|  }| jd| d|  }| j | j” }| _|  | d”d” |  | 	” d” |  | d”|” | 
”  | 	” }|  |d” |  | d”|” | 	” }|  |d” |  | d”|” | |” |  | d”|” | |” |  | d”|” |  | jj” | d” W d    n1 sw   Y  |  | jj” | | ” d ” W d    d S 1 s¼w   Y  d S )Né   é   r   ó    é’’’’r   )r$   r%   rC   r7   r8   ro   r   r   rB   r   ŚrewindZsetposrI   rJ   r"   )r   rf   Zchunk1Zchunk2r   Zpos0Zpos2r   r   r   Ś	test_read  s0   

’"’z"AudioTestsWithSourceFile.test_readc                 C   sĪ   | j  | j” }| _| j  td” }| _| | ” ” d}| ” }|dkr9|d7 }| 	| 
|”” ||8 }|dks%| ”  | j  td” }| _| ”  |  | ” | ” ” |  | 
| ” ”| 
| ” ”” d S )Nr6   r   r   rA   )r7   r8   ro   r   r   r   Z	setparamsr#   r"   rF   rB   r   ry   r   )r   r   r   ŚiŚnr   r   r   Ś	test_copy,  s"   ż’z"AudioTestsWithSourceFile.test_copyc              	   C   sL  t td*}| d” t | jd}| | ” ” W d    n1 s#w   Y  W d    n1 s2w   Y  t td`}|  | d”d” | j  |d”7}|  | ” | j” |  | 	” | j
” |  | ” | j” |  | ” | j” |  | | j”| j” W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S rd   )r8   r   r`   ro   ra   r   r7   r   r$   r    r%   r!   r&   r"   rr   rB   r'   rC   r=   r   r   r   Śtest_read_not_from_start=  s&   
’žūž"žz1AudioTestsWithSourceFile.test_read_not_from_startN)
r   r   r   Śclassmethodrq   rs   rt   rz   r}   r~   r   r   r   r   rn   ś   s    
rn   )Ztest.supportr   Ztest.support.os_helperr   r   rX   r	   r+   ŚFileIOr   r   r4   rn   r   r   r   r   Ś<module>   s    % F