U
    Pe                     @   s  d dl Z d dlmZ d dlmZ d dlZd dlZe jdd Zdd Z	dd	 Z
d
d Ze jdddgdd Zdd Ze jdddi fddi fdd d d d gfi fddd ddfdi fi fdddddgfi fd d!i fd"d#d$d%d&gifd'd(i fd)g fi fd*d+i fd,d+i fgd-d. Ze jd/ddi d0d fddi d1d fddi d0d2gd fddi d3d fdd d d d gfi dd4gd gfddd ddd5dfdi fi d6dii fdddddgfi d7ddddgfd d!i d8d9fd"d#d$d%d&gid&d%fd'd(i d%d:fd)g fi ddgg fd*di dd fd,d;i d<d=fge jd>d8d9gd?d@ Ze jdAdd0dBdCgdDdE Ze jdAdd0dBdCgdFdG Ze jdAdd0dBdCge jd6dHdIge jdJdJdKgdLdM ZdNdO ZdS )P    N)ascii_letters)randintc                 c   s  ddl m} ddlm} ddlm} dd l}ddlm}m	}m
}m}	 ddlm}
 ddlm} ddlm}m} dd	lm}m} |
d
d}| |d< |||d< |||d< t|j D ]4}||jkrqt|j|  D ]}||| qqt  ttj| j d< ttj!| j d< ttj"| j d< || j d< |j#| j d< t||| j d< t||| j d< t||	| j d< |$  z
| V  W 5 |%  X d S )Nr   )Window)Cache)platform)glGetString	GL_VENDORGL_RENDERER
GL_VERSION)Context)	ClockBase)FactoryBaseFactory)BuilderBaseBuilderF)initClockr   r   r   python_versionZ
python_apiZkivy_platformZkivy_versionZ	gl_vendorZgl_rendererZ
gl_version)&Zkivy.core.windowr   Z
kivy.cacher   Z
kivy.utilsr   kivyZkivy.core.glr   r   r	   r
   Zkivy.contextr   
kivy.clockr   Zkivy.factoryr   r   Zkivy.lang.builderr   r   Zcreate_fromlist_objectskeysZ_categoriesremovegcZcollectstrsysZ
extra_infoversionapi_version__version__pushpop)Z	benchmarkZ
kivy_clockr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   contextcategorykey r%   =/tmp/pip-unpacked-wheel-xzebddm3/kivy/tests/test_benchmark.pykivy_benchmark	   s>    




r'   c                 C   s.   ddl m} G dd d|}| }| | d S )Nr   EventDispatcherc                   @   s   e Zd ZdS )z-test_event_dispatcher_creation.<locals>.EventN__name__
__module____qualname__r%   r%   r%   r&   Event6   s   r.   )
kivy.eventr)   )r'   r)   r.   er%   r%   r&   test_event_dispatcher_creation3   s    r1   c                 C   s   ddl m} | }| | d S )Nr   Widget)kivy.uix.widgetr3   )r'   r3   wr%   r%   r&   test_widget_creation=   s    r6   c                 C   sD   ddl m} ddlm} G dd d|}|d | }| | d S )Nr   r   r2   c                   @   s   e Zd ZdS )z)test_kv_widget_creation.<locals>.MyWidgetNr*   r%   r%   r%   r&   MyWidgetH   s   r8   zX
<MyWidget>:
    width: 55
    height: 37
    x: self.width + 5
    y: self.height + 32
	kivy.langr   r4   r3   load_string)r'   r   r3   r8   r5   r%   r%   r&   test_kv_widget_creationD   s    
	r<   test_componentcreatesetc                    sn   ddl m} ddlm} G dd d|}|d | dd  fdd}|d	krb| | n| | d S )
Nr   r7   r2   c                   @   s   e Zd ZdS )z(test_complex_kv_widget.<locals>.MyWidgetNr*   r%   r%   r%   r&   r8   ]   s   r8   a"  
<MyWidget>:
    width: 1
    height: '{}dp'.format(self.width + 1)
    x: self.height + 1
    y: self.x + 1
    size_hint_min: self.size_hint
    size_hint_max_y: self.size_hint_min_y
    size_hint_max_x: self.size_hint_min_x
    opacity: sum(self.size_hint_min) + sum(self.size_hint_max)
c                      s$   d7  d7  _   f_d S )N   )widthZ	size_hintr%   shr5   Zwidgetr%   r&   	set_valueq   s    z)test_complex_kv_widget.<locals>.set_valuer>   r9   )r'   r=   r   r3   r8   rD   r%   rB   r&   test_complex_kv_widgetX   s    

