a
    ‡ù»jÉ>  ã                	   @   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) *d4g d5¢¡ej) *d6g d7¢¡ej) *d8d9d:g¡ej) *d;d<d=g¡ej) *d>d<d=g¡d?d@„ ƒƒƒƒƒZ+ej) *dAej,g¡dBdC„ ƒZ-dS )Dé    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   úAE:\soccer\ml_env\Lib\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   sˆ   dD ]~} t ƒ �8}| tjd¡ d}tjt|ƒ| d�\}}W d   ƒ n1 sL0    Y  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    ÿ4
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|g d¢g d	¢g d
¢g d¢g d¢gƒ d S )Nútest-8000Hz-le-3ch-5S-24bit.wavFr   r&   ©r8   é   éÿ   r   )i   €i  €i þÿÿ)i   Ài  Ài ÿÿÿ©r   r   r   )i   @i ÿÿ?é   )é ÿÿrI   i   r   ©r#   r$   r   r   r   r   Útest_24_bit_odd_size_with_pad…   s    

ürK   c                  C   st   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ t|d@  
¡ ƒ t|g d	¢ƒ d S )
Nú&test-8000Hz-le-1ch-10S-20bit-extra.wavFr   éÒ  )é
   rF   r   i   )
i ðÿi  €i øÿ?i  Ài üÿi  ài þÿi  ði ÿÿi  ø)r   r   r   r   r   r   r   r   r    r!   ÚanyrJ   r   r   r   Útest_20_bit_extra_dataœ   s    
rP   c                  C   s‚   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ g d¢g d	¢g d
¢g d¢g d¢g}t||ƒ d S )Nútest-8000Hz-le-3ch-5S-36bit.wavFr   r&   rD   iÿÿÿr   )ìûÿÿÿ         lûÿÿÿ   `ÿÿ i   à)ìûÿÿÿ         lûÿÿÿ   `ÿÿ i   ðrG   )ì            l      `ÿÿ i   )ì      `ÿÿ rU   i    ©
r   r   r   r   r   r   r   r   Zint64r!   ©r#   r$   r   Úcorrectr   r   r   Útest_36_bit_odd_sizeº   s    
ürY   c                  C   s‚   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ g d¢g d	¢g d
¢g d¢g d¢g}t||ƒ d S )Nútest-8000Hz-le-3ch-5S-45bit.wavFr   r&   rD   iÿÿ r   )rR   lûÿÿÿ  ðÿÿ i  ðÿ)rS   lûÿÿÿ  ðÿÿ i  øÿrG   )rT   l     ðÿÿ i   )ì     ðÿÿ r[   i   rV   rW   r   r   r   Útest_45_bit_even_sizeÒ   s    
ür\   c                  C   s‚   d} t jt| ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ t|d@ dƒ g d¢g d	¢g d
¢g d¢g d¢g}t||ƒ d S )Nútest-8000Hz-le-3ch-5S-53bit.wavFr   r&   rD   iÿ  r   )rR   lûÿÿÿ xÿÿÿ i ðÿÿ)rS   lûÿÿÿ xÿÿÿ i øÿÿrG   )rT   l    xÿÿÿ i   )ì    xÿÿÿ r^   i   rV   rW   r   r   r   Útest_53_bit_odd_sizeê   s    
ür_   c                  C   s€   dD ]v} d}t jt|ƒdd�\}}t|dƒ tt |jtj¡ƒ t|j	dƒ g d¢g d¢g d	¢g d
¢g d¢g}t||ƒ ~qd S )Nr   ztest-8000Hz-le-3ch-5S-64bit.wavFr   r&   rD   )rR   lûÿÿÿÿÿÿÿ éþÿÿÿ)rS   lûÿÿÿÿÿÿÿ éÿÿÿÿrG   )rT   l   ÿÿÿÿ é   )ì   ÿÿÿÿ rc   r'   rV   )r   r#   r$   r   rX   r   r   r   Útest_64_bit_even_size  s    
ü
rd   c               	   C   sP   dD ]F} t tdd��& tjt| ƒdd�\}}W d   ƒ q1 s@0    Y  qd S )N>   rL   r]   rZ   rC   rQ   zmmap.*not compatible©ÚmatchTr   )r	   Ú
ValueErrorr   r   r   rJ   r   r   r   Útest_unsupported_mmap  s    rh   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
    
