U
    P’“e<  ã                   @   s   d dl Z G dd„ de jƒZdS )é    Nc                   @   s|   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d„ Zdd„ ZdS )ÚKNSpaceTestCasec                    s$   ddl m‰  |  t‡ fdd„¡ d S )Nr   ©Úknspacec                      s   ˆ j S ©N)Úlabel© r   r   ú;/tmp/pip-unpacked-wheel-xzebddm3/kivy/tests/test_knspace.pyÚ<lambda>   ó    z1KNSpaceTestCase.test_not_exists.<locals>.<lambda>)Úkivy.uix.behaviors.knspacer   ÚassertRaisesÚAttributeError©Úselfr   r   r   Útest_not_exists
   s    zKNSpaceTestCase.test_not_existsc                    s:   ddl m‰  |  t‡ fdd„¡ ˆ  d¡ |  ˆ j¡ d S )Nr   r   c                      s   ˆ j S r   )Úlabel2r   r   r   r   r	      r
   z:KNSpaceTestCase.test_not_exists_property.<locals>.<lambda>r   )r   r   r   r   ÚpropertyÚassertIsNoner   r   r   r   r   Útest_not_exists_property   s    
z(KNSpaceTestCase.test_not_exists_propertyc                 C   sP   ddl m}m} ddlm} G dd„ d||ƒ}d|_d |_|ƒ }||_d |_d S )Nr   ©r   ÚKNSpaceBehavior©ÚWidgetc                   @   s   e Zd ZdS )z1KNSpaceTestCase.test_allow_none.<locals>.MyWidgetN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚMyWidget   s   r   é   )r   r   r   Úkivy.uix.widgetr   Zlabel3©r   r   r   r   r   Úwr   r   r   Útest_allow_none   s    zKNSpaceTestCase.test_allow_nonec                 C   sD   ddl m}m} ddlm} G dd„ d||ƒ}|ƒ }d|_d|_d S )Nr   r   r   c                   @   s   e Zd ZdS )z+KNSpaceTestCase.test_name.<locals>.MyWidgetNr   r   r   r   r   r   $   s   r   Zlabel4Ú )r   r   r   r   r   Úknsnamer    r   r   r   Ú	test_name    s    zKNSpaceTestCase.test_namec                 C   sL   ddl m} ddlm} |ƒ }||_|  |j|j¡ d|_|  d|j¡ d S )Nr   r   r   é7   )r   r   r   r   Zwidget1ÚassertIsZ	proxy_ref)r   r   r   r!   r   r   r   Útest_proxy_ref*   s    zKNSpaceTestCase.test_proxy_refc                 C   sJ   ddl m}m} ddlm} G dd„ d||ƒ}|dd}|  |j|¡ d S )Nr   r   r   c                   @   s   e Zd ZdS )z2KNSpaceTestCase.test_constructor.<locals>.MyWidgetNr   r   r   r   r   r   8   s   r   Úconstruct_name©r$   )r   r   r   r   r   ÚassertEqualr)   r    r   r   r   Útest_constructor4   s
    
z KNSpaceTestCase.test_constructorc                 C   sb   ddl m}m} ddlm} G dd„ d||ƒ}|dd}|  |j|¡ |dd}|  |j|¡ d S )Nr   r   r   c                   @   s   e Zd ZdS )z0KNSpaceTestCase.test_re_assign.<locals>.MyWidgetNr   r   r   r   r   r   B   s   r   Úconstruct_name2r*   )r   r   r   r   r   r+   r-   )r   r   r   r   r   r!   Úw2r   r   r   Útest_re_assign>   s    

zKNSpaceTestCase.test_re_assignc                 C   sx   ddl m} ddlm} | d¡}|  |j|¡ |  ||jj¡ |  	||j¡ |  d|jj
¡ d|_
|  d|jj
¡ d S )Nr   ©ÚBuilderr   zY
<NamedLabel@KNSpaceBehavior+Label>

NamedLabel:
    knsname: 'label5'
    text: 'Hello'
ÚHelloÚGoodbye)Ú	kivy.langr1   r   r   Úload_stringr+   Zlabel5r'   Ú__self__ZassertIsNotÚtext©r   r1   r   r!   r   r   r   Útest_simpleJ   s    
zKNSpaceTestCase.test_simplec                 C   sF   ddl m} ddlm} | d¡}|  d|jj¡ |  d|jj¡ d S )Nr   r0   r   z´
<NamedLabel@KNSpaceBehavior+Label>

BoxLayout:
    NamedLabel:
        knsname: 'label61'
        text: 'Hello'
    NamedLabel:
        knsname: 'label62'
        text: 'Goodbye'
r2   r3   )	r4   r1   r   r   r5   r+   Zlabel61r7   Zlabel62r8   r   r   r   Útest_simple_multiple_names\   s
    