rE   c                    s   ddl m} dd l}ddlmmm  | dkrFG  fddd|}nD| dkrfG fddd|}n$t|j| G fd	dd|}|S )
Nr   r(   )BooleanPropertyReferenceListPropertyAliasPropertyrH   c                       s&   e Zd Zdd Zdd Z eeZdS )get_event_class.<locals>.Eventc                 S   s   dS )Nr   r%   )selfr%   r%   r&   get_a   s    z$get_event_class.<locals>.Event.get_ac                 S   s   d S Nr%   )rJ   valuer%   r%   r&   set_a   s    z$get_event_class.<locals>.Event.set_aN)r+   r,   r-   rK   rN   ar%   )rH   r%   r&   r.      s   r.   rG   c                       s&   e Zd Z dZ dZeeZdS )rI   r   N)r+   r,   r-   Za1Za2rO   r%   )rF   rG   r%   r&   r.      s   c                       s   e Zd Z ZdS )rI   N)r+   r,   r-   rO   r%   )argsclskwargsr%   r&   r.      s   )r/   r)   Zkivy.propertiesrF   rG   rH   getattrZ
properties)namerP   rR   r)   r   r.   r%   )rH   rF   rG   rP   rQ   rR   r&   get_event_class~   s    rU   zname,args,kwargsZNumericProperty)r   ZObjectPropertyrL   ZVariableListPropertyZBoundedNumericProperty)r@      )minmaxZDictPropertyZColorPropertyr@   rF   )FZOptionPropertyrO   optionsrO   bZStringProperty) ZListPropertyrH   r%   rG   c                 C   s   t |||}| }| | d S rL   rU   )r'   rT   rP   rR   	event_clsr0   r%   r%   r&   test_property_creation   s    r_   zname,args,kwargs,val,reset_val
   Z10dpZdp      g      ?rT   ZredTFr\   )r@   rV   )   rb   rc   exclude_firstc           	         s8   t |||}|   fdd}|r,|  | | d S )Nc                      s    _  _ d S rL   rY   r%   r0   	reset_valvalr%   r&   set_property   s    z'test_property_set.<locals>.set_propertyr]   )	r'   rT   rP   rR   rh   rg   re   r^   ri   r%   rf   r&   test_property_set   s    rj   nd   i  c                 C   sX   ddl m} ddlm} | }| }t|D ]}||  q,||j | |j d S )Nr   )RenderContextr2   )	Zkivy.graphicsrm   r4   r3   range
add_widgetaddZcanvasZdraw)r'   rk   rm   r3   ctxrootxr%   r%   r&   test_widget_empty_draw   s    rt   c                    sz   ddl m} ddlm} |  tdD ].}| }t|D ]}||  q8 | q&|dd fdd}| | d S )Nr   )UnitTestTouchr2   r`   c                      s(     d   d   d d S )NZon_touch_downZon_touch_moveZon_touch_up)dispatchr%   rr   touchr%   r&   rv      s    z,test_widget_dispatch_touch.<locals>.dispatch)Zkivy.tests.commonru   r4   r3   rn   ro   )r'   rk   ru   r3   rs   parentyrv   r%   rw   r&   test_widget_dispatch_touch   s    
r{   labelbuttontickZno_tickc           
         s   ddl m  ddlm} ddlm} |dd}|dd}|dkrD|n|g ttt|D ]*}fdd	td
D }	d
| q\ fdd}	| |	 d S )Nr   )r   )Label)Buttonz*&^%textr|   c                    s   g | ]}t td  d  qS )r   r@   )r   r   ).0_)kr%   r&   
<listcomp>  s     z,test_random_label_create.<locals>.<listcomp>r`   r\   c                     s2   g } D ]}|  |d qdkr.   d S )Nr   r~   )appendr~   )or   )r   rQ   labelsr~   r%   r&   make_labels	  s
    z-test_random_label_create.<locals>.make_labels)r   r   Zkivy.uix.labelr   Zkivy.uix.buttonr   lenr   rn   r   join)
r'   rk   rT   r~   r   r   r|   r}   rs   r   r%   )r   rQ   r   r   r~   r&   test_random_label_create   s    

r   c                    s0   ddl m  d fdd}|  | | d S )Nr   r7   c                      s     d d d7 d S )Nz

<MyWidgetzN>:
    width: 55
    height: 37
    x: self.width + 5
    y: self.height + 32
r@   )r;   r%   r   suffixr%   r&   parse_kv  s    
ztest_parse_kv.<locals>.parse_kv)r:   r   )r'   r   r%   r   r&   test_parse_kv  s
    r   )Zpyteststringr   randomr   r   r   Zfixturer'   r1   r6   r<   markZparametrizerE   rU   r_   rj   rt   r{   r   r   r%   r%   r%   r&   <module>   sl   
)

% 




