a
    zep                     @   s   d dl Z d dlZd dlZdd Zdd Zdd dD Zd	d dD Zd
d dD Zded d dddddded d dddddded d dddddddZg dZ	G d d! d!ej
Zed"kre  dS )#    Nc                    s   d  fdd|D S )N    c                 3   s    | ]}|j  tjd dV  qdS )TsignedN)to_bytessys	byteorder).0vwidth '/usr/lib/python3.9/test/test_audioop.py	<genexpr>   r   zpack.<locals>.<genexpr>)joinr   datar   r
   r   pack   s    r   c                    s     fddt dt D S )Nc                    s*   g | ]"}t j ||  tjd dqS )Tr   )int
from_bytesr   r   )r   ir   r   r   r   
<listcomp>	   s   zunpack.<locals>.<listcomp>r   )rangelenr   r   r   r   unpack   s    r   c                 C   s   i | ]}||d ddqS )r
   c                 W   s
   t | |S )N)r   r   r   r   r   <lambda>   r   z<dictcomp>.<lambda>r   r   wr   r   r   
<dictcomp>   r   r               c                 C   s"   i | ]}|d d| d  > d  qS )r       r   r   r   r   r   r      r   c                 C   s   i | ]}|d d| d > qS )r$   r    r   r   r   r   r   r      r   s    Er!   4  gE  i   r%   r"   V4 gE iw   r#   ixV4igEiUv   ))   abcr   )r0   r!   )s   abr"   )r0   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#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?S )@TestAudioopc              	   C   s   dD ]}|  td|d |  tt |d |  ttd|d t| }|  t|d|d |  t|ddd|d |  t|t| |t|  |  t|t| |t|   |  tt| |t|   qd S )Nr   r   r      r%   r$   )	assertEqualaudioopmax	bytearray
memoryviewpacks	maxvalues	minvaluesdatasselfr   pr   r   r   test_max"   s     "zTestAudioop.test_maxc              	   C   s   dD ]}|  td|d |  tt |d |  ttd|d t| }|  t|d|d |  t|ddd|d |  t|t| |t| t| f |  t|t| |t| t| f |  tt| |t| t| f qd S )	Nr   r   )r.   r/   r2   )r2   r2   r3   r%   )r3   r2   )	r4   r5   minmaxr7   r8   r9   r:   r;   r<   r=   r   r   r   test_minmax.   s,    zTestAudioop.test_minmaxc                 C   s   dD ]}|  td|d |  tt |d |  ttd|d |  tt| td |d |  tt| dddddd|d |  tt| |t| t	|   qd S )	Nr   r   r   d   	   
   r2   r    )
r4   r5   maxppr7   r8   r9   r   r<   r:   r;   r>   r   r   r   r   
test_maxpp@   s     &zTestAudioop.test_maxppc              	   C   s,  dD ]}|  td|d |  tt |d |  ttd|d t| }|  t|d|d |  t|dd|d |  t|dd|d |  t|t| t| |t|  |  t|t| t| |t|  q|  ttd	 d
dd	d |  ttd	 ddd	d d S )Nr   r   r   r2   r$      r3   r#   i   Pi   pi   `i   i   i   )r4   r5   avgr7   r8   r9   r:   r;   r=   r   r   r   test_avgJ   s(    zTestAudioop.test_avgc                 C   s   dD ]}|  td|d |  tt |d |  ttd|d |  tt| td |d |  tt| dddddd|d q|  ttd dd	 |  ttd
 d
d |  ttd dd |  ttd dd d S )Nr   r   r   rC   rD   rE   r2   r       r!   if  r"   ig r#   l   	
 )r4   r5   avgppr7   r8   r9   r   r<   rG   r   r   r   
test_avgpp\   s     (zTestAudioop.test_avgppc                 C   s&  dD ]}|  td|d |  tt |d |  ttd|d t| }|  t|td |d | jt|t| d |t| dd | jt|t	| d |t	|  dd q|  tt
d dd	 |  tt
d
 d
d |  tt
d dd |  tt
d dd d S )Nr   r   r   rC   9   r2   r    )ZdeltaM   r!   i!N  r"   i"N r#   i"N)r4   r5   rmsr7   r8   r9   r   ZassertAlmostEqualr:   r;   r<   r=   r   r   r   test_rmsh   s     
zTestAudioop.test_rmsc              
   C   s   dD ]}|  td|d |  tt |d |  ttd|d t| }|  t|ddd|d |  t|dddd|d |  t|dd	d
