a
    äzeg0  ã                   @   sp   d dl mZ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   s
   t j‚d S ©N©ÚioÚUnsupportedOperation©Úself© r   ú%/usr/lib/python3.9/test/audiotests.pyÚtell   s    zUnseekableIO.tellc                 O   s
   t j‚d S r   r   )r   ÚargsÚkwargsr   r   r   Úseek   s    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 |
¡|¡ qâd 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   r0   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_file6   s    zAudioWriteTests.create_filec                 C   sŠ   | j  |d¡h}|  | ¡ | j¡ |  | ¡ | j¡ |  | ¡ | j¡ |  | 	¡ |¡ |  | 
|¡|¡ W d   ƒ n1 s|0    Y  d S ©NÚrb)r5   r6   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%   ÚwriteframesrA   r0   r"   r#   r$   r&   r'   r   ©r   r   r   r   r   Útest_write_paramsF   s    
ÿz!AudioWriteTests.test_write_paramsc              
   C   sä   |   | jj¡> | j td¡ W d   ƒ n1 s40    Y  W d   ƒ n1 sR0    Y  |   | jj¡f ttdƒ<}| j |¡ W d   ƒ n1 sš0    Y  W d   ƒ n1 s¸0    Y  W d   ƒ n1 sÖ0    Y  d S r3   )ÚassertRaisesr5   ÚErrorr6   r   )r   r<   r   r   r   Ú&test_write_context_manager_calls_closeN   s    <z6AudioWriteTests.test_write_context_manager_calls_closec              	   C   sf  t tdƒ€}| j  |¡D}| | j¡ | | j¡ | | j¡ | 	| j
| j¡ W d   ƒ n1 sb0    Y  |  |j| j¡ W d   ƒ n1 s0    Y  t tdƒ¬}| j  |¡X}|  | ¡ j¡ | ¡ }|  |j| j¡ |  |j| j¡ |  |j| j¡ W d   ƒ n1 s0    Y  | js2|  | ¡ ¡ |  |j| j¡ W d   ƒ n1 sX0    Y  d S )Nr4   r?   )r6   r   r5   r7   r"   r8   r#   r9   r$   r:   r&   r'   r   Úclosedr1   ÚassertFalseÚgetfpr!   ÚassertIsNone)r   r<   r   r-   r   r   r   Ú#test_context_manager_with_open_fileY   s"    ..0z3AudioWriteTests.test_context_manager_with_open_filec                 C   sî   | j  td¡D}| | j¡ | | j¡ | | j¡ | 	| j
| j¡ W d   ƒ n1 sX0    Y  | j  t¡X}|  | ¡ j¡ | ¡ }|  |j| j¡ |  |j| j¡ |  |j| j¡ W d   ƒ n1 sÌ0    Y  | jsê|  | ¡ ¡ d S r3   )r5   r6   r   r7   r"   r8   r#   r9   r$   r:   r&   r'   rK   rL   rJ   r!   r   r1   rM   )r   r   r-   r   r   r   Ú"test_context_manager_with_filenamel   s    ..z2AudioWriteTests.test_context_manager_with_filenamec                 C   s@   |   t¡}| | j¡ | | j¡ | ¡  |  t| j| j¡ d S r   )r=   r   rC   r%   rD   rA   r   rB   rE   r   r   r   Ú
test_write}   s
    
zAudioWriteTests.test_writec                 C   sD   |   t¡}| | j¡ | t| jƒ¡ | ¡  |  t| j| j¡ d S r   )	r=   r   rC   r%   rD   Ú	bytearrayrA   r   rB   rE   r   r   r   Útest_write_bytearray…   s
    
z$AudioWriteTests.test_write_bytearrayc                 C   sH   |   t¡}| | j¡ | t d| j¡¡ | ¡  |  t| j| j¡ d S )NÚh)	r=   r   rC   r%   rD   ÚarrayrA   r   rB   rE   r   r   r   Útest_write_array   s
    
z AudioWriteTests.test_write_arrayc                 C   sD   |   t¡}| | j¡ | t| jƒ¡ | ¡  |  t| j| j¡ d S r   )	r=   r   rC   r%   rD   Ú
memoryviewrA   r   rB   rE   r   r   r   Útest_write_memoryview•   s
    
z%AudioWriteTests.test_write_memoryviewc                 C   s´   t tdƒH}| d¡ |  |¡}| | jd ¡ | | j¡ | ¡  W d   ƒ n1 sX0    Y  t tdƒ4}|  	| 
d¡d¡ |  || j| j¡ W d   ƒ n1 s¦0    Y  d S ©Nr4   ó   ababagalamagar   r?   é   ©r6   r   Úwriter=   rC   r%   rD   rA   r   r   ÚreadrB   r;   r   r   r   Útest_incompleted_write   s    

&z&AudioWriteTests.test_incompleted_writec                 C   sÜ   t tdƒp}| d¡ |  |¡}| | j¡ | j| j }| | j	d | … ¡ | | j	| d … ¡ | 
¡  W d   ƒ n1 s€0    Y  t tdƒ4}|  | d¡d¡ |  || j| j	¡ W d   ƒ n1 sÎ0    Y  d S ©Nr4   rY   r?   rZ   )r6   r   r\   r=   rC   r%   r"   r#   rD   rA   r   r   r]   rB   ©r   r<   r   Ú	framesizer   r   r   Útest_multiple_writes©   s    

