U
    P’“eê/  ã                   @   s€   d Z ddlZejdddd„ ƒZejddd	d
„ ƒZdd„ Zdd„ ZG dd„ dƒZG dd„ dƒZG dd„ dƒZ	G dd„ dƒZ
dS )z#
Animations tests
================
é    NÚmodule)Zscopec                  C   s   G dd„ dƒ} | S )Nc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )zec_cls.<locals>.EventCounterc                 S   s,   d| _ d| _d| _|j| j| j| jd d S )Nr   )Úon_startÚon_progressÚon_complete)Ún_startÚ
n_progressÚ
n_completeÚbindr   r   r   )ÚselfÚanim© r   ú>/tmp/pip-unpacked-wheel-xzebddm3/kivy/tests/test_animations.pyÚ__init__   s    þz%ec_cls.<locals>.EventCounter.__init__c                 S   s   |  j d7  _ d S ©Né   )r   ©r
   r   Úwidgetr   r   r   r      s    z%ec_cls.<locals>.EventCounter.on_startc                 S   s   |  j d7  _ d S r   )r   )r
   r   r   Úprogressr   r   r   r      s    z(ec_cls.<locals>.EventCounter.on_progressc                 S   s   |  j d7  _ d S r   )r   r   r   r   r   r      s    z(ec_cls.<locals>.EventCounter.on_completec                 S   sB   | j |kst‚|r"| jdks0t‚n| jdks0t‚| j|ks>t‚d S )Nr   )r   ÚAssertionErrorr   r   )r
   r   Zn_progress_greater_than_zeror   r   r   r   Úassert_   s
    z$ec_cls.<locals>.EventCounter.assert_N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   ÚEventCounter
   s
   r   r   )r   r   r   r   Úec_cls   s    r   T)Zautousec                  C   s   ddl m}  |  d ¡ d S ©Nr   ©Ú	Animation)Úkivy.animationr   Ú
cancel_allr   r   r   r   Úcleanup&   s    r    c                  C   s   ddl m}  t| jƒdkS r   )r   r   ÚlenZ
_instancesr   r   r   r   Úno_animations_being_played,   s    r"   c                 C   sJ   ddl m }m} ddlm} |j}|ƒ |  }|ƒ |k rF|dƒ |ƒ  q,d S )Nr   )ÚtimeÚsleep)ÚClockg{®Gáz„?)r#   r$   Z
kivy.clockr%   Útick)Útr#   r$   r%   r&   Údeadliner   r   r   r$   1   s    

r$   c                   @   sl   e Z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 )ÚTestAnimationc                 C   s^   ddl m} ddlm} |ddd}|ƒ }| |¡ tdƒ |jt d¡ksPt	‚t
ƒ sZt	‚d S )Nr   r   ©ÚWidgetéd   r   ©ÚxÚdç      ø?)r   r   Úkivy.uix.widgetr+   Ústartr$   r.   ÚpytestÚapproxr   r"   ©r
   r   r+   ÚaÚwr   r   r   Útest_start_animation=   s    
z"TestAnimation.test_start_animationc                 C   sJ   ddl m} ddlm} |ddd}|ƒ }| |¡ tdƒ tƒ sFt‚d S )Nr   r   r*   r,   r-   ç      à?)r   r   r1   r+   r2   r$   r"   r   r5   r   r   r   Útest_animation_duration_0G   s    
z'TestAnimation.test_animation_duration_0c                 C   s‚   ddl m} ddlm} |dd}|dd}|ƒ }|ƒ }| |¡ | |¡ | |¡ | |¡ tƒ rjt‚| d ¡ tƒ s~t‚d S ©Nr   r   r*   r,   ©r.   ©Úy©r   r   r1   r+   r2   r"   r   r   ©r
   r   r+   Za1Za2Zw1Zw2r   r   r   Útest_cancel_allP   s    







zTestAnimation.test_cancel_allc                 C   sœ   ddl m} ddlm} |dd}|dd}|ƒ }|ƒ }| |¡ | |¡ | |¡ | |¡ tƒ rjt‚| d dd¡ tƒ r‚t‚| d d	¡ tƒ s˜t‚d S )
Nr   r   r*   r,   r<   r=   r.   Úzr>   r?   r@   r   r   r   Útest_cancel_all_2_   s    







zTestAnimation.test_cancel_all_2c                 C   s|   ddl m} ddlm} |ddd}|ƒ }| |¡ tdƒ | |¡ |jt 	d¡ksZt
‚|jt 	d¡ksnt
‚tƒ sxt
‚d S ©Nr   r   r*   r,   r   r-   r9   )r   r   r1   r+   r2   r$   Ústopr.   r3   r4   r   r"   r5   r   r   r   Útest_stop_animationp   s    

