U
    »mœdÇ;  ã                   @   sš  d dl Z d dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
mZmZ d dlZd dlmZmZ d dlm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.d/„ Z&d0d1„ Z'd2d3„ Z(ej) *d4d5d6d7d8d9d:d;d<d=d>d?g¡ej) *d@dAdBdCg¡ej) *dDdEdFg¡ej) *dGdHdIg¡ej) *dJdHdIg¡dKdL„ ƒƒƒƒƒZ+dS )Mé    N)ÚBytesIO)Úassert_equalÚassert_Úassert_array_equalÚbreak_cyclesÚsuppress_warningsÚIS_PYPY)ÚraisesÚwarns)Úwavfilec                 C   s   t j t j t¡d| ¡S )NÚdata)ÚosÚpathÚjoinÚdirnameÚ__file__)Úfn© r   úT/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/io/tests/test_wavfile.pyÚdatafile   s    r   c                  C   sT   dD ]J} d}t jt|ƒ| d�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ ~qd S )N©FTútest-44100Hz-le-1ch-4bytes.wav©ÚmmapéD¬  )i:  ©
r   Úreadr   r   r   ÚnpÚ
issubdtypeÚdtypeÚint32Úshape©r   ÚfilenameÚrater   r   r   r   Útest_read_1   s    
r%   c                  C   sT   dD ]J} d}t jt|ƒ| d�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ ~qd S )Nr   ztest-8000Hz-le-2ch-1byteu.wavr   é@  )i   é   )
r   r   r   r   r   r   r   r   Úuint8r!   r"   r   r   r   Útest_read_2   s    
r)   c                  C   sT   dD ]J} d}t jt|ƒ| d�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ ~qd S )Nr   z#test-44100Hz-2ch-32bit-float-le.wavr   r   ©i¹  r'   )
r   r   r   r   r   r   r   r   Úfloat32r!   r"   r   r   r   Útest_read_3,   s    
r,   c               
   C   st   dD ]j} t ƒ �.}| tjd¡ d}tjt|ƒ| d�\}}W 5 Q R X t|dƒ tt 	|j
tj¡ƒ t|jdƒ ~qd S )Nr   z,Chunk .non-data. not understood, skipping itz)test-48000Hz-2ch-64bit-float-le-wavex.wavr   i€»  )ià  r'   )r   Úfilterr   ÚWavFileWarningr   r   r   r   r   r   r   Zfloat64r!   )r   Úsupr#   r$   r   r   r   r   Útest_read_49   s    ÿ 
r0   c                  C   sz   dD ]p} d}t jt|ƒ| d�\}}t|dƒ tt |jtj¡ƒ t|jj	dkpbt
j	dkob|jj	dkƒ t|jdƒ ~qd S )	Nr   z#test-44100Hz-2ch-32bit-float-be.wavr   r   ú>Úbigú=r*   )r   r   r   r   r   r   r   r   r+   Ú	byteorderÚsysr!   r"   r   r   r   Útest_read_5I   s    

ÿr6   c                  C   sŒ   dD ]‚} d}t jt|ƒ| d�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ t| 
¡ dƒ t|d	 d
ƒ t| ¡ dƒ ~qd S )Nr   ztest-8000Hz-le-5ch-9S-5bit.wavr   r&   )é	   é   é   r   éø   ©r   r   é€   )r   r   r   r   r   r   r   r   r(   r!   ÚmaxÚminr"   r   r   r   Útest_5_bit_odd_size_no_padX   s    
r?   c                  C   sŒ   dD ]‚} d}t jt|ƒ| d�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ t| 
¡ dƒ t|d	 dƒ t| ¡ d
ƒ ~qd S )Nr   ztest-8000Hz-le-4ch-9S-12bit.wavr   r&   )r7   é   é   r   ið  r;   i €ÿÿ)r   r   r   r   r   r   r   r   Zint16r!   r=   r>   r"   r   r   r   Útest_12_bit_even_sizeo   s    
rB   c               	   C   sˆ   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ t|dd	d
gdddgdddgdddgdddggƒ d S )Nútest-8000Hz-le-3ch-5S-24bit.wavFr   r&   ©r8   é   éÿ   r   i   €i  €i þÿÿi   Ài  Ài ÿÿÿi   @i ÿÿ?é   i ÿÿi   r   ©r#   r$   r   r   r   r   Útest_24_bit_odd_size_with_pad…   s    
ürI   c                  C   s„   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ t|d@  
¡ ƒ t|d	d
ddddddddg
ƒ d S )Nú&test-8000Hz-le-1ch-10S-20bit-extra.wavFr   iÒ  )é
   rF   r   i   i ðÿi  €i øÿ?i  Ài üÿi  ài þÿi  ði ÿÿi  ø)r   r   r   r   r   r   r   r   r    r!   ÚanyrH   r   r   r   Útest_20_bit_extra_dataœ   s$    
