U
    Pe                     @   s.  d dl mZ d dlZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZ G d	d
 d
eZdd Zeeddd Zdd Zeeddd Zdd Zeeddd Zdd Zeeddd Zdd Zeeddd Zd d! Zeedd"d# Zd$d% Zeedd&d' ZdS )(    )nameN)isclose)dedentApp)Clock)lang)GraphicUnitTest	async_runUnitKivyAppc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )AppTestc                 C   s&   d t _t }t|jd |  d S )N皙?)r   _delayed_startr   r   schedule_oncestoprunselfa r   7/tmp/pip-unpacked-wheel-xzebddm3/kivy/tests/test_app.pytest_start_raw_app   s    zAppTest.test_start_raw_appc                 C   s6   G dd dt }d t_| }t|jd |  d S )Nc                   @   s   e Zd ZdS )z1AppTest.test_start_app_with_kv.<locals>.TestKvAppN__name__
__module____qualname__r   r   r   r   	TestKvApp   s   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   test_start_app_with_kv   s
    zAppTest.test_start_app_with_kvc                 C   s    t  }|j}tj|std S N)r   user_data_dirospathexistsAssertionError)r   r   data_dirr   r   r   test_user_data_dir   s    zAppTest.test_user_data_dirc                 C   s   t  }tj|jstd S r   )r   r    r!   r"   	directoryr#   r   r   r   r   test_directory!   s    zAppTest.test_directoryc                 C   s(   G dd dt }| }|jdks$td S )Nc                   @   s   e Zd ZdS )z#AppTest.test_name.<locals>.NameTestNr   r   r   r   r   NameTest&   s   r(   Znametest)r   r   r#   )r   r(   r   r   r   r   	test_name%   s    zAppTest.test_nameN)r   r   r   r   r   r%   r'   r)   r   r   r   r   r      s
   	r   c                     s4   ddl m}  ddlm  G  fdddt| }| S )Nr   r   Labelc                       s   e Zd Z fddZdS )zbasic_app.<locals>.TestAppc                    s
    ddS NHello, World!)textr   r   r*   r   r   build2   s    z basic_app.<locals>.TestApp.buildNr   r   r   r0   r   r*   r   r   TestApp1   s   r2   )kivy.appr   kivy.uix.labelr+   r   r   r2   r   r*   r   	basic_app-   s    r6   )Zapp_cls_funcc                    s   | j jdkstd S )Nr-   )rootr.   r#   kivy_appr   r   r   test_basic_app8   s    r:   c                     s4   ddl m}  ddlm  G  fdddt| }| S )Nr   r   ToggleButtonc                       s   e Zd Z fddZdS )zbutton_app.<locals>.TestAppc                    s
    ddS r,   r   r/   r;   r   r   r0   B   s    z!button_app.<locals>.TestApp.buildNr1   r   r;   r   r   r2   A   s   r2   )r3   r   Zkivy.uix.togglebuttonr<   r   r5   r   r;   r   
button_app=   s    r=   c                    sX   | j jdkst| j jdks t| j| j dd2 z3 d H W \}}q06 | j jdksTtd S )Nr-   normalT)widgetZwidget_jitterZdown)r7   r.   r#   statedo_touch_down_up)r9   r@   	touch_posr   r   r   test_button_appH   s     rC   c                     sB   ddl m}  ddlm  ddlm G  fdddt| }| S )Nr   r   r*   )Scatterc                       s   e Zd Z fddZdS )zscatter_app.<locals>.TestAppc                    s&    ddd}ddd}| | |S )Nr-   )200dprE   )r.   sizeF)Zdo_scaleZdo_rotation)Z
add_widget)r   labelscatterr+   rD   r   r   r0   Z   s    
z"scatter_app.<locals>.TestApp.buildNr1   r   rI   r   r   r2   Y   s   r2   )r3   r   r4   r+   Zkivy.uix.scatterrD   r   r5   r   rI   r   scatter_appT   s
    rJ   c                    s^   | j }t|jdkst| jddd2 z3 d H W \}}q&6 t|jdsJtt|jdsZtd S )Nr   r   d   rM   )   rN   )posZ
