o
    ;IIik                     @   s   d dl Zd dlm  mZ d dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlZd dlZd dlZd dlmZ e ejd< d dlmZ G dd dejZedkrXe  dS dS )	    N)Path)	MagicMockZsounddevice)BatchProcessingThreadc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBatchProcessingc                 C   s   t  | _t| jd | _| j  g | _tdD ]5}t| jd| d }d}t	dd|}t
dtj d	 | d
 }tt||| | jt| qd S )Noutput   test_audio_z.waviD  r         i  g      ?)tempfilemkdtemptest_dirr   
output_dirmkdirinput_filesrangenplinspacesinpisfwritestrappend)selfi	file_pathsrtaudio r    ?/home/user/Projects/AutoRemaster/tests/test_batch_processing.pysetUp   s   

zTestBatchProcessing.setUpc                 C   s   t | j d S )N)shutilrmtreer   )r   r    r    r!   tearDown&   s   zTestBatchProcessing.tearDownc              
   C   s  t  }t| jt| jddi ddi|dd}|  g }t }d}t | dk rZz|jd	d
}|	| |d dkr@d}W nW n t j
yQ   | sOY nY nw t | dk s*| |d tdD ]}| jd| d }| | d| d qddd |D }	| d|	 | d|	 | d|	 | d|	 | d|	 tdd |D }
| |
d d d | |
d d d d S )Nz{name}_processed.wavTestlimiterTZgenre_based)	file_listr   output_patternpreset_namepreset_valuesactive_modulesmessage_queuemastering_templateF
   g?)timeoutr   batch_completez!Batch processing did not completer   r   z_processed.wavzOutput file z
 not foundc                 S   s   g | ]}|d  qS )r   r    .0mr    r    r!   
<listcomp>S   s    zBTestBatchProcessing.test_batch_processing_flow.<locals>.<listcomp>logbatch_file_startbatch_progressbatch_file_donec                 s   s     | ]}|d  dkr|V  qdS )r   r1   Nr    r2   r    r    r!   	<genexpr>[   s    zATestBatchProcessing.test_batch_processing_flow.<locals>.<genexpr>r	   	processederrors)queueQueuer   r   r   r   starttimegetr   Emptyis_alive
assertTruer   existsassertInnextassertEqual)r   Z	msg_queuethreadmessages
start_time	completedmsgr   Zexpected_outputtypesZcompletion_msgr    r    r!   test_batch_processing_flow)   sT   
z.TestBatchProcessing.test_batch_processing_flowN)__name__
__module____qualname__r"   r%   rO   r    r    r    r!   r      s    r   __main__)builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arunittestr   r#   r=   r@   pathlibr   numpyr   	soundfiler   sysZunittest.mockr   modulesengine.batch_workerr   TestCaser   rP   mainr    r    r    r!   <module>   s    "K