z!TestAnimation.test_stop_animationc                 C   sT   ddl m} ddlm} |ddd}|ƒ }| |¡ tdƒ | |¡ tƒ sPt‚d S rD   ©	r   r   r1   r+   r2   r$   Zstop_allr"   r   r5   r   r   r   Útest_stop_all|   s    

zTestAnimation.test_stop_allc                 C   sV   ddl m} ddlm} |ddd}|ƒ }| |¡ tdƒ | |d¡ tƒ sRt‚d S )	Nr   r   r*   r,   r   r-   r9   r.   rG   r5   r   r   r   Útest_stop_all_2†   s    
zTestAnimation.test_stop_all_2c                 C   s*   ddl m} |ddd}|jdks&t‚d S )Nr   r   r,   r   r-   )r   r   Údurationr   ©r
   r   r6   r   r   r   Útest_duration   s    zTestAnimation.test_durationc                 C   s0   ddl m}m} |ddd}|j|jks,t‚d S )Nr   )r   ÚAnimationTransitionr,   Ú
out_bounce)r.   r'   )r   r   rM   Ú
transitionrN   r   )r
   r   rM   r6   r   r   r   Útest_transition•   s    zTestAnimation.test_transitionc                 C   s,   ddl m} |dd}|jddiks(t‚d S )Nr   r   r,   r<   r.   ©r   r   Úanimated_propertiesr   rK   r   r   r   Útest_animated_propertiesš   s    
z&TestAnimation.test_animated_propertiesc                 C   s†   ddl m} ddlm} |ddd}|dƒ}| |¡ |jddiksHt‚|jt 	d¡ks\t‚t
d	ƒ |jt 	d¡ksxt‚tƒ s‚t‚d S )
Nr   )ÚScaler   r,   r   r-   é   r.   r0   )Zkivy.graphicsrT   r   r   r2   rR   r   r.   r3   r4   r$   r"   )r
   rT   r   r6   Zinstructionr   r   r   Útest_animated_instructionŸ   s    
z'TestAnimation.test_animated_instructionc                 C   sv   dd l }ddlm} ddlm} |ƒ }|dd}| |j¡ ~| ¡  ztdƒ W n t	k
rf   Y nX t
ƒ srt‚d S )Nr   r   r*   r,   r<   g      ð?)Úgcr   r   r1   r+   r2   Z	proxy_refZcollectr$   ÚReferenceErrorr"   r   )r
   rW   r   r+   r7   r6   r   r   r   Útest_weakref«   s    
zTestAnimation.test_weakrefN)r   r   r   r8   r:   rA   rC   rF   rH   rI   rL   rP   rS   rV   rY   r   r   r   r   r)   ;   s   
	

r)   c                   @   sL   e Z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 )ÚTestSequencec                 C   s\   ddl m} ddlm} |dd|dd }|ƒ }| |¡ tdƒ | |¡ tƒ sXt‚d S ©Nr   r   r*   r,   r<   r9   ©	r   r   r1   r+   r2   r$   r   r"   r   r5   r   r   r   rA   ½   s    

zTestSequence.test_cancel_allc                 C   s^   ddl m} ddlm} |dd|dd }|ƒ }| |¡ tdƒ | |d¡ tƒ sZt‚d S ©Nr   r   r*   r,   r<   r9   r.   r\   r5   r   r   r   rC   Ç   s    
zTestSequence.test_cancel_all_2c                 C   s\   ddl m} ddlm} |dd|dd }|ƒ }| |¡ tdƒ | |¡ tƒ sXt‚d S r[   rG   r5   r   r   r   rH   Ñ   s    

zTestSequence.test_stop_allc                 C   s^   ddl m} ddlm} |dd|dd }|ƒ }| |¡ tdƒ | |d¡ tƒ sZt‚d S r]   rG   r5   r   r   r   rI   Û   s    
zTestSequence.test_stop_all_2c           	      C   s,  ddl m} ddlm} |ddd|ddd }|ƒ }||ƒ}||jƒ}||jƒ}| |¡ | ddd¡ | ddd¡ | ddd¡ td	ƒ | dd
d¡ | dd
d¡ | ddd¡ tdƒ | dd
d¡ | dd
d¡ | dd
d¡ tdƒ | dd
d¡ | dd
d¡ | dd
d¡ t	ƒ s(t
‚d S )Nr   r   r*   r,   r9   r-   r   Fçš™™™™™É?T©r   r   r1   r+   Úanim1Úanim2r2   r   r$   r"   r   ©	r
   r   r   r+   r6   r7   ZecZec1Zec2r   r   r   Útest_count_eventså   s0    


