U
    P’“e6  ã                -   @   s(  d dl Z d dlZd dlZd dlmZmZ d dlmZ dad a	dd„ Z
dd„ Zed	d
ƒedd
ƒedd
ƒeddƒgZeddƒeddƒeddƒeddƒeddƒeddƒgZeddƒeddƒeddƒeddƒeddƒedd ƒedd!ƒed"d#ƒed$d%ƒed$d&ƒed$dƒed$d'ƒed$d(ƒed)d(ƒed)dƒed)d*ƒed+d,ƒed-d.ƒed/d0ƒed1d2ƒed3dƒed4d5ƒed6d7ƒedd8ƒed9d:ƒed;d<ƒed=d<ƒed>d<ƒed?d@ƒed?dAƒed?dBƒed?dCƒed;d0ƒed;d!ƒed;dDƒed;dEƒed?dƒed?dFƒed?d'ƒed?dƒed?dGƒed?dHƒed?d*ƒg+ZG dIdJ„ dJejƒZedKkr$e ¡  dS )Lé    N)Ú
RecognizerÚMultistrokeGesture)ÚVectorç        c                 C   s   | j d ad S )NÚscore)ÚbestÚ
best_score©Úresult© r   ú?/tmp/pip-unpacked-wheel-xzebddm3/kivy/tests/test_multistroke.pyÚbest_score_cb   s    r   c                 C   s   t d7 a d S )Né   )Úcounterr	   r   r   r   Ú
counter_cb   s    r   é   é   ég   éB   éW   é±   é\   é   é¶   r   éö   é_   é÷   é    i  i  éž   i  éœ   éù   é’   é»   é   éµ   é¯   éŽ   é§   éŒ   éq   ék   éc   éU   éŠ   éY   é¦   é—   é°   é«   é¼   é½   éÈ   éÍ   éî   éò   i  éô   i  i  éü   i!  éþ   i#  é   i  i  i  i  i  éÿ   é¡   é“   ée   é]   é[   c                   @   sÀ   e Zd Zdd„ Zejdd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-S ).ÚMultistrokeTestCasec                 C   sT   da d}tdtgdd| _tdtgdd| _tdtgdd| _tdtgdd| _d S )Nr   ÚTF©Úorientation_sensitiveTÚN)r   r   ÚTGestureÚTinvarÚTboundÚNGestureÚNinvarÚNbound)Úselfr   r   r   r   ÚsetUp-   s    ÿÿÿÿzMultistrokeTestCase.setUpT)Zautousec                 C   s
   || _ d S )N)Ú
kivy_clock)rN   rP   r   r   r   Ú	set_clock;   s    zMultistrokeTestCase.set_clockc                 C   sr   t | j| jgd}|jtgdd}|  |jd¡ |  |jd¡ |  |jd¡ |  	|j
d dkoj|j
d d	k ¡ d S )
N©Údbr   ©Úmax_gpfé   r   r   r   ç®Gázî?çffffffî?)r   rI   rL   Ú	recognizeÚ
NcandidateÚassertEqualZ
_match_opsZ
_completedÚprogressÚ
assertTruer   ©rN   ÚgdbÚrr   r   r   Útest_immediateB   s    z"MultistrokeTestCase.test_immediatec                 C   sŒ   ddl m} t| j| jgd}|jtgdd}|jtd | 	¡  |  
|jd¡ |  
td¡ | 	¡  |  
|jd¡ |  td	ko„td
k ¡ d S )Nr   ©ÚClockrR   r   rT   ©Zon_completeç      à?r   rW   rX   )Ú
kivy.clockrc   r   rI   rL   rY   rZ   Úbindr   Útickr[   r\   r   r]   )rN   rc   r_   r`   r   r   r   Útest_schedulingJ   s    z#MultistrokeTestCase.test_schedulingc                 C   sV  ddl m} t| jgd}t| jjƒ}da|j | j¡ |j	t
gdd}|jtd |  |jd¡ | ¡  |  |jd¡ |  td¡ | ¡  |  |jd¡ |  tdko¬td	k ¡ da|j | j¡ |j	t
gdd}|jtd |  |jd¡ | ¡  |  |jd
¡ | ¡  |  |jd¡ |  td¡ | ¡  |  |jd¡ |  tdkoNtd	k ¡ d S )Nr   rb   rR   r   rT   rd   re   rW   rX   gUUUUUUÕ?çUUUUUUå?)rf   rc   r   rL   ÚlenZ	templatesr   rS   ÚappendrY   rZ   rg   r   r[   r\   rh   r]   )rN   rc   r_   Ztplsr`   r   r   r   Útest_scheduling_limits[   s6    z*MultistrokeTestCase.test_scheduling_limitsc                 C   s^  ddl m} datƒ }tdƒD ]}|jdtgdd q| dtg¡ |jt	gdd	}|j
td
 | ¡  |jt	gdd	}|j