d|d |  t|dt| |d |  t|t| t| |d qd S )Nr   r   r%   r   r    r!   rJ   r"   r#   )r4   r5   crossr7   r8   r9   r;   r:   r=   r   r   r   
test_crossx   s    zTestAudioop.test_crossc                 C   s:  dD ]|}|  tdd|d |  tt t |d |  ttdtd|d |  tt| dtt|  |t|  q|  ttd td dd |  ttd td dtd ddd	d
d	d
d |  ttd td dtd ddddddd |  ttd td dtd ddddddd d S )Nr   r       r        $r!   r   h$  r(   r)   rJ   r"   h$ r,   r-   r#   h$r.   r/   )r4   r5   addr7   r8   r<   r   r9   rG   r   r   r   test_add   s.     zTestAudioop.test_addc                 C   s  dD ]V}dD ]L}|  td||d |  tt ||d |  ttd||d qq|  ttd ddd |  ttd ddd |  ttd ddd |  ttd dd	td  |  ttd
 d
dtd
 ddddddd |  ttd
 d
dtd
 ddddddd |  ttd
 d
dtd
 ddddddd |  ttd
 d
d	td
  |  ttd ddtd ddddddd |  ttd ddtd ddddd d!d |  ttd ddtd ddddd d!d |  ttd dd	td  |  ttd" d"dtd" dd#d$d%d	d&d |  ttd" d"dtd" dd'd(d)d*dd |  ttd" d"dtd" dd+d,d-ddd* |  ttd" d"d	td" d	d.d/d0ddd d S )1Nr   )r   r    r%      ir.   r/   r   r    s   F r%   s   D~r.   r/   r!   i5  ihE  ir)   ir   i3  ifE  阺i  r(   rJ   r"   iW4 igE ixr-   i iU4 igE vi r,   r#   iyV4igEiVvi  iwV4igEiTviiwV4igiTv:ixV4igiUv:)r4   r5   biasr7   r8   r<   r9   )r>   r   rb   r   r   r   	test_bias   s    zTestAudioop.test_biasc                 C   s\  dD ]f}|  tt| ||t|  |  ttt| ||t|  |  ttt| ||t|  q|  ttd ddtd dddddd	d
 |  ttd ddtd ddddddd |  ttd ddtd ddddddd |  ttd ddd |  ttd ddtd ddddddd
 |  ttd ddtd dddd d!dd |  ttd ddd |  ttd ddtd dd"d#d$d%d	d& |  ttd ddtd dd'd(d)d*dd
 |  ttd ddd |  ttd ddtd dd"d#d$d%d	d& |  ttd ddtd dd+d,d-d.dd& d S )/Nr   r    r!   r   i   i E  i i   r)   i r"   i   i  E i  i   r-   i  r#   i   i   Ei   i   r/   i   s    Ei 4 i gE i i  i  4i  gEi  i  r&   r'   r`   r(   r%   i V4i gEi wi r*   r+   ra   r,   )r4   r5   lin2linr<   r7   r8   r9   rG   r   r   r   test_lin2lin   sp    zTestAudioop.test_lin2linc              
   C   s   |  tddd d |  ttddd d |  ttddd d |  tddd td ddddd	d