&z$AudioWriteTests.test_multiple_writesc                 C   s´   t tdƒH}| d¡ |  |¡}| | jd ¡ | | j¡ | ¡  W d   ƒ n1 sX0    Y  t tdƒ4}|  	| 
d¡d¡ |  || j| j¡ W d   ƒ n1 s¦0    Y  d S rX   r[   r;   r   r   r   Útest_overflowed_write·   s    

&z%AudioWriteTests.test_overflowed_writec                 C   s‚   |   t¡(}| | j¡ | | j¡ W d   ƒ n1 s80    Y  ttdƒ"}|  || j| j¡ W d   ƒ n1 st0    Y  d S r>   )r=   r   rC   r%   rD   rA   r   rB   )r   r   r<   r   r   r   Útest_unseekable_readÃ   s
    *z$AudioWriteTests.test_unseekable_readc              	   C   s‚   t tdƒR}|  |¡(}| | j¡ | | j¡ W d   ƒ n1 sD0    Y  W d   ƒ n1 sb0    Y  |  t| j| j¡ d S r3   )r   r   r=   rC   r%   rD   rA   rB   r;   r   r   r   Útest_unseekable_writeË   s
    Hz%AudioWriteTests.test_unseekable_writec              	   C   sè   t tdƒx}| d¡ |  |¡}| | jd ¡ z| | j¡ W n tyR   Y n0 z| 	¡  W n tyr   Y n0 W d   ƒ n1 sˆ0    Y  t
tdƒ8}|  | d¡d¡ |  || jd | j¡ W d   ƒ n1 sÚ0    Y  d S rX   )r   r   r\   r=   rC   r%   rD   rA   ÚOSErrorr   r6   r   r]   rB   r;   r   r   r   Ú!test_unseekable_incompleted_writeÓ   s    

$z1AudioWriteTests.test_unseekable_incompleted_writec              	   C   sþ   t tdƒx}| d¡ |  |¡}| | jd ¡ z| | j¡ W n tyR   Y n0 z| 	¡  W n tyr   Y n0 W d   ƒ n1 sˆ0    Y  t
tdƒN}|  | d¡d¡ | j| j }|  || jd | jd | … ¡ W d   ƒ n1 sð0    Y  d S rX   )r   r   r\   r=   rC   r%   rD   rA   rf   r   r6   r   r]   r"   r#   rB   r`   r   r   r   Ú test_unseekable_overflowed_writeå   s     

$z0AudioWriteTests.test_unseekable_overflowed_writeN)r   r   r   r=   rB   rF   rI   rN   rO   rP   rR   rU   rW   r^   rb   rc   rd   re   rg   rh   r   r   r   r   r2   4   s"   r2   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   )r5   r6   rj   r   r0   r"   r#   r$   Úsndfilenframesr&   r'   rE   r   r   r   Útest_read_paramsÿ   s    ÿz)AudioTestsWithSourceFile.test_read_paramsc              	   C   sþ   t | jdƒF}| j  |¡ }| _|  |j¡ | ¡  |  |j| j¡ W d   ƒ n1 sX0    Y  t t	dƒ~}| j  |d¡ }| _
|  |j¡ |  | jj¡ | ¡  W d   ƒ n1 sº0    Y  |  |j| j¡ | ¡  W d   ƒ n1 sð0    Y  d S )Nr?   r4   )r6   rj   r5   r   rK   rJ   r   r   r1   r   r   rG   rH   )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 s80    Y  |  | jj¡" | | ¡ d ¡ W d   ƒ n1 sz0    Y  d S )Né   é   r   ó    éÿÿÿÿr   )r"   r#   rA   r5   r6   rj   r   r   r@   r   ÚrewindZsetposrG   rH   r    )r   ra   Zchunk1Zchunk2r   Zpos0Zpos2r   r   r   Ú	test_read  s,    

*z"AudioTestsWithSourceFile.test_readc                 C   sÈ   | j  | j¡ }| _| j  td¡ }| _| | ¡ ¡ d}| ¡ }|dkrl|d7 }| 	| 
|¡¡ ||8 }qB| ¡  | j  td¡ }| _| ¡  |  | ¡ | ¡ ¡ |  | 
| ¡ ¡| 
| ¡ ¡¡ d S )Nr4   r   r   r?   )r5   r6   rj   r   r   r   Z	setparamsr!   r    rD   r@   r   rt   r   )r   r   r   ÚiÚnr   r   r   Ú	test_copy+  s     
ÿz"AudioTestsWithSourceFile.test_copyc              	   C   s>  t tdƒT}| d¡ t | jdƒ}| | ¡ ¡ W d   ƒ n1 sF0    Y  W d   ƒ n1 sd0    Y  t tdƒ°}|  | d¡d¡ | j  |d¡n}|  | ¡ | j¡ |  | 	¡ | j
¡ |  | ¡ | j¡ |  | ¡ | j¡ |  | | j¡| j¡ W d   ƒ n1 s0    Y  W d   ƒ n1 s00    Y  d S r_   )r6   r   r\   rj   r]   r   r5   r   r"   r   r#   r   r$   r    rm   r@   r%   rA   r;   r   r   r   Útest_read_not_from_start<  s    
Jz1AudioTestsWithSourceFile.test_read_not_from_startN)
r   r   r   Úclassmethodrl   rn   ro   ru   rx   ry   r   r   r   r   ri   ù   s   
ri   )Ztest.supportr   r   r   rT   r   r)   ÚFileIOr   r   r2   ri   r   r   r   r   Ú<module>   s   % F