td
 | ¡  |jt	gdd	}|j
td
 | ¡  tdƒD ]@}|jtgdd	}|  |jd d¡ |  t|jd dƒdk¡ q¸tdƒD ]}| ¡  q|  td¡ | ¡  |  td¡ | ¡  |  td¡ | ¡  |  td¡ d S )Nr   rb   é	   rD   é2   ©ÚpriorityrG   r   rT   rd   é   Únamer   ç      ð?é   r   é   )rf   rc   r   r   ÚrangeÚadd_gesturerH   rK   rY   rZ   rg   r   rh   r[   r   r]   Úround)rN   rc   r_   ÚiZr1Zr2Zr3Únr   r   r   Útest_parallel_recognize}   s8    z+MultistrokeTestCase.test_parallel_recognizec                 C   s¬   ddl m} ddlm} dat| j| jgd}|jt	gddd}| 
¡  |  td¡ |dƒ | 
¡  |  |jd¡ |  |jd	¡ |  |jd
 dk¡ |  |jd d	k ¡ d S )Nr   rb   ©ÚsleeprR   r   çš™™™™™Ù?©rU   Útimeoutr   re   rs   rD   r   )rf   rc   Útimer~   r   r   rJ   rL   rY   rZ   rh   r[   Ústatusr\   r]   r   ©rN   rc   r~   r_   r`   r   r   r   Útest_timeout_case_1£   s    z'MultistrokeTestCase.test_timeout_case_1c                 C   sº   ddl m} ddlm} dat| j| j| jgd}|j	t
gddd}| ¡  |  td¡ |dƒ | ¡  |dƒ | ¡  |  |jd	¡ |  |jd
¡ |  |jd dko²|jd dk¡ d S )Nr   rb   r}   rR   r   gš™™™™™é?r€   r   r   rj   r   rW   rX   )rf   rc   r‚   r~   r   r   rJ   rL   rI   rY   rZ   rh   r[   rƒ   r\   r]   r   r„   r   r   r   Útest_timeout_case_2´   s    z'MultistrokeTestCase.test_timeout_case_2c                 C   sÆ   t ƒ }|jdtgdd |jdtgdd |jtgdddd	}|  |jd
 d¡ |jtgdddd}|  |jd
 d¡ |jtgdddd}|  |jd
 d¡ |jtgdddd}|  |jd
 d ¡ d S )NrG   é
   rp   rD   rr   g{®Gáz„?r   T)Ú	goodscorerU   Úforce_priority_sortrs   F)rˆ   r‰   rU   )rˆ   rU   rq   rV   )r   rx   rK   rH   rY   rZ   r[   r   r^   r   r   r   Útest_priority_sortingÇ   s(    ÿ
 ÿÿÿz)MultistrokeTestCase.test_priority_sortingc                 C   sJ   t | j| jgd}| ¡ }|  t|ƒd¡ |jdd}|  t|ƒd¡ d S )NrR   r   ÚX©rs   r   )r   rL   rM   Úfilterr[   rk   ©rN   r_   r{   r   r   r   Útest_name_filterß   s
    z$MultistrokeTestCase.test_name_filterc                 C   s€   t | j| jgd}|jdd}|  t|ƒd¡ |jdtgdd |jdd}|  t|ƒd¡ |jddgd}|  t|ƒd¡ d S )	NrR   éd   )Z	numpointsr   rD   r   é   rv   ©r   rL   rM   r   r[   rk   rx   rH   rŽ   r   r   r   Útest_numpoints_filteræ   s    z)MultistrokeTestCase.test_numpoints_filterc                 C   s~   t | j| jgd}|jdd}|  t|ƒd¡ | dttg¡ |jdd}|  t|ƒd¡ |jddgd}|  t|ƒd¡ d S )NrR   r   )Z
numstrokesr   rD   r   rv   r’   rŽ   r   r   r   Útest_numstrokes_filterñ   s    z*MultistrokeTestCase.test_numstrokes_filterc                 C   s.  t | j| jgd}|jdd}|  t|ƒd¡ |jdtgdd |jdd}|  t|ƒd¡ |jdd}|  t|ƒd¡ |jdtgdd |jddgd}|  t|ƒd¡ |jddgd}|  t|ƒd	¡ |jddgd}|  t|ƒd	¡ |jdd
gd}|  t|ƒd¡ |jd
dgd}|  t|ƒd¡ d S )NrR   ro   rp   r   rD   é3   r   é4   r   é5   é6   r’   rŽ   r   r   r   Útest_priority_filterü   s&    z(MultistrokeTestCase.test_priority_filterc                 C   sÌ   t | j| jgd}|jdd}|  t|ƒd¡ |jdd}|  t|ƒd¡ |jd d}|  t|ƒd¡ |j | j¡ |jdd}|  t|ƒd¡ |jdd}|  t|ƒd¡ |jd d}|  t|ƒd¡ d S )NrR   TrE   r   Fr   rv   )	r   rL   rM   r   r[   rk   rS   rl   rI   rŽ   r   r   r   Útest_orientation_filter  s    z+MultistrokeTestCase.test_orientation_filterc                 C   sÀ   t j tddƒtddƒgd¡}|  t|ƒd¡ |  t|d jdƒd¡ t j td¡}|  t|ƒd¡ |  t|d jƒd¡ |  |d j	d	¡ |  td
 j|d j¡ |  td
 j	|d j	¡ d S )Nr   r   é   rn   gÍÌÌÌÌÌì?é   é   éQ   r   rv   é   )
ÚkivyÚmultistrokeZresampler   r[   rk   ry   ÚxrH   Úy©rN   r`   r   r   r   Útest_resample'  s    z!MultistrokeTestCase.test_resamplec                 C   sB   t j td¡}|  t|d jdƒd¡ |  t|d jdƒd¡ d S )NrŸ   r   r   g33333Óc@g33333sK@)r    r¡   Z	rotate_byrK   r[   ry   r¢   r£   r¤   r   r   r   Útest_rotateby3  s    z!MultistrokeTestCase.test_rotatebyc                 C   sj   t | jgd}t ƒ }|j|dd |jtgdd}|  |jd d¡ |  |jd dkob|jd d	k ¡ d S ©
NrR   rG   rŒ   r   rT   rs   r   rW   rX   )r   rL   Ztransfer_gesturerY   rZ   r[   r   r]   )rN   Úgdb1Úgdb2r`   r   r   r   Útest_transfer8  s    z!MultistrokeTestCase.test_transferc                 C   sr   t | jgd}t ƒ }|jdd}| |¡ |jtgdd}|  |jd d¡ |  |jd dkoj|jd d	k ¡ d S r§   )	r   rL   Úexport_gestureÚimport_gesturerY   rZ   r[   r   r]   )rN   r¨   r©   Úgr`   r   r   r   Útest_export_import_case_1A  s    
z-MultistrokeTestCase.test_export_import_case_1c           	      C   sÐ   ddl m} dd l}t| j| jgd}tƒ }|ƒ \}}| |¡ |jd|d}|j|d | 	|¡ |  
t|jƒd¡ |  
t|jƒd¡ |jtgdd	}|  
|jd
 d¡ |  |jd dkoÈ|jd dk ¡ d S )Nr   )ÚmkstemprR   rG   )rs   Úfilename)r°   r   r   rT   rs   r   rW   rX   )Útempfiler¯   Úosr   rL   rI   Úcloser«   r¬   Úunlinkr[   rk   rS   rY   rZ   r   r]   )	rN   r¯   r²   r¨   r©   ÚfhÚfnr­   r`   r   r   r   Útest_export_import_case_2L  s    


z-MultistrokeTestCase.test_export_import_case_2c                 C   sÊ   t | j| jgd}|jtgddd}|  |jd d¡ |  |jd dk¡ |jtgd	dd}|  |jd d ¡ |  |jd d¡ |jtgddd}|  |jd d¡ |  |jd d
koÂ|jd dk ¡ d S )NrR   Fr   ©rF   rU   rs   rG   r   rt   TrW   rX   )	r   rI   rL   rY   rK   r[   r   r]   rZ   r^   r   r   r   Útest_protractor_invarianta  s     
ÿ
ÿ
ÿz-MultistrokeTestCase.test_protractor_invariantc                 C   sÊ   t | j| jgd}|jtgddd}|  |jd d¡ |  |jd dk¡ |jtgd	dd}|  |jd d ¡ |  |jd d¡ |jtgddd}|  |jd d¡ |  |jd d
koÂ|jd dk ¡ d S )NrR   Tr   r¸   rs   rG   r   g®Gáz®ï?FrW   rX   )	r   rJ   rM   rY   rK   r[   r   r]   rZ   r^   r   r   r   Útest_protractor_boundr  s     
ÿ
ÿ
ÿz)MultistrokeTestCase.test_protractor_boundN)Ú__name__Ú
__module__Ú__qualname__rO   ÚpytestZfixturerQ   ra   ri   rm   r|   r…   r†   rŠ   r   r“   r”   r™   rš   r¥   r¦   rª   r®   r·   r¹   rº   r   r   r   r   rC   +   s,   

"&	rC   Ú__main__)r¾   ZunittestZkivy.multistroker    r   r   Zkivy.vectorr   r   r   r   r   rH   rK   rZ   ZTestCaserC   r»   Úmainr   r   r   r   Ú<module>   s|   $  ÿ                                õ  [