df |  tddd td dddddddf |  tddd td dddddddf dD ]&}|  td|d d| d df qd S )N   r    )s       M(   r!   r      )   ir   rh   rg   r"   i   i )  i i r  i Mr#   i   i  ) i  i  r i  Mr           rX   rE   r   r   )r4   r5   	adpcm2linr7   r8   r9   rG   r   r   r   test_adpcm2lin   s<    zTestAudioop.test_adpcm2linc                 C   s   |  ttd dd d |  tttd dd d |  tttd dd d dD ]}|  tt| |d d qZdD ]"}|  td| d |d d q~d S )	Nr    )rf   )i#'   r!   r"   r#   )rf   )   rq   r   rX   rE   )rm   rn   )r4   r5   	lin2adpcmr<   r7   r8   rG   r   r   r   test_lin2adpcm   s"    zTestAudioop.test_lin2adpcmc                 C   s   |  ttjddd |  ttjddd |  ttjddd |  ttjddd |  ttjddd |  ttjddd |  ttjddd |  ttjddd |  ttjddd |  ttjddd d S )NrX   r    i+  )r   r%   )r   Y   )ir   )i   r   )assertRaises	TypeErrorr5   ro   rt   
ValueErrorr>   r   r   r   test_invalid_adpcm_state  s    z$TestAudioop.test_invalid_adpcm_statec                 C   sv   |  ttd dd |  tttd dd |  tttd dd dD ]}|  tt| |d qTd S )Nr    s   Շ$*Zrr   s   Շ$*U)r4   r5   lin2alawr<   r7   r8   rG   r   r   r   test_lin2alaw  s    zTestAudioop.test_lin2alawc                    s   d}g d}dD ]b t    fdd|D  }| t| | | tt| | | tt| | qttd}dD ]$ t| }| t| | qd S )Ns    $*QTUXkq)iPi0i@i@irT   r%   iiiii  i  i  i  rD   r"   r          R   j   r   c                 3   s   | ]}| d  > d? V  qdS )r$      Nr   r   xr   r   r   r   0  r   z,TestAudioop.test_alaw2lin.<locals>.<genexpr>   rr   )	r9   r4   r5   alaw2linr7   r8   bytesr   r|   r>   encodedsrcZdecodedr   r   r   test_alaw2lin*  s    zTestAudioop.test_alaw2linc                 C   sv   |  ttd dd |  tttd dd |  tttd dd dD ]}|  tt| |d qTd S )Nr    s    grr   s    ~)r4   r5   lin2ulawr<   r7   r8   rG   r   r   r   test_lin2ulaw:  s    zTestAudioop.test_lin2ulawc                    s   d}g d}dD ]b t    fdd|D  }| t| | | tt| | | tt| | qttdttdd }d	D ]$ t| }| t| | qd S )
Ns    (?Wjv|~)iiiAii]iiirJ   r   i_  i_  i  i     5      rI   r!   r   r   c                 3   s   | ]}| d  > d? V  qdS )r$      Nr   r   r   r   r   r   K  r   z,TestAudioop.test_ulaw2lin.<locals>.<genexpr>r_      r   rr   )	r9   r4   r5   ulaw2linr7   r8   r   r   r   r   r   r   r   test_ulaw2linE  s    zTestAudioop.test_ulaw2linc                 C   s>  dD ]}|  td|dd |  tt |dd |  ttd|dd |  tt| |ddtt|   |  tt| |dt|  q|  ttd ddd |  ttd ddtd ddd	d
d	d
d |  ttd ddtd ddddddd |  ttd ddtd ddddddd d S )Nr   r   r!   r   rX   r    rY   rZ   r(   r)   rJ   r"   r[   r,   r-   r#   r\   r.   r/   )r4   r5   mulr7   r8   r<   r   r9   rG   r   r   r   test_mulV  s4    zTestAudioop.test_mulc           
      C   s  dD ]}|  td|dddd d |  tt |dddd d |  ttd|dddd d |  td|dddd d |  td|dddd d	 |  tt| |dddd d
 t|  |  tt| |dddd dd
d
 t|  qd }tddddd|\}}tddddd|\}}|  || d dD ]}tt| |dddd \}}d\}}td
tt| |D ]6}tt| |||  |ddd|\}}||7 }qt|  || |  || q8td d
ddddddtd d
ddddddtd d
ddddd d!td" d
d#d$d%d&d'd(d}	dD ]^}|  tt| |dddd ddd
 |	|  |  tt| |dddd d)d*d
 |	|  q*| 	t
