
    ;e0                         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ej                  Z	 G d d          Z
 G d d	e
          Z G d
 de
          ZdS )    )findfile)TESTFNunlinkNc                       e Zd Zd Zd ZdS )UnseekableIOc                     t           j        NioUnsupportedOperationselfs    &/usr/lib/python3.11/test/audiotests.pytellzUnseekableIO.tell	       %%    c                     t           j        r	   r
   )r   argskwargss      r   seekzUnseekableIO.seek   r   r   N)__name__
__module____qualname__r   r    r   r   r   r      s2        & & && & & & &r   r   c                   $    e Zd ZdZd Zd Zd ZdS )
AudioTestsFc                 "    d x| _         | _        d S r	   )ffoutr   s    r   setUpzAudioTests.setUp   s    !!r   c                     | j         | j                                          | j        | j                                         t          t                     d S r	   )r   closer   r   r   r   s    r   tearDownzAudioTests.tearDown   sB    6FLLNNN9 IOOvr   c           	      B   |                      |                                |           |                      |                                |           |                      |                                |           |                      |                                |           |                      |                                |           |                      |                                |           |                                }|                      |||||||f           |                      |j        |           |                      |j	        |           |                      |j
        |           |                      |j        |           |                      |j        |           |                      |j        |           t          t          j        dz             D ]?}	t          j        ||	          }
|                      t          j        |
          |           @d S )N   )assertEqualgetnchannelsgetsampwidthgetframerate
getnframesgetcomptypegetcompname	getparams	nchannels	sampwidth	frameratenframescomptypecompnamerangepickleHIGHEST_PROTOCOLdumpsloads)r   r   r.   r/   r0   r1   r2   r3   paramsprotodumps              r   check_paramszAudioTests.check_params   s   ))9555))9555))9555111(333(333Iy'8XN	P 	P 	P)9555)9555)9555111(333(33362Q677 	9 	9E<..DV\$//8888	9 	9r   N)r   r   r   close_fdr    r#   r<   r   r   r   r   r      sF        H" " "  9 9 9 9 9r   r   c                   t    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )AudioWriteTestsc                 &   | j                             |d          x}| _        |                    | j                   |                    | j                   |                    | j                   |	                    | j
        | j                   |S Nwb)moduleopenr   setnchannelsr.   setsampwidthr/   setframerater0   setcomptyper2   r3   r   testfiler   s      r   create_filezAudioWriteTests.create_file7   sy    ((4888DI	t~&&&	t~&&&	t~&&&	dmT]333r   c                    | j                             |d          5 }|                     |                                | j                   |                     |                                | j                   |                     |                                | j                   |                     |	                                |           |                     |
                    |          |           d d d            d S # 1 swxY w Y   d S Nrb)rC   rD   r&   r'   r.   r(   r/   r)   r0   r*   
readframes)r   rJ   r1   framesr   s        r   
check_filezAudioWriteTests.check_file?   s!   [h-- 	<Q^^--t~>>>Q^^--t~>>>Q^^--t~>>>Q\\^^W555Q\\'22F;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   CDD	Dc           	      <   |                      t                    }|                    | j                   |                    | j                   |                     || j        | j        | j	        | j        | j
        | j                   |                                 d S r	   )rK   r   