÷rM   c                  C   sŒ   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ dd	d
gdddgdddgdddgdddgg}t||ƒ d S )Nútest-8000Hz-le-3ch-5S-36bit.wavFr   r&   rD   iÿÿÿr   ìûÿÿÿ         lûÿÿÿ   `ÿÿ i   àìûÿÿÿ         lûÿÿÿ   `ÿÿ i   ðì            l      `ÿÿ i   l      `ÿÿ i    ©
r   r   r   r   r   r   r   r   Zint64r!   ©r#   r$   r   Úcorrectr   r   r   Útest_36_bit_odd_sizeº   s    
ürU   c                  C   sŒ   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ dd	d
gdddgdddgdddgdddgg}t||ƒ d S )Nútest-8000Hz-le-3ch-5S-45bit.wavFr   r&   rD   iÿÿ r   rO   lûÿÿÿ  ðÿÿ i  ðÿrP   lûÿÿÿ  ðÿÿ i  øÿrQ   l     ðÿÿ i   l     ðÿÿ i   rR   rS   r   r   r   Útest_45_bit_even_sizeÒ   s    
ürW   c                  C   sŒ   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ dd	d
gdddgdddgdddgdddgg}t||ƒ d S )Nútest-8000Hz-le-3ch-5S-53bit.wavFr   r&   rD   iÿ  r   rO   lûÿÿÿ xÿÿÿ i ðÿÿrP   lûÿÿÿ xÿÿÿ i øÿÿrQ   l    xÿÿÿ i   l    xÿÿÿ i   rR   rS   r   r   r   Útest_53_bit_odd_sizeê   s    
ürY   c                  C   sŠ   dD ]€} d}t jt|ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ ddd	gd
ddgdddgdddgdddgg}t||ƒ ~qd S )Nr   ztest-8000Hz-le-3ch-5S-64bit.wavFr   r&   rD   rO   lûÿÿÿÿÿÿÿ éþÿÿÿrP   lûÿÿÿÿÿÿÿ éÿÿÿÿr   rQ   l   ÿÿÿÿ é   l   ÿÿÿÿ r'   rR   )r   r#   r$   r   rT   r   r   r   Útest_64_bit_even_size  s    
ü
r]   c               
   C   s<   dD ]2} t tdd�� tjt| ƒdd�\}}W 5 Q R X qd S )N>   rJ   rV   rN   rX   rC   zmmap.*not compatible©ÚmatchTr   )r	   Ú
ValueErrorr   r   r   rH   r   r   r   Útest_unsupported_mmap  s    ra   c                  C   sR   dD ]H\} }t jt| ƒdd�\}}t jt|ƒdd�\}}t||ƒ t||ƒ qd S )N>   ©ztest-8000Hz-be-3ch-5S-24bit.wavrC   ©ztest-44100Hz-be-1ch-4bytes.wavr   Fr   )r   r   r   r   )ZrifxZriffZrate1Zdata1Úrate2Údata2r   r   r   Ú	test_rifx%  s
    