rk   c               
   C   sz   dD ]p} d}t t|ƒdƒ�J}ttdd�� tj|| d� W d   ƒ n1 sL0    Y  W d   ƒ q1 sj0    Y  qd S )Nr   zexample_1.ncÚrbz CDF.*'RIFF' and 'RIFX' supportedre   r   ©Úopenr   r	   rg   r   r   ©r   r#   Úfpr   r   r   Útest_read_unknown_filetype_fail1  s
    rq   c               
   C   sz   dD ]p} d}t t|ƒdƒ�J}ttdd�� tj|| d� W d   ƒ n1 sL0    Y  W d   ƒ q1 sj0    Y  qd S )Nr   zTransparent Busy.anirl   zNot a WAV file.*ACONre   r   rm   ro   r   r   r   Ú test_read_unknown_riff_form_type:  s
    rr   c               
   C   sz   dD ]p} d}t t|ƒdƒ�J}ttdd�� tj|| d� W d   ƒ n1 sL0    Y  W d   ƒ q1 sj0    Y  qd S )Nr   z!test-8000Hz-le-1ch-1byte-ulaw.wavrl   z2Unknown wave file format.*MULAW.*Supported formatsre   r   rm   ro   r   r   r   Útest_read_unknown_wave_formatC  s
    rs   c               
   C   s¢   dD ]˜} d}t t|ƒdƒ�r}ttjdd��D tj|| d�\}}|jdksLJ ‚|dksXJ ‚d|d< W d   ƒ n1 st0    Y  W d   ƒ q1 s’0    Y  qd S )	Nr   z(test-44100Hz-le-1ch-4bytes-early-eof.wavrl   zReached EOFre   r   r   r   )rn   r   r
   r   r.   r   Úsize)r   r#   rp   r$   r   r   r   r   Útest_read_early_eof_with_dataM  s    ru   c               
   C   sz   dD ]p} d}t t|ƒdƒ�J}ttdd�� tj|| d� W d   ƒ n1 sL0    Y  W d   ƒ q1 sj0    Y  qd S )Nr   z0test-44100Hz-le-1ch-4bytes-early-eof-no-data.wavrl   zUnexpected end of file.re   r   rm   ro   r   r   r   Útest_read_early_eofZ  s
    rv   c               
   C   sz   dD ]p} d}t t|ƒdƒ�J}ttdd�� tj|| d� W d   ƒ n1 sL0    Y  W d   ƒ q1 sj0    Y  qd S )Nr   z/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wavrl   zIncomplete chunk ID.*b'f're   r   rm   ro   r   r   r   Útest_read_incomplete_chunkc  s
    rw   c               
   C   sz   dD ]p} d}t t|ƒdƒ�J}ttdd�� tj|| d� W d   ƒ n1 sL0    Y  W d   ƒ q1 sj0    Y  qd S )Nr   z,test-8000Hz-le-3ch-5S-24bit-inconsistent.wavrl   zheader is invalidre   r   rm   ro   r   r   r   Útest_read_inconsistent_headerl  s
    rx   Údt_str)z<i2z<i4z<i8z<f4z<f8z>i2z>i4z>i8z>f4z>f8z|u1Úchannels)rb   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v |
jd	� t||
ƒ | rÆd|
d< n6tjtd
d�� d|
d< W d   ƒ n1 sò0    Y  | �r&|�r&t�r&tjdk�r&tƒ  tƒ  d S )Nútemp.wavéd   rb   r   Úfr<   r   )ú<r3   ú|)Úmsgz	read-onlyre   Úwin32)r   r   Ústrr   r   ÚrandomZrandÚkindÚastyper   Úwriter   r   r   r4   r   Úpytestr	   rg   r   r5   Úplatformr   )r{   r   r$   rz   ry   Útmpdirr   Útmpfiler   ri   rj   r   r   r   Útest_write_roundtripy  s,    




&rŒ   r   c                 C   sn   t |  d¡ƒ}tj d¡}| d¡ |¡}d}tjtdd�� t	 
|||¡ W d   ƒ n1 s`0    Y  d S )Nr|   rM   )r}   r8   r&   ZUnsupportedre   )rƒ   r   r   r„   Zdefault_rngr†   rˆ   r	   rg   r   r‡   )rŠ   r   r‹   Úrngr   r$   r   r   r   Útest_wavfile_dtype_unsupported£  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   rK   rP   rY   r\   r_   rd   rh   rk   rq   rr   rs   ru   rv   rw   rx   ÚmarkZparametrizerŒ   Zfloat16rŽ   r   r   r   r   Ú<module>   sL    		
		$