tjdddddd+ | 	t
tjdddddd, d S )-Nr   r   r    i@  )r   )r%   rn   r2   )r   )r%   )rn   rn   rn   rn   rn   i>  )r   )rJ   r   r   s    s       )r   Nr   7   iU   iir!   i  iw7  iisV  iifr"   i@ ivw7 i6itV ii@gr#   i@ivww7i6itViji@g   rE   *   )r    )r   )r4   r5   ratecvr7   r8   r<   r   r   r9   rw   rx   )
r>   r   stateZd1Zd2Zd0Zstate0dr   Zexpectedr   r   r   test_ratecvj  sp    """
zTestAudioop.test_ratecvc              	   C   s|   dD ]r}|  td|d |  tt |d |  ttd|d |  tt| ddd|t| ddd qd S )Nr   r   r   r    r!   )r4   r5   reverser7   r8   r9   rG   r   r   r   test_reverse  s    zTestAudioop.test_reversec              	   C   s  dD ]}t | }tdt| }t|D ] }||d | ||d d| < q(| t||dd| | t||dddt|  t|D ]$}||d | ||| d d| < q| t||dd| | tt||dd| | tt||dd| qd S )Nr   r!   r    r   rX         ?)r<   r7   r   r   r4   r5   tomonor8   r>   r   Zdata1Zdata2kr   r   r   test_tomono  s      "zTestAudioop.test_tomonoc              	   C   s  dD ]}t | }tdt| }t|D ] }||d | ||d d| < q(| t||dd| | t||dddt|  t|D ]$}||d | ||| d d| < q| t||dd| | tt||dd| | tt||dd| qd S )Nr   r!   r    r   rX   )r<   r7   r   r   r4   r5   tostereor8   r   r   r   r   test_tostereo  s     "zTestAudioop.test_tostereoc                 C   s   |  ttd td d |  tttd ttd d |  tttd ttd d |  tdttd  td d d S )Nr!         ?rX   g        )r4   r5   Z
findfactorr<   r7   r8   r   rz   r   r   r   test_findfactor  s    

zTestAudioop.test_findfactorc              	   C   s   |  ttd td d |  tttd ttd d |  tttd ttd d |  ttd td dddd |  ttd d d d td  td d d S )	Nr!   )r   r   r    r   )r    gf@rJ   r2   )r   r   )r4   r5   Zfindfitr<   r7   r8   r9   rz   r   r   r   test_findfit  s"    

*zTestAudioop.test_findfitc                 C   sT   |  ttd dd |  tttd dd |  tttd dd d S )Nr!   r    r2   )r4   r5   findmaxr<   r7   r8   rz   r   r   r   test_findmax  s    zTestAudioop.test_findmaxc                 C   s   dD ]}t | dddt| t| }| t||dd | tt||dd | tt||dd | t||dd | t||dd | t||dt|  | t||dt|  qd S )Nr   r   r    r%   r!   r"   r#   )r9   r:   r;   r4   r5   	getsampler7   r8   )r>   r   r   r   r   r   test_getsample  s    zTestAudioop.test_getsamplec                 C   s   t d td ddddddd	td
 ddddddd	td ddddddd	d}dD ]}| td|d | tt | |||  | t|| |t |  | ttt | |||  | ttt | |||  qRd S )Nr    r!   r   i4  iEg  iir   r%   r"   i4V iEgiw r#   i4VxiEgivUr   r   )r<   r9   r4   r5   byteswapr7   r8   )r>   Zswapped_datasr   r   r   r   test_byteswap  s"    zTestAudioop.test_byteswapc                 C   s    |  tjtjttdd d S )Nr   i~)rw   r5   errorr   r   r   rz   r   r   r   test_negativelen  s    zTestAudioop.test_negativelenc                 C   s  d }t D ]\}}|}| tjtj||d | tjtj|| | tjtj|| | tjtj|| | tjtj|| | tjtj	|| | tjtj
|| | tjtj|| | tjtj||d | tjtj||dd | tjtj||dd | tjtj||| | tjtj||d | tjtj|| | tjtj||| | tjtj||ddd| | tjtj|| | tjtj|| | tjtj||| qd S )Nr   r   r   r    )INVALID_DATArw   r5   r   r   r6   rA   rK   rR   rN   rF   rV   r   r   r   r]   rb   r   rd   r   r   r|   rt   )r>   r   r   sizeZsize2r   r   r   test_issue7673  s,    zTestAudioop.test_issue7673c              
   C   s~  d}d}|  ttj||d |  ttj|| |  ttj|| |  ttj|| |  ttj|| |  ttj|| |  ttj	|| |  ttj
|| |  ttj||d |  ttj||dd |  ttj||dd |  ttj||| |  ttj||d |  ttj|| |  ttj||| |  ttj||dddd  |  ttj|| |  ttj|| |  ttj||d  d S )NZabcdr!   r   r   r   r    )rw   rx   r5   r   r6   rA   rK   rR   rN   rF   rV   r   r   r   r]   rb   r   rd   r   r   r|   rt   )r>   r   r   r   r   r   test_string  s*    zTestAudioop.test_stringc                 C   sT   d}d }dD ]B}|  tjtj|| |  tjtj|| |  tjtj||| qd S )Ns   abcdefgh)r%   r   r2   i   )rw   r5   r   r   r   ro   )r>   r   r   r   r   r   r   test_wrongsize,  s    zTestAudioop.test_wrongsizeN)"__name__
__module____qualname__r@   rB   rH   rL   rO   rS   rW   r^   rc   re   rp   ru   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1       s>   
.'2	r1   __main__)r5   r   Zunittestr   r   r9   r:   r;   r<   r   ZTestCaser1   r   mainr   r   r   r   <module>   s,       