setnframesr1   writeframesrP   r<   r.   r/   r0   r2   r3   r"   r   r   s     r   test_write_paramsz!AudioWriteTests.test_write_paramsG   s    V$$	T\"""	dk"""!T^T^T^,t}	F 	F 	F						r   c                    |                      | j        j                  5  | j                            t          d          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                      | j        j                  5  t          t          d          5 }| j                            |          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S rA   )assertRaisesrC   ErrorrD   r   )r   rJ   s     r   &test_write_context_manager_calls_closez6AudioWriteTests.test_write_context_manager_calls_closeO   s1    t{011 	 	!!&$//                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 t{011 	 	fd## x[%%h//                              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !A&AA&A	A&A	A&&A*-A*C>&C&CC&CC&CC&C>&C*	*C>-C*	.C>>DDc                 |   t          t          d          5 }| j                             |          5 }|                    | j                   |                    | j                   |                    | j                   |	                    | j
        | j                   d d d            n# 1 swxY w Y   |                     |j        | j                   d d d            n# 1 swxY w Y   t          t          d          5 }| j                             |          5 }|                     |                                j                   |                                }|                     |j        | j                   |                     |j        | j                   |                     |j        | j                   d d d            n# 1 swxY w Y   | j        s'|                     |                                           |                     |j        | j                   d d d            d S # 1 swxY w Y   d S )NrB   rN   )rD   r   rC   rE   r.   rF   r/   rG   r0   rH   r2   r3   r&   closedr=   assertFalsegetfpr-   assertIsNone)r   rJ   r   r9   s       r   #test_context_manager_with_open_filez3AudioWriteTests.test_context_manager_with_open_fileZ   s   &$ 	=8!!(++ <qt~...t~...t~...dmT];;;	< < < < < < < < < < < < < < <
 X_dm<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= &$ 		=8!!(++ Cq  !1222  !14>BBB  !14>BBB  !14>BBBC C C C C C C C C C C C C C C = -!!!'')),,,X_dm<<<		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		=sm   C#A/B, C#,B0	0C#3B0	4#C##C'*C'H1B!G?H1G	H1G	AH11H58H5c                 `   | j                             t          d          5 }|                    | j                   |                    | j                   |                    | j                   |	                    | j
        | j                   d d d            n# 1 swxY w Y   | j                             t                    5 }|                     |                                j                   |                                }|                     |j        | j                   |                     |j        | j                   |                     |j        | j                   d d d            n# 1 swxY w Y   | j        s)|                     |                                           d S d S rA   )rC   rD   r   rE   r.   rF   r/   rG   r0   rH   r2   r3   r]   r^   r\   r-   r&   r=   r_   )r   r   r9   s      r   "test_context_manager_with_filenamez2AudioWriteTests.test_context_manager_with_filenamem   s    [fd++ 	8qNN4>***NN4>***NN4>***MM$-777		8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
 [f%% 	?QWWYY-...[[]]FV-t~>>>V-t~>>>V-t~>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? } 	)aggii(((((	) 	)s%   A/BB #B B!E33E7:E7c                    |                      t                    }|                    | j                   |                    | j                   |                                 |                     t          | j        | j                   d S r	   )rK   r   rS   r1   rT   rP   r"   rQ   rU   s     r   
test_writezAudioWriteTests.test_write~   sj    V$$	T\"""	dk"""				dk:::::r   c                 0   |                      t                    }|                    | j                   |                    t          | j                             |                                 |                     t          | j        | j                   d S r	   )	rK   r   rS   r1   rT   	bytearrayrP   r"   rQ   rU   s     r   test_write_bytearrayz$AudioWriteTests.test_write_bytearray   sr    V$$	T\"""	i,,---				dk:::::r   c                 <   |                      t                    }|                    | j                   |                    t          j        d| j                             |                                 |                     t          | j        | j                   d S )Nh)	rK   r   rS   r1   rT   arrayrP   r"   rQ   rU   s     r   test_write_arrayz AudioWriteTests.test_write_array   sv    V$$	T\"""	ek#t{33444				dk:::::r   c                 0   |                      t                    }|                    | j                   |                    t          | j                             |                                 |                     t          | j        | j                   d S r	   )	rK   r   rS   r1   rT   
memoryviewrP   r"   rQ   rU   s     r   test_write_memoryviewz%AudioWriteTests.test_write_memoryview   sr    V$$	T\"""	j--...				dk:::::r   c                 :   t          t          d          5 }|                    d           |                     |          }|                    | j        dz              |                    | j                   |                                 d d d            n# 1 swxY w Y   t          t          d          5 }| 	                    |
                    d          d           |                     || j        | j                   d d d            d S # 1 swxY w Y   d S NrB      ababagalamagar%   rN      rD   r   writerK   rS   r1   rT   rP   r"   r&   readrQ   rI   s      r   test_incompleted_writez&AudioWriteTests.test_incompleted_write      &$ 	8NN+,,,  **ALL)***MM$+&&&GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &$ 	A8X]]2..0@AAAOOHdlDK@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A%   A6BBB8ADDDc                    t          t          d          5 }|                    d           |                     |          }|                    | j                   | j        | j        z  }|                    | j	        d |                     |                    | j	        | d                     |
                                 d d d            n# 1 swxY w Y   t          t          d          5 }|                     |                    d          d           |                     || j        | j	                   d d d            d S # 1 swxY w Y   d S NrB   rq   rN   rr   )rD   r   rt   rK   rS   r1   r.   r/   rT   rP   r"   r&   ru   rQ   r   rJ   r   	framesizes       r   test_multiple_writesz$AudioWriteTests.test_multiple_writes   s   &$ 	8NN+,,,  **ALL&&&7IMM$+k	zk2333MM$+yjkk2333GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &$ 	A8X]]2..0@AAAOOHdlDK@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As%   B.CCC0AEEEc                 :   t          t          d          5 }|                    d           |                     |          }|                    | j        dz
             |                    | j                   |                                 d d d            n# 1 swxY w Y   t          t          d          5 }| 	                    |
                    d          d           |                     || j        | j                   d d d            d S # 1 swxY w Y   d S rp   rs   rI   s      r   test_overflowed_writez%AudioWriteTests.test_overflowed_write   rw   rx   c                 p   |                      t                    5 }|                    | j                   |                    | j                   d d d            n# 1 swxY w Y   t          t          d          5 }|                     || j        | j                   d d d            d S # 1 swxY w Y   d S rM   )rK   r   rS   r1   rT   rP   r   rQ   )r   r   rJ   s      r   test_unseekable_readz$AudioWriteTests.test_unseekable_read   s0   f%% 	'LL&&&MM$+&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' &$'' 	A8OOHdlDK@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As#   5AA #A <"B++B/2B/c                 n   t          t          d          5 }|                     |          5 }|                    | j                   |                    | j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          | j        | j                   d S rA   )r   r   rK   rS   r1   rT   rP   rQ   rI   s      r   test_unseekable_writez%AudioWriteTests.test_unseekable_write   s   &$'' 	+8!!(++ +qT\***dk***+ + + + + + + + + + + + + + +	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 	dk:::::s4   B5A-!B-A1	1B4A1	5BBBc                    t          t          d          5 }|                    d           |                     |          }|                    | j        dz              	 |                    | j                   n# t          $ r Y nw xY w	 |	                                 n# t          $ r Y nw xY wd d d            n# 1 swxY w Y   t          t          d          5 }|                     |                    d          d           |                     || j        dz   | j                   d d d            d S # 1 swxY w Y   d S rp   )r   r   rt   rK   rS   r1   rT   rP   OSErrorr"   rD   r&   ru   rQ   rI   s      r   !test_unseekable_incompleted_writez1AudioWriteTests.test_unseekable_incompleted_write   s   &$'' 	8NN+,,,  **ALL)***dk****   				   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &$ 	E8X]]2..0@AAAOOHdlQ&6DDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Esm   AB<A:9B<:
BB<BB<B B< 
B-*B<,B--B<<C C AD77D;>D;c                    t          t          d          5 }|                    d           |                     |          }|                    | j        dz
             	 |                    | j                   n# t          $ r Y nw xY w	 |	                                 n# t          $ r Y nw xY wd d d            n# 1 swxY w Y   t          t          d          5 }|                     |                    d          d           | j        | j        z  }|                     || j        dz
  | j        d |                     d d d            d S # 1 swxY w Y   d S rp   )r   r   rt   rK   rS   r1   rT   rP   r   r"   rD   r&   ru   r.   r/   rQ   r{   s       r    test_unseekable_overflowed_writez0AudioWriteTests.test_unseekable_overflowed_write   s   &$'' 	8NN+,,,  **ALL)***dk****   				   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &$ 	R8X]]2..0@AAA7IOOHdlQ&6KiZK8PQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rsm   AB<A:9B<:
BB<BB<B B< 
B-*B<,B--B<<C C A&EEEN)r   r   r   rK   rQ   rV   rZ   r`   rb   rd   rg   rk   rn   rv   r}   r   r   r   r   r   r   r   r   r?   r?   5   s'         < < <  	 	 	= = =&) ) )"; ; ;; ; ;; ; ;; ; ;
A 
A 
AA A A
A 
A 
AA A A; ; ;E E E$R R R R Rr   r?   c                   B    e Zd Zed             Zd Zd Zd Zd Zd Z	dS )AudioTestsWithSourceFilec                 <    t          | j        d          | _        d S )N	audiodata)subdir)r   sndfilenamesndfilepath)clss    r   
setUpClassz#AudioTestsWithSourceFile.setUpClass   s    "3?;GGGr   c           	          | j                             | j                  x}| _        |                     || j        | j        | j        | j        | j	        | j
                   d S r	   )rC   rD   r   r   r<   r.   r/   r0   sndfilenframesr2   r3   rU   s     r   test_read_paramsz)AudioTestsWithSourceFile.test_read_params   sd    [%%d&6777DF!T^T^T^-t}dm	M 	M 	M 	M 	Mr   c                    t          | j        d          5 }| j                             |          x}| _        |                     |j                   |                                 |                     |j        | j                   d d d            n# 1 swxY w Y   t          t          d          5 }| j                             |d          x}| _
        |                     |j                   |                     | j        j                  5  |                                 d d d            n# 1 swxY w Y   |                     |j        | j                   |                                 d d d            d S # 1 swxY w Y   d S )NrN   rB   )rD   r   rC   r   r]   r\   r"   r&   r=   r   r   rX   rY   )r   rJ   r   r   s       r   
test_closez#AudioTestsWithSourceFile.test_close  s	   $"D)) 	=X))(333AX_---GGIIIX_dm<<<		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=
 &$ 	8#{//$???D49X_---""4;#455  

              X_dm<<<JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sI   A0BBB2AE;D/#E;/D3	3E;6D3	77E;;E?E?c                 z   | j         | j        z  }| j        d d|z           }| j        d|z  d|z           }| j                            | j                  x}| _        |                     |                    d          d           |                     |	                                d           |                     |                    d          |           |
                                 |	                                }|                     |d           |                     |                    d          |           |	                                }|                     |d           |                     |                    d          |           |                    |           |                     |                    d          |           |                    |           |                     |                    d          |           |                     | j        j                  5  |                    d           d d d            n# 1 swxY w Y   |                     | j        j                  5  |                    |                                dz              d d d            d S # 1 swxY w Y   d S )N      r   r   r%   )r.   r/   rP   rC   rD   r   r   r&   rO   r   rewindsetposrX   rY   r*   )r   r|   chunk1chunk2r   pos0pos2s          r   	test_readz"AudioTestsWithSourceFile.test_read  s   NT^3	^a)m^,Q]A	M9:[%%d&6777DFa#...1%%%a&111	


vvxxq!!!a&111vvxxq!!!a&111	a&111	a&111t{011 	 	HHRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	t{011 	) 	)HHQ\\^^a'(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s$   ,III8+J00J47J4c                 h   | j                             | j                  x}| _        | j                             t          d          x}| _        |                    |                                           d}|                                }|dk    r8|dz  }|	                    |
                    |                     ||z  }|dk    8|                                 | j                             t          d          x}| _        |                                 |                     |                                |                                           |                     |
                    |                                          |
                    |                                                     d S )NrB   r   r%   rN   )rC   rD   r   r   r   r   	setparamsr-   r*   rT   rO   r"   r   r&   )r   r   r   ins        r   	test_copyz"AudioTestsWithSourceFile.test_copy,  sb   [%%d&6777DF;++FD999tyq{{}}%%%LLNN!eeFAQ\\!__---FA !ee 	

;++FD999ty	


(8(8999allnn55):):;;	= 	= 	= 	= 	=r   c                    t          t          d          5 }|                    d           t          | j        d          5 }|                    |                                           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          t          d          5 }|                     |                    d          d           | j                             |d          5 }|                     |                                | j                   |                     |	                                | j
                   |                     |                                | j                   |                     |                                | j                   |                     |                    | j                  | j                   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S rz   )rD   r   rt   r   ru   r&   rC   r'   r.   r(   r/   r)   r0   r*   r   rO   r1   rP   rI   s      r   test_read_not_from_startz1AudioTestsWithSourceFile.test_read_not_from_start=  s   &$ 	)8NN+,,,d&-- )qvvxx((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)
 &$ 	J8X]]2..0@AAA!!(D11 JQ  !1!14>BBB  !1!14>BBB  !1!14>BBB  1DEEE  dl!;!;T[IIIJ J J J J J J J J J J J J J J	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Jsm   +B(A5)B5A9	9B<A9	=BBB,AG=1C(G%G=%G)	)G=,G)	-G==HHN)
r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r      s        H H [HM M M  ) ) )0= = ="J J J J Jr   r   )test.supportr   test.support.os_helperr   r   rj   r   r5   FileIOr   r   r?   r   r   r   r   <module>r      s"   ! ! ! ! ! ! 1 1 1 1 1 1 1 1  				 & & & & &29 & & &"9 "9 "9 "9 "9 "9 "9 "9JBR BR BR BR BRj BR BR BRJPJ PJ PJ PJ PJz PJ PJ PJ PJ PJr   