z*KNSpaceTestCase.test_simple_multiple_namesc                 C   sJ   ddl m} ddlm} | d¡}|  d|j¡ d|j_|  d|j¡ d S )Nr   r0   r   zÜ
#:import knspace kivy.uix.behaviors.knspace.knspace
<NamedLabel@KNSpaceBehavior+Label>

BoxLayout:
    text: knspace.label7.text if knspace.label7 else ''
    NamedLabel:
        knsname: 'label7'
        text: 'Hello'
r2   r3   )r4   r1   r   r   r5   r+   r7   Zlabel7r8   r   r   r   Útest_simple_bindingn   s    

z#KNSpaceTestCase.test_simple_bindingc                 C   sT   ddl m} ddlm} | d¡}|  ||j¡ d|_|  |j¡ |  ||j	¡ d S )Nr   r0   r   zY
<NamedLabel@KNSpaceBehavior+Label>

NamedLabel:
    knsname: 'label8'
    text: 'Hello'
Únamed_label8)
r4   r1   r   r   r5   r+   Zlabel8r$   r   r<   r8   r   r   r   Útest_simple_name_change€   s    
z'KNSpaceTestCase.test_simple_name_changec                 C   sV   ddl m} ddlm} | d¡}|  |jd jjjd¡ |  |jd jjjd¡ d S )Nr   r0   r   zâ
<NamedLabel@KNSpaceBehavior+Label>

BoxLayout:
    NamedLabel:
        knspace: 'fork'
        knsname: 'label9'
        text: 'Hello'
    NamedLabel:
        knspace: 'fork'
        knsname: 'label9'
        text: 'Goodbye'
r3   r   r2   )	r4   r1   r   r   r5   r+   ÚchildrenZlabel9r7   r8   r   r   r   Útest_fork_string   s
    
z KNSpaceTestCase.test_fork_stringc                 C   sè   ddl m} ddlm}m} ddlm} G dd„ d||ƒ}|ƒ }|ƒ }|ƒ }| ¡ }	||_| ¡ }
|  	|j|¡ |  	|	j|¡ |  	|
j|¡ | ¡ }| ¡ }| ¡ }||_
|  	|j
|¡ |  	|j
|¡ |  |j
¡ ||_|  |j
¡ d S )Nr   r0   r   r   c                   @   s   e Zd ZdS )z.KNSpaceTestCase.test_fork.<locals>.NamedWidgetNr   r   r   r   r   ÚNamedWidget©   s   r@   )r4   r1   r   r   r   r   r   ÚforkZwidget2r+   Zwidget3r   Úparent)r   r1   r   r   r   r@   Únwr!   r.   ÚbeforeÚafterÚchildZchild2Z
grandchildr   r   r   Ú	test_fork¤   s,    zKNSpaceTestCase.test_forkc                 C   s$  ddl m} ddlm} | d¡}|  |jjjjj	d¡ |  |jj
jjj	d¡ |  |jjjjj	d¡ |  |jj
jjj	d¡ d|jj_	|  |jjjjj	d¡ |  |jj
jjj	d¡ |  |jjjjj	d¡ |  |jj
jjj	d¡ |jjj}|jj
j|jj_||jj
_|  |jjjjj	d¡ |  |jj
jjj	d¡ |  |jjjjj	d¡ |  |jj
jjj	d¡ d|jj_	|  |jjjjj	d¡ |  |jj
jjj	d¡ |  |jjjjj	d¡ |  |jj
jjj	d¡ d|jjjj_	|  |jjjjj	d¡ |  |jj
jjj	d¡ |  |jjjjj	d¡ |  |jj
jjj	d¡ d S )	Nr   r0   r   a‰  
<NamedLabel@KNSpaceBehavior+Label>

<MyComplexWidget@NamedLabel>:
    knsname: 'root_label'
    text: 'Hello'
    NamedLabel:
        id: child
        knsname: 'child_label'
        text: self.knspace.root_label.text if self.knspace.root_label else ''

BoxLayout:
    MyComplexWidget:
        knspace: 'fork'
        id: first
    MyComplexWidget:
        knspace: 'fork'
        id: second
r2   r3   ZGoodbye2ZGoodbye3)r4   r1   r   r   r5   r+   ÚidsÚfirstrF   r7   ÚsecondZchild_labelZ
root_label)r   r1   r   r!   rI   r   r   r   Útest_fork_bindingÃ   s:    




z!KNSpaceTestCase.test_fork_bindingN)r   r   r   r   r   r"   r%   r(   r,   r/   r9   r:   r;   r=   r?   rG   rK   r   r   r   r   r      s   


r   )ZunittestZTestCaser   r   r   r   r   Ú<module>   s   