o
    ª‚Iiw  ã                   @   s`   d dl Zd dlm  mZ d dlZd dlZd dl	m
Z
 G dd„ dejƒZedkr.e ¡  dS dS )é    N)ÚAudioEnginec                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDeEsserc                 C   s   t ƒ | _d| j_d S )NéD¬  )r   ÚengineÚsample_rate)Úself© r   ú6/home/user/Projects/AutoRemaster/tests/test_deesser.pyÚsetUp   s   zTestDeEsser.setUpc           	      C   s¬   d}d}t jd|t|| ƒdd}d}t  dt j | | ¡}| jj|dd	d
dd}t  t  |d ¡¡}t  t  |d ¡¡}t	d|d›ƒ t	d|d›ƒ |  
||¡ dS )zBTest that de-esser reduces volume of a 6kHz sine wave (sibilance).r   ç      ð?r   F©Úendpointép  é   ç      4Àç      @ç     p·@ç     @Ÿ@©Úthreshold_dbÚratioÚfrequency_hzÚbandwidth_hzzOriginal RMS: ú.4fzProcessed RMS: N)ÚnpÚlinspaceÚintÚsinÚpir   Úapply_deesserÚsqrtÚmeanÚprintÚ
assertLess©	r   ÚsrÚdurationÚtÚ	frequencyÚaudioÚ	processedZrms_origZrms_procr   r   r	   Útest_deesser_reduces_sibilance   s"   û	z*TestDeEsser.test_deesser_reduces_sibilancec           	      C   s°   d}d}t jd|t|| ƒdd}d}t  dt j | | ¡}| jj|dd	d
dd}t  t  |d ¡¡}t  t  |d ¡¡}t	d|d›ƒ t	d|d›ƒ | j
||dd dS )z5Test that de-esser does NOT affect a 200Hz sine wave.r   r   r   Fr   éÈ   r   r   r   r   r   r   zOriginal Lows RMS: r   zProcessed Lows RMS: ©ÚplacesN)r   r   r   r   r   r   r   r    r!   r"   ÚassertAlmostEqualr$   r   r   r	   Útest_deesser_preserves_lows/   s"   ûz'TestDeEsser.test_deesser_preserves_lowsc                 C   s  d}t jddt|d ƒdd}t  dt j d | ¡}t  dt j d | ¡}t  ||f¡}| jj|d	d
}|  |j	|j	¡ t  
t  |d ¡¡}t  
t  |dd…df d ¡¡}|  ||¡ t  
t  |d ¡¡}	t  
t  |dd…df d ¡¡}
| j|
|	dd dS )z(Test that stereo channels are processed.r   r   gš™™™™™¹?Fr   r   r   r,   r   )r   Né   r-   )r   r   r   r   r   Úcolumn_stackr   r   ÚassertEqualÚshaper    r!   r#   r/   )r   r%   r'   ÚleftÚrightZstereor*   Zrms_left_inZrms_left_outZrms_right_inZrms_right_outr   r   r	   Útest_stereo_preservationJ   s    þ  z$TestDeEsser.test_stereo_preservationN)Ú__name__Ú
__module__Ú__qualname__r
   r+   r0   r7   r   r   r   r	   r      s
    $r   Ú__main__)ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚunittestÚnumpyr   Úengine.processorr   ÚTestCaser   r8   Úmainr   r   r   r	   Ú<module>   s   "bÿ