rf   c                  C   sR   dD ]H} d}t t|ƒdƒ�,}ttdd�� tj|| d� W 5 Q R X W 5 Q R X qd S )Nr   zexample_1.ncÚrbz CDF.*'RIFF' and 'RIFX' supportedr^   r   ©Úopenr   r	   r`   r   r   ©r   r#   Úfpr   r   r   Útest_read_unknown_filetype_fail1  s
    rl   c                  C   sR   dD ]H} d}t t|ƒdƒ�,}ttdd�� tj|| d� W 5 Q R X W 5 Q R X qd S )Nr   zTransparent Busy.anirg   zNot a WAV file.*ACONr^   r   rh   rj   r   r   r   Ú test_read_unknown_riff_form_type:  s
    rm   c                  C   sR   dD ]H} d}t t|ƒdƒ�,}ttdd�� tj|| d� W 5 Q R X W 5 Q R X qd S )Nr   z!test-8000Hz-le-1ch-1byte-ulaw.wavrg   z2Unknown wave file format.*MULAW.*Supported formatsr^   r   rh   rj   r   r   r   Útest_read_unknown_wave_formatC  s
    rn   c                  C   sz   dD ]p} d}t t|ƒdƒ�T}ttjdd��: tj|| d�\}}|jdksLt‚|dksXt‚d|d< W 5 Q R X W 5 Q R X qd S )	Nr   z(test-44100Hz-le-1ch-4bytes-early-eof.wavrg   zReached EOFr^   r   r   r   )ri   r   r
   r   r.   r   ÚsizeÚAssertionError)r   r#   rk   r$   r   r   r   r   Útest_read_early_eof_with_dataM  s    rq   c                  C   sR   dD ]H} d}t t|ƒdƒ�,}ttdd�� tj|| d� W 5 Q R X W 5 Q R X qd S )Nr   z0test-44100Hz-le-1ch-4bytes-early-eof-no-data.wavrg   zUnexpected end of file.r^   r   rh   rj   r   r   r   Útest_read_early_eofZ  s
    rr   c                  C   sR   dD ]H} d}t t|ƒdƒ�,}ttdd�� tj|| d� W 5 Q R X W 5 Q R X qd S )Nr   z/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wavrg   zIncomplete chunk ID.*b'f'r^   r   rh   rj   r   r   r   Útest_read_incomplete_chunkc  s
    rs   c                  C   sR   dD ]H} d}t t|ƒdƒ�,}ttdd�� tj|| d� W 5 Q R X W 5 Q R X qd S )Nr   z,test-8000Hz-le-3ch-5S-24bit-inconsistent.wavrg   zheader is invalidr^   r   rh   rj   r   r   r   Útest_read_inconsistent_headerl  s
    rt   Údt_strz<i2z<i4z<i8z<f4z<f8z>i2z>i4z>i8z>f4z>f8z|u1Úchannelsr\   r'   r8   r$   r&   i }  r   FTÚrealfilec              	   C   s  t  |¡}| rt| d¡ƒ}ntƒ }t j d|¡}|dkrJ|d d …df }|jdkr`| |¡}n|d  |¡}t	 
|||¡ t	j||d�\}	}
t||	ƒ t|
jjdk|
jd	� t||
ƒ | rÆd|
d< n"tjtd
d�� d|
d< W 5 Q R X | �r|�rt�rtjdk�rtƒ  tƒ  d S )Nztemp.wavéd   r\   r   Úfr<   r   )ú<r3   ú|)Úmsgz	read-onlyr^   Úwin32)r   r   Ústrr   r   ÚrandomZrandÚkindZastyper   Úwriter   r   r   r4   r   Úpytestr	   r`   r   r5   Úplatformr   )rw   r   r$   rv   ru   Ztmpdirr   Ztmpfiler   rd   re   r   r   r   Útest_write_roundtripy  s,    




r„   ),r   r5   Úior   Únumpyr   Znumpy.testingr   r   r   r   r   r   r‚   r	   r
   Zscipy.ior   r   r%   r)   r,   r0   r6   r?   rB   rI   rM   rU   rW   rY   r]   ra   rf   rl   rm   rn   rq   rr   rs   rt   ÚmarkZparametrizer„   r   r   r   r   Ú<module>   sV    		
		     ÿ