B
    0d*;                 @   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
 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&d4d5 Z'd6d7 Z(dS )8    N)BytesIO)assert_equalassert_assert_array_equalsuppress_warnings)raiseswarns)wavfilec             C   s   t jt jtd| S )Ndata)ospathjoindirname__file__)fn r   M/var/www/html/venv/lib/python3.7/site-packages/scipy/io/tests/test_wavfile.pydatafile   s    r   c              C   sX   xRdD ]J} d}t jt|| d\}}t|d tt|jtj t|j	d ~qW d S )N)FTztest-44100Hz-le-1ch-4bytes.wav)mmapiD  )i:  )
r	   readr   r   r   np
issubdtypedtypeint32shape)r   filenamerater
   r   r   r   test_read_1   s    

r   c              C   sX   xRdD ]J} d}t jt|| d\}}t|d tt|jtj t|j	d ~qW d S )N)FTztest-8000Hz-le-2ch-1byteu.wav)r   i@  )i      )
r	   r   r   r   r   r   r   r   uint8r   )r   r   r   r
   r   r   r   test_read_2   s    

r    c              C   sX   xRdD ]J} d}t jt|| d\}}t|d tt|jtj t|j	d ~qW d S )N)FTz#test-44100Hz-2ch-32bit-float-le.wav)r   iD  )i  r   )
r	   r   r   r   r   r   r   r   float32r   )r   r   r   r
   r   r   r   test_read_3,   s    

r"   c           
   C   sx   xrdD ]j} t  .}|tjd d}tjt|| d\}}W d Q R X t|d tt	|j
tj t|jd ~qW d S )N)FTz,Chunk .non-data. not understood, skipping itz)test-48000Hz-2ch-64bit-float-le-wavex.wav)r   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    
 
r&   c              C   s~   xxdD ]p} d}t jt|| d\}}t|d tt|jtj t|jj	dkpdt
j	dkod|jj	dk t|jd ~qW d S )	N)FTz#test-44100Hz-2ch-32bit-float-be.wav)r   iD  >big=)i  r   )r	   r   r   r   r   r   r   r   r!   	byteordersysr   )r   r   r   r
   r   r   r   test_read_5I   s    

r,   c              C   s   xd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W d S )N)FTztest-8000Hz-le-5ch-9S-5bit.wav)r   i@  )	         r      )r   r      )r	   r   r   r   r   r   r   r   r   r   maxmin)r   r   r   r
   r   r   r   test_5_bit_odd_size_no_padX   s    

r4   c              C   s   xd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W d S )N)FTztest-8000Hz-le-4ch-9S-12bit.wav)r   i@  )r-         r   i  )r   r   i )r	   r   r   r   r   r   r   r   Zint16r   r2   r3   )r   r   r   r
   r   r   r   test_12_bit_even_sizeo   s    

r7   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 )Nztest-8000Hz-le-3ch-5S-24bit.wavF)r   i@  )r.         r   i   i  i i   i  i i   @i ?   i i   )
r	   r   r   r   r   r   r   r   r   r   )r   r   r
   r   r   r   test_24_bit_odd_size_with_pad   s    
r;   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 )Nz&test-8000Hz-le-1ch-10S-20bit-extra.wavF)r   i  )
   r9   r   i   i i  i ?i  i i  i i  i i  )r	   r   r   r   r   r   r   r   r   r   any)r   r   r
   r   r   r   test_20_bit_extra_data   s"    
r>   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 )Nztest-8000Hz-le-3ch-5S-36bit.wavF)r   i@  )r.   r8   ir   l         l   ` i   l         l   ` i   l            l      ` i   l      ` i    )
r	   r   r   r   r   r   r   r   int64r   )r   r   r
   correctr   r   r   test_36_bit_odd_size   s    
rA   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 )Nztest-8000Hz-le-3ch-5S-45bit.wavF)r   i@  )r.   r8   i r   l         l   i  l         l   i  l            l      i   l      i   )
r	   r   r   r   r   r   r   r   r?   r   )r   r   r
   r@   r   r   r   test_45_bit_even_size   s    
rB   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 )Nztest-8000Hz-le-3ch-5S-53bit.wavF)r   i@  )r.   r8   i  r   l         l x i l         l x i l            l    x i   l    x i   )
r	   r   r   r   r   r   r   r   r?   r   )r   r   r
   r@   r   r   r   test_53_bit_odd_size   s    
rC   c              C   s   xd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W d S )N)FTztest-8000Hz-le-3ch-5S-64bit.wavF)r   i@  )r.   r8   l         l l         l r   l            l       l    r   )
r	   r   r   r   r   r   r   r   r?   r   )r   r   r   r
   r@   r   r   r   test_64_bit_even_size  s    


rG   c           
   C   s@   x:dD ]2} t tdd tjt| dd\}}W d Q R X qW d S )N>   test-8000Hz-le-3ch-5S-45bit.wavtest-8000Hz-le-3ch-5S-24bit.wav&test-8000Hz-le-1ch-10S-20bit-extra.wavtest-8000Hz-le-3ch-5S-53bit.wavtest-8000Hz-le-3ch-5S-36bit.wavzmmap.*not compatible)matchT)r   )r   
