a
    zau                     @   sP   d dl Z d dlZddlmZmZ d dlmZmZ d dlm	Z	 G dd deZ
dS )    N   )round_sequence_rTestCase)mml_filemml_file_meta)mmlc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ParserTestsc                 C   s   t jt jtd| _d S )Ndata)ospathjoindirname__file__datadir)self r   $/home/nik/mmllib/test/test_parser.pysetUp    s    zParserTests.setUpc                 C   sR   t j| jd}t|}dddddddd	d
dddddddddd}| || d S )Nloreley.mmlz&Klavier: August Linder; MML: mirabilosu)   Ph. Friedrich Silcher (1789–1860), 1837u   MML encoding & arrangement © 2016 mirabilos, published under The MirOS Licence; copyright for text, music, and piano arrangement has expiredg(B@z&mirabilos, 2016, Python testsuite 2017zPiano, VoicezC MajorZGermanu"   Heinrich Heine (1797–1856), 1824Z16z4 (5)z1/8u   Linder, August (Hrsg.): Deutsche Weisen : Die beliebtesten Volks- und geistlichen Lieder. Stuttgart: Albert Auer’s Musikverlag, n.d., c. 1900.ZAndantez6/8ZLoreley3   )arrangercomposer	copyrightdurationencoderZinstrumentszkey signaturelanguagelyricsZmeasuresz
mml trackszpickup measuresourcetempoztime signaturetitleZversesvoices)r
   r   r   r   r   assertDictEqual)r   mmlfileZres_metaZexpected_metar   r   r   test_mml_file_meta#   s,    zParserTests.test_mml_file_metac                 C   sL   t j| jd}t|}g dg dg dg dg}| t|t| d S )Nr   ))GNx@g(?r   g8P^C?r   r%   )?     {@篡?r   g8P^C?r%   篡?r   g8P^C?VPZ@6P^C?y "~@r.   r/   r*   r.   r/   r   r%   Dy5?r   g(? ֦u@篡?r&   r:   r.   r/   r   {y
t@Dy5?r   g(?r>   r+   r,   r>   r.   r/   !Zr@r2   VPZp@r.   r/   rD   r.   r/   r   r>   P^Cy?r   gk?r-   r/   r   r'   r)   r,   r-   r/   r0   r3   r/   r5   r/   r   r6   r8   r9   r&   r<   r/   r   r=   r@   rA   r,   rB   r/   r-   r/   r<   r/   rG   r/   r   rF   rI   rJ   rB   r/   r   )rD   r(   rA   r,   rG   r/   r-   r/   rG   r/   rG   r/   r   )r4   r7   r8   )r*   r;   r&   r5   r/   r   )r%   r;   r&   r-   r/   )g'w@r2   r-   r/   r5   r/   r   )r%         ?r&   r-   r/   r   )r%   r?   r@   r)   r,   r-   r/   r0   r3   r/   r5   r/   r   )r%   6P^C?)g{y
@r.   r/   )!Z@r;   r&   )rN   r.   r/   r   )r1   r?   r@   )r1   r+   r,   )r1   r.   r/   )r4   r2   r5   r/   r3   r/   r   )r1   rI   rJ   r   )r   r2   r   r>   r(   r:   r+   r,   rB   r/   r:   gk(?r/   r<   r/   r   r>   r7   r8   rD   r;   r&   rG   r/   r   rF   r?   r@   rF   r+   r,   rE   r/   y "n@r2        k@r.   r/   rX   r.   r/   r   rK   r   gz5?r   rP   rQ   r,   rB   r/   rR   r/   r<   r/   r   rS   r8   rT   r&   rG   r/   r   rU   r@   rV   r,   rE   r/   r[   r/   r[   r/   r[   r/   r   r   g)@r   )rX   r(   rV   r,   r[   r/   r[   r/   r[   r/   r[   r/   r   )rD   r7   r8   )rF   r;   r&   rE   r/   r   )rX   r;   r   gDy5?rZ   r2   r[   r/   rE   r/   r    GNX@r2   )y "^@r2   VPZ`@r2   !Zb@r2   rc   )rb   r.   r/   r   r=   r@   rQ   r,   rB   r/   rR   r/   r<   r/   r   )r>   rM   r-   r/   r9   r&   r<   r/   r   r=   r@   rA   r,   rB   r/   rR   r/   r<   r/   r   rH   rJ   r   )FrO   r   r]   r   r]   r   )r   g)?)GNh@r;   r&   rg   r.   r/   r   rg   r2   r   gDy5?r   r]   r   r]   r   r   g(?rf   r.   r/   rl   r/    ֦e@r.   r/   r   {y
d@r2   rj   r   rk   rG   r\   r   r6   r8   )r>   r;   r&   rB   r/   r   rT   r&   rG   r/   )rf   r;   r&   rl   r/   r   )rf   rL   r&   r<   r/   r   r]   r   r]   r   rk   rh   r/   rh   r/   rh   r/   r   ri   )r   g6P^C?r   )rO   r   rd   6P^C?rg   rr   rF   r2   rh   r/   rq   rZ   rr   rC   r[   r/   r   rq   rs   rt   rh   r/   g ֦U@rr   rn   rr   r_   rm   r/   r   ra   rr   )rp   rr   ri   )rp   r.   r/   )ra   r;   r&   ra   r.   r/   r   rc   r`   g|y
T@r2   VPZP@r;   r^   r   rq   rs   rt   rh   r/   rq   ru   rC   r[   r/   r   rq   rs   rt   rh   r/   rv   rw   r_   rm   r/   r   ry   r/   rh   r/   rd   r.   r/   ry   r/   ry   r/   ry   r/   r   rc   rz   r`   r{   r^   r   r`   re   rh   r/   r`   re   rh   r/   r   r`   re   rh   r/   )r|   r2   ro   rY   r/   r   )g ZR@r2   re   r[   r\   )g'g@r.   r/   r   rW   rC   r>   r2   )r:   r2   r~   rG   r/   r   rq   rs   rt   rh   r/   rq   ru   rC   r[   r/   r   rq   rs   rV   r   gk(?rv   ru   )rD   r+   r   r   rx   rs   rV   r   rG   r/   rE   r/   rG   r/   r   rc   ro   ri   r}   rJ   r   )r
   r   r   r   r   assertListEqualr   )r   r#   resexpectedr   r   r   test_mml_file:   s      F     uzParserTests.test_mml_filec                    s`   d}d}g d}ddg  fdd}t ||d d< |  d | | t d t| d S )	Nz-ml|ol o bc n cb p bc- p cb+ p o5cbf p o5cn60fz1O4L4T120MN ML O4B>CN0C<BP4BBP4CCP4O5C<BFP4O5CN60F)y "ޞ@      ?VPZ@r   r   r   r   r   r   )r         ?r   )r   r   r   r   r   )g ֦ӕ@r   r   r   r   )g ֦ӥ@r   r   c                    s   |  d< d S )Nr   r   )sr   r   r   _getresN  s    z-ParserTests.test_mml_details.<locals>._getres)_mmltrkr   )r   assertEqualr   r   )r   inputZexpected_mmlZexpected_lstr   r   r   r   test_mml_details1  s    zParserTests.test_mml_detailsN)__name__
__module____qualname__r   r$   r   r   r   r   r   r   r      s      zr   )r
   unittestutilr   r   Zmmllib.parserr   r   Z
mmllib.mmlr   r   r   r   r   r   <module>   s
   