o
    Ni!                     @   sT   d dl mZmZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
 G dd deZdS )    )divisionunicode_literalsN)TestCase)
parse_argsprocess_argsTransliteratorc                       sT   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
  ZS )TestTransliteratorc                    s   t t|   d }dgt| }tt||| _tt||| _d }dgt| }|  jtt||7  _|  jtt||7  _t	j
t	j
t| _d S )Nz#hin ben mal guj pan kan tam tel oriengzhin pan engurd)superr   setUpsplitlenlistzipsrc2trgtrg2srcospathdirnameabspath__file__test_dir)selfsource
target_rom
target_urd	__class__ O/home/ubuntu/.local/lib/python3.10/site-packages/indictrans/tests/test_trans.pyr      s   zTestTransliterator.setUpc                 C   s:   | j ttddd | j ttddd | j ttddd d S )Nr	   unknownr   target)assertRaisesNotImplementedErrorr   r   r   r   r    test_bad_input_lang   s   
z&TestTransliterator.test_bad_input_langc                 C   s   | j ttdd d S )Nr!   )decode)r$   
ValueErrorr   r&   r   r   r    test_bad_decoder$   s   z#TestTransliterator.test_bad_decoderc           	   	   C   s   | j D ]A}|d }|d }t||d}tjd| j||f dd}|D ]}| \}}| ||| q#W d   n1 s?w   Y  qdS )z%Test Indic-to-[Roman, Urdu] ML modelsr      r"   %s/%s_%s.testpairsutf-8encodingN)r   r   ioopenr   r   assertEqual	transform)	r   	lang_pairsrctrgtransfplinewordexpectedr   r   r    test_ind2ru'      
zTestTransliterator.test_ind2ruc           	   	   C   s   | j D ]A}|d }|d }t||d}tjd| j||f dd}|D ]}| \}}| ||| q#W d   n1 s?w   Y  qdS )z%Test [Roman, Urdu]-to-Indic ML modelsr   r+   r"   r,   r-   r.   N)r   r   r0   r1   r   r   r2   r3   )	r   r4   r5   r6   r7   r8   r9   r;   r:   r   r   r    test_ru2ind3   r=   zTestTransliterator.test_ru2indc                 C   sx   t dd}tdddd}tdddd}|D ]$}|jd|d}|j|d	 |d}| t||k | t||k qd
S )z(Make sure `k-best` works without failure      r	   hin
beamsearch)r   r#   r(   
indictrans)k_bestr   N)ranger   r3   
assertTruer   )r   rD   r2ii2rkrA   r	   r   r   r    
test_kbest?   s   
zTestTransliterator.test_kbestc                 C   s   t jd| j dd9}|  }tt|dd tt|D }|D ]}| }t	|D ]\}}|||  
| q-q#W d   n1 sFw   Y  |D ]+}|D ]&}||krXqQt||dd}	t||d	d}
|| D ]}|	| |
| qjqQqMdS )
z-Test Indic-to-Indic ML and Rule-Based models.%s/indic-testr-   r.   c                 S   s   g | ]}g qS r   r   ).0ir   r   r    
<listcomp>T   s    z2TestTransliterator.test_rtrans.<locals>.<listcomp>NF)r   r#   rbT)r0   r1   r   readliner   dictr   rE   r   	enumerateappendr   r3   )r   r8   
lang_codes	lang2wordr9   rM   r:   r5   r6   s2t_mls2t_rbr   r   r    test_rtransN   s0   	
zTestTransliterator.test_rtransc                 C   s   t g d}| |jd | |jd | |jd | |jd | |j | |j t	t dd| j
 dd	d
dddddg
 d S )N)
z--inputinfilez--outputoutfilez--sourcerA   z--targetr	   z--build-lookupz--rbrY   rZ   rA   r	   z-irK   z-oz/tmp/test.outz-sz-tmalz-bz-r)r   r2   rY   rZ   r   r#   rF   build_lookuprO   r   r   )r   parserr   r   r    test_parserc   s   zTestTransliterator.test_parser)__name__
__module____qualname__r   r'   r*   r<   r>   rJ   rX   r^   __classcell__r   r   r   r    r      s    r   )
__future__r   r   r0   r   	testtoolsr   rC   r   r   r   r   r   r   r   r    <module>   s   