ValueErrorr	   r   r   )r   r   r
   r   r   r   test_unsupported_mmap  s    
rO   c              C   sV   xPdD ]H\} }t jt| dd\}}t jt|dd\}}t|| t|| qW d S )N>   ztest-44100Hz-be-1ch-4bytes.wavztest-44100Hz-le-1ch-4bytes.wavztest-8000Hz-be-3ch-5S-24bit.wavztest-8000Hz-le-3ch-5S-24bit.wavF)r   )r	   r   r   r   )ZrifxZriffZrate1Zdata1rate2data2r   r   r   	test_rifx%  s
    
rT   c              C   sV   xPdD ]H} d}t t|d,}ttdd tj|| d W d Q R X W d Q R X qW d S )N)FTzexample_1.ncrbz CDF.*'RIFF' and 'RIFX' supported)rM   )r   )openr   r   rN   r	   r   )r   r   fpr   r   r   test_read_unknown_filetype_fail1  s
    
rX   c              C   sV   xPdD ]H} d}t t|d,}ttdd tj|| d W d Q R X W d Q R X qW d S )N)FTzTransparent Busy.anirU   zNot a WAV file.*ACON)rM   )r   )rV   r   r   rN   r	   r   )r   r   rW   r   r   r    test_read_unknown_riff_form_type:  s
    
rY   c              C   sV   xPdD ]H} d}t t|d,}ttdd tj|| d W d Q R X W d Q R X qW d S )N)FTz!test-8000Hz-le-1ch-1byte-ulaw.wavrU   z2Unknown wave file format.*MULAW.*Supported formats)rM   )r   )rV   r   r   rN   r	   r   )r   r   rW   r   r   r   test_read_unknown_wave_formatC  s
    
rZ   c              C   s~   xxdD ]p} d}t t|dT}ttjdd: tj|| d\}}|jdksNt|dksZtd|d< W d Q R X W d Q R X qW d S )	N)FTz(test-44100Hz-le-1ch-4bytes-early-eof.wavrU   zReached EOF)rM   )r   r   iD  )rV   r   r   r	   r$   r   sizeAssertionError)r   r   rW   r   r
   r   r   r   test_read_early_eof_with_dataM  s    
r]   c              C   sV   xPdD ]H} d}t t|d,}ttdd tj|| d W d Q R X W d Q R X qW d S )N)FTz0test-44100Hz-le-1ch-4bytes-early-eof-no-data.wavrU   zUnexpected end of file.)rM   )r   )rV   r   r   rN   r	   r   )r   r   rW   r   r   r   test_read_early_eofZ  s
    
r^   c              C   sV   xPdD ]H} d}t t|d,}ttdd tj|| d W d Q R X W d Q R X qW d S )N)FTz/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wavrU   zIncomplete chunk ID.*b'f')rM   )r   )rV   r   r   rN   r	   r   )r   r   rW   r   r   r   test_read_incomplete_chunkc  s
    
r_   c              C   sV   xPdD ]H} d}t t|d,}ttdd tj|| d W d Q R X W d Q R X qW d S )N)FTz,test-8000Hz-le-3ch-5S-24bit-inconsistent.wavrU   zheader is invalid)rM   )r   )rV   r   r   rN   r	   r   )r   r   rW   r   r   r   test_read_inconsistent_headerl  s
    
r`   c       
   
   C   s   | rt |d}nt }tjd|}|dkr@|d d df }|jdkrV||}n|d |}t	||| xxdD ]p}tj
||d\}}	t|| t|	jjd	k|	jd
 t||	 | rd|	d< qxtjtdd d|	d< W d Q R X qxW d S )Nztemp.wavd   rF   r   fr1   )FT)r   )<r)   |)msgz	read-only)rM   )strr   r   r   randomZrandkindZastyper	   writer   r   r   r   r*   r   pytestr   rN   )
realfiler   r   channelstmpdirZtmpfiler
   r   rR   rS   r   r   r   _check_roundtripu  s&    




rn   c          
   C   sV   xPdD ]H}xBdD ]:}x4dD ],}x&dD ]}t |}t|||||  q$W qW qW qW d S )N)FT>   >i8>i4<f4<i8<i4>i2|u1>f8<i2>f4<f8)i@  i }  )rF   r   r.   )r   r   rn   )rm   rk   Zdt_strr   rl   dtr   r   r   test_write_roundtrip  s    




r{   ))r   r+   ior   numpyr   Znumpy.testingr   r   r   r   rj   r   r   Zscipy.ior	   r   r   r    r"   r&   r,   r4   r7   r;   r>   rA   rB   rC   rG   rO   rT   rX   rY   rZ   r]   r^   r_   r`   rn   r{   r   r   r   r   <module>   s@   		
			