target_posrM   )r7   tuplerO   r#   Zdo_touch_dragr   xy)r9   rH   r@   rB   r   r   r   test_drag_appc   s     rS   c                     s4   ddl m}  ddlm  G  fdddt| }| S )Nr   r   	TextInputc                       s   e Zd Z fddZdS )ztext_app.<locals>.TestAppc                    s     S r   r   r/   rT   r   r   r0   u   s    ztext_app.<locals>.TestApp.buildNr1   r   rT   r   r   r2   t   s   r2   )r3   r   Zkivy.uix.textinputrU   r   r5   r   rT   r   text_appp   s    rV   c                    s   | j }|jdkst| j|d2 z3 d H W \}}q 6 | jddd2 z3 d H W \}}qB6 | jddd2 z3 d H W \}}qd6 |jdkstd S )	N )r?   A   )keyZ	num_pressq   ZAAAAqqq)r7   r.   r#   rA   Zdo_keyboard_key)r9   r.   r@   rB   valuer   r   r   test_text_app{   s    r^   c                     sH   ddl m}  ddlm ddlm m G  fdddt| }| S )Nr   r   Widget)Color	Rectanglec                       s   e Zd Z fddZdS )zgraphics_app.<locals>.TestAppc              	      sP    }|j :  dddd ddd  dddd ddd W 5 Q R X |S )N   r   rK   rL   )rO   rF   )rM   r   )Zcanvas)r   r?   ra   rb   r`   r   r   r0      s    z#graphics_app.<locals>.TestApp.buildNr1   r   rd   r   r   r2      s   r2   )r3   r   kivy.uix.widgetr`   Zkivy.graphicsra   rb   r   r5   r   rd   r   graphics_app   s
    
rf   c           
         sf   | j }| |ddg\\}}}}\}}}}	|s:|s:|s:|r>t|dkr^|dkr^|dkr^|	dksbtd S )N)2   rg   )   rg   rg   )r7   Zget_widget_pos_pixelr#   )
r9   r?   Zr1Zg1Zb1Za1Zr2Zg2Zb2Za2r   r   r   test_graphics_app   s     ri   c                     sn   ddl m}  ddlm} ddlm ddlm} G fddd| |t	d G  fd	d
d
t
| }| S )Nr   r   BuilderObjectPropertyr_   c                       s   e Zd Z dZdS )z kv_app_ref_app.<locals>.MyWidgetN)r   r   r   objr   rl   r   r   MyWidget   s   ro   z;
        <MyWidget>:
            obj: app.__self__
        c                       s   e Zd Z fddZdS )zkv_app_ref_app.<locals>.TestAppc                    s     S r   r   r/   ro   r   r   r0      s    z%kv_app_ref_app.<locals>.TestApp.buildNr1   r   rp   r   r   r2      s   r2   )r3   r   	kivy.langrk   Zkivy.propertiesrm   re   r`   load_stringr   r   )r   rk   r`   r2   r   )ro   rm   r   kv_app_ref_app   s    rs   c                    s   d S r   r   r8   r   r   r   test_leak_app_kv_property   s    rt   c                     s4   ddl m}  ddlm  G  fdddt| }| S )Nr   r   rj   c                       s   e Zd Z fddZdS )z'kv_app_default_ref_app.<locals>.TestAppc                    s     tdS )NzO
                Widget:
                    obj: app.__self__
                )rr   r   r/   rj   r   r   r0      s    z-kv_app_default_ref_app.<locals>.TestApp.buildNr1   r   rj   r   r   r2      s   r2   )r3   r   rq   rk   r   r5   r   rj   r   kv_app_default_ref_app   s    	ru   c                    s   d S r   r   r8   r   r   r   !test_leak_app_default_kv_property   s    rv   ) r    r   os.pathmathr   textwrapr   r3   r   Z
kivy.clockr   Zkivyr   Z
kivy.testsr	   r
   r   r   r6   r:   r=   rC   rJ   rS   rV   r^   rf   ri   rs   rt   ru   rv   r   r   r   r   <module>   s:   !




	