zTestSequence.test_count_eventsc                 C   s~   ddl m} ddlm} |dd|dd }|ƒ }| |¡r@t‚| |¡ | |¡sXt‚| |¡ | |¡rpt‚tƒ szt‚d S )Nr   r   r*   r,   r<   ©	r   r   r1   r+   Zhave_properties_to_animater   r2   rE   r"   r5   r   r   r   Útest_have_properties_to_animate  s    

z,TestSequence.test_have_properties_to_animatec                 C   s:   ddl m} |ddd|dd }|jdddœks6t‚d S )Nr   r   r,   éÈ   ©r.   r>   r<   rQ   rK   r   r   r   rS     s    z%TestSequence.test_animated_propertiesc              	   C   s@   ddl m} |dd|dd }t t¡ |j W 5 Q R X d S )Nr   r   r,   r<   ©r   r   r3   ZraisesÚAttributeErrorrO   rK   r   r   r   rP     s    zTestSequence.test_transitionN)r   r   r   rA   rC   rH   rI   rc   re   rS   rP   r   r   r   r   rZ   »   s   



"rZ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestRepetitiveSequencec                 C   sZ   ddl m} ddlm} |dd|dd }d|_|ƒ }| |¡ | |¡ tƒ sVt‚d S )Nr   r   r*   r,   r<   T)	r   r   r1   r+   Úrepeatr2   rE   r"   r   r5   r   r   r   Ú	test_stop!  s    

z TestRepetitiveSequence.test_stopc           	      C   s˜  ddl m} ddlm} |ddd|ddd }d|_|ƒ }||ƒ}||jƒ}||jƒ}| |¡ | dd	d¡ | dd	d¡ | dd	d¡ t	d
ƒ | ddd¡ | ddd¡ | dd	d¡ t	dƒ | ddd¡ | ddd¡ | ddd¡ t	dƒ | ddd¡ | ddd¡ | ddd¡ t	dƒ | ddd¡ | ddd¡ | ddd¡ | 
|¡ | ddd¡ | ddd¡ | ddd¡ tƒ s”t‚d S )Nr   r   r*   r,   r9   r-   Tr   Fr^   é   )r   r   r1   r+   rk   r`   ra   r2   r   r$   rE   r"   r   rb   r   r   r   rc   +  sB    



z(TestRepetitiveSequence.test_count_eventsN)r   r   r   rl   rc   r   r   r   r   rj     s   
rj   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestParallelc                 C   s~   ddl m} ddlm} |dd|dd@ }|ƒ }| |¡r@t‚| |¡ | |¡sXt‚| |¡ | |¡rpt‚tƒ szt‚d S r;   rd   r5   r   r   r   re   ]  s    

z,TestParallel.test_have_properties_to_animatec                 C   sj   ddl m} ddlm} |dd|dd@ }|ƒ }| |¡ | |d¡ tƒ rRt‚| |¡ tƒ sft‚d S )Nr   r   r*   r,   r<   r=   r.   )	r   r   r1   r+   r2   Zcancel_propertyr"   r   rE   r5   r   r   r   Útest_cancel_propertyi  s    


z!TestParallel.test_cancel_propertyc                 C   s8   ddl m} |dd|dd@ }|jdddœks4t‚d S )Nr   r   r,   r<   r=   rg   rQ   rK   r   r   r   rS   t  s    z%TestParallel.test_animated_propertiesc              	   C   s@   ddl m} |dd|dd@ }t t¡ |j W 5 Q R X d S )Nr   r   r,   r<   r=   rh   rK   r   r   r   rP   y  s    zTestParallel.test_transitionc           	      C   s*  ddl m} ddlm} |dd|ddd@ }|ƒ }||ƒ}||jƒ}||jƒ}| |¡ | dd	d¡ | dd	d¡ | dd	d¡ td
ƒ | dd	d¡ | ddd¡ | ddd¡ tdƒ | dd	d¡ | ddd¡ | ddd¡ tdƒ | dd	d¡ | ddd¡ | ddd¡ t	ƒ s&t
‚d S )Nr   r   r*   r,   r<   r9   )r>   r/   r   Fr^   Tr_   rb   r   r   r   rc     s0    


zTestParallel.test_count_eventsN)r   r   r   re   ro   rS   rP   rc   r   r   r   r   rn   [  s
   rn   )Ú__doc__r3   Zfixturer   r    r"   r$   r)   rZ   rj   rn   r   r   r   r   Ú<module>   s   




 d<