
    hMho                         d Z ddlmZ ddlmZ ddlZddlZddlZddlm	Z	  G d de          Z
 G d d	e          Z G d
 de          Z G d de          ZdS )zTesting widget layout templates    )TestCase)mockN)LayoutPropertiesc                   V    e Zd ZdZd Zd Zd Z ej        d          d             Z	dS )TestTwoByTwoLayouttest layout templatesc                 V   t          j                    }t          j                    }t          j                    }t          j                    }t          j        ||||          }|j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        ||d	|          }|j        j        d
k    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j        J |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        d	|||          }|j        j        dk    sJ |j        J |j        j        j        dk    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        d	|d	|          }|j        j        dk    sJ |j        J |j        j        j        dk    sJ |j        J |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        |d	||          }|j        j        dk    sJ |j        j        j        dk    sJ |j        J |j        j        j        dk    sJ |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        |d	d	d	          }|j        j        dk    sJ |j        |u sJ |j        j        j        dk    sJ |j        J |j        J |j	        J t          |                                d                   dk    sJ t          j        d	|d	d	          }|j        j        dk    sJ |j        |u sJ |j        j        j        dk    sJ |j        J |j        J |j	        J t          |                                d                   dk    sJ t          j        d	d	d	d	          }|j        j        J |j        J |j        J |j        J |j	        J |                                d         rJ t          j        d	|d	d	d          }|j        j        dk    sJ |j        |u sJ |j        j        j        dk    sJ |j        J |j        J |j	        J t          |                                d                   dk    sJ d	S )z'test merging cells with missing widgetstop_left	top_rightbottom_leftbottom_right/"top-left top-right"
"bottom-left bottom-right"ztop-leftz	top-rightzbottom-leftzbottom-rightchildren   N,"top-left top-right"
"top-left bottom-right"   z2"bottom-left top-right"
"bottom-left bottom-right"z1"top-right top-right"
"bottom-right bottom-right"   z2"top-left bottom-right"
"bottom-left bottom-right"z'"top-left top-left"
"top-left top-left"   z+"top-right top-right"
"top-right top-right"F)r   r   r   r   merge)widgetsButtonTwoByTwoLayoutlayoutgrid_template_areasr   	grid_arear   r   r   len	get_state)selfbutton1button2button3button4boxs         n/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipywidgets/widgets/tests/test_widget_templates.pytest_merge_cellsz#TestTwoByTwoLayout.test_merge_cells   s    ."".""."".""$g/61829; ; ;
 z- 3O P P P P|",
::::}#-<<<<%/=@@@@&0NBBBB3==??:.//14444$g/61529; ; ;
 z- 3L M M M M|",
::::}#-<<<<&&&&0NBBBB3==??:.//14444$d/61829; ; ;
 z- 3O P P P P|###}#-<<<<%/=@@@@&0NBBBB3==??:.//14444$d/61529; ; ;
 z- 3P Q Q Q Q|###}#-<<<<&&&&0NBBBB3==??:.//14444$g/31829; ; ;
 z- 3O P P P P|",
::::}$$$%/=@@@@&0NBBBB3==??:.//14444 $g/315268 8 8
 z- 3H I I I I |w&&&&|",
::::}$$$&&&'''3==??:.//14444$d/615268 8 8
 z- 3J K K K K }''''}#-<<<<|###&&&'''3==??:.//14444$d/315268 8 8
 z-555|###}$$$&&&'''==??:....$d/61526+0	2 2 2 z- 3O P P P P }''''}#-<<<<|###&&&'''3==??:.//1444444    c                    t          j        d          }t          j                    }t          j                    }t          j                    }t          j                    }t          j        |||||          }|j        j        dk    sJ dS )z6test whether layout options are passed down to GridBoxcenteralign_itemsr   r   r   r   r   N)r   Layoutr   r   r   r+   )r   r   r    r!   r"   r#   r$   s          r%   test_keep_layout_optionsz+TestTwoByTwoLayout.test_keep_layout_options   s     H555."".""."".""$g18w,24 4 4 z%111111r'   c           	         t          j                    }t          j                    }t          j                    }t          j                    }t          j        ||||ddd          }|j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ t          j        ddd          }t          j        |||||          }|j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ t          j        ddd          }t          j        |||||d          }|j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ dS )	zgtest whether the extra layout options of the template class are
           passed down to Layout object10pxr)   )r   r   r   r   grid_gapjustify_contentr+   )r1   r2   r+   r,   30px)r   r   r   r   r   r1   N)r   r   r   r   r1   r2   r+   r-   )r   r    r!   r"   r#   r$   r   s          r%   test_pass_layout_optionsz+TestTwoByTwoLayout.test_pass_layout_options   s    ."".""."".""$g18w.4h19; ; ;
 z"f,,,,z)X5555z%1111 ,46 6 6$g18w,2' ' '
 z"f,,,,z)X5555z%1111 ,46 6 6$g18w,2V' ' '
 z"f,,,,z)X5555z%111111r'   zipywidgets.Layout.send_statec                    t          j                    }t          j                    }t          j                    }t          j                    }t          j        ||d|          }ddlm} |                                }t          |d                   dk    sJ |j        j        dk    sJ t          j
        |          |j        j        _        |                                 ||_        |                                }t          |d                   d	k    sJ |j        j        d
k    sJ |                    d           t          j        ||d|          }|j        j        dk    sJ t          j
        |          |j        j        _        |                                 d|_        |j        j        d
k    sJ |                    d           dS )z9test whether it's possible to add widget outside __init__Nr
   r   )Kernelr   r   r   )specr   r   r   )keyF)r   r   r   ipykernel.kernelbaser6   r   r   r   r   r   	MagicMockcommkernel
reset_mockr   assert_called_withr   )	r   
send_stater    r!   r"   r#   r$   r6   states	            r%   test_update_dynamicallyz*TestTwoByTwoLayout.test_update_dynamically   s    ."".""."".""$g15GM M M//////5$%%****z- 3L M M M M "&V!<!<!<
!5$%%****z- 3O P P P P 	%%*?%@@@$g15GM M Mz- 3L M M M M!%V!<!<!<
	z- 3O P P P P%%*?%@@@@@r'   N)
__name__
__module____qualname____doc__r&   r.   r4   r   patchrA    r'   r%   r   r      sz        B5 B5 B5H2 2 2(2 (2 (2V TZ.//%A %A 0/%A %A %Ar'   r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestAppLayoutr   c                 .   t          j                    }t          j                    }t          j                    }t          j                    }t          j                    }t          j        |||||          }|j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ |j
        j        j        dk    sJ t          |                                d                   d	k    sJ t          j                    }|j        j        J |j        j        J |j        j        J t          |                                d                   dk    sJ d
S )z!test creating with default values)footerheaderr)   left_sidebarright_sidebarQ"header header header"
"left-sidebar center right-sidebar"
"footer footer footer"rK   rL   r)   left-sidebarright-sidebarr      Nr   )r   r   	AppLayoutr   r   rK   r   rL   r)   rM   rN   r   r   grid_template_columnsgrid_template_rowsr   rK   rL   r)   rM   rN   r$   s          r%   test_create_with_defaultsz'TestAppLayout.test_create_with_defaults   s    !!!!!!~''((%'
 
 
 z- 3K L L L L z *h6666z *h6666z *h6666&0NBBBB '1_DDDD3==??:.//14444 !!z-555z/777z,4443==??:.//1444444r'   c                    t          j                    }t          j                    }t          j                    }t          j                    }t          j                    }t          j        |          }|j        j        dk    sJ |j        j        j        dk    sJ t          |                                d                   dk    sJ t          j        |          }|j        j        dk    sJ |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        ||||	          }|j        j        d
k    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ t          |                                d                   dk    sJ t          j        ||||          }|j        j        dk    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ t          |                                d                   dk    sJ t          j        |||          }|j        j        dk    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ t          |                                d                   dk    sJ t          j        ||d||          }|j        j        dk    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ |j        j        j        dk    sJ |j        J t          |                                d                   dk    sJ t          j        ||dd|          }|j        j        dk    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j	        J |j        j        j        dk    sJ |j        J t          |                                d                   dk    sJ t          j        ||ddd          }|j        j        dk    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j        J |j	        J |j        J t          |                                d                   dk    sJ t          j        |||d          }|j        j        dk    sJ |j
        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j	        J |j        J t          |                                d                   dk    sJ t          j        ||||          }|j        j        dk    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ |j        j        j        dk    sJ |j
        j        j        dk    sJ |j        J t          |                                d                   dk    sJ t          j        ||||          }|j        j        d k    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ |j        j        j        dk    sJ |j        j        j        dk    sJ |j
        J t          |                                d                   dk    sJ t          j        |||!          }|j        j        d"k    sJ |j        j        j        dk    sJ |j	        j        j        dk    sJ |j        j        j        dk    sJ |j
        J |j        J t          |                                d                   dk    sJ t          j        |          }|j        j        dk    sJ |j        j        j        dk    sJ t          |                                d                   dk    sJ dS )#z"test if cells are correctly merged)r)   zD"center center center"
"center center center"
"center center center"r)   r   r   )rM   zz"left-sidebar left-sidebar left-sidebar"
"left-sidebar left-sidebar left-sidebar"
"left-sidebar left-sidebar left-sidebar"rP   )rL   rK   rM   r)   zJ"header header header"
"left-sidebar center center"
"footer footer footer"rK   rL   r   )rL   rK   rN   r)   zK"header header header"
"center center right-sidebar"
"footer footer footer"rQ   )rL   rK   r)   zD"header header header"
"center center center"
"footer footer footer"r   N)rL   rK   r)   rM   rN   z<"header header"
"left-sidebar right-sidebar"
"footer footer"z="header header"
"right-sidebar right-sidebar"
"footer footer"z"header"
"footer"r   F)rL   rK   r)   r   rO   )rK   r)   rM   rN   z:"left-sidebar center right-sidebar"
"footer footer footer")rL   r)   rM   rN   z:"header header header"
"left-sidebar center right-sidebar")r)   rM   rN   z#"left-sidebar center right-sidebar")r   r   rS   r   r   r)   r   r   r   rM   rK   rL   rN   rV   s          r%   test_merge_empty_cellsz$TestAppLayout.test_merge_empty_cells  sT
    !!!!!!~''(( 
 
 
 z- 3K L L L L z *h66663==??:.//14444%
 
 
 z- 3] ^ ^ ^ ^ &0NBBBB3==??:.//14444 %	
 
 
 z- 3K L L L L z *h6666z *h6666z *h6666&0NBBBB3==??:.//14444'	
 
 
 z- 3K L L L L z *h6666z *h6666z *h6666 '1_DDDD3==??:.//14444
 
 
 z- 3K L L L L z *h6666z *h6666z *h66663==??:.//14444 %'
 
 
 z- 3D E E E E z *h6666z *h6666&0NBBBB '1_DDDDz!!!3==??:.//14444 '
 
 
 z- 3D E E E E z *h6666z *h6666''' '1_DDDDz!!!3==??:.//14444 
 
 
 z- 3= > > > >z *h6666z *h6666z!!!''' (((3==??:.//14444
 	
 
 
 z- 3K L L L L z *h6666z *h6666z *h6666''' (((3==??:.//14444 %'	
 
 
 z- 3K L L L Lz *h6666&0NBBBB '1_DDDDz *h6666z!!!3==??:.//14444%'	
 
 
 z- 3X Y Y Y Yz *h6666&0NBBBB '1_DDDDz *h6666z!!!3==??:.//14444%'
 
 
 z-1VVVVVz *h6666&0NBBBB '1_DDDDz!!!z!!!3==??:.//14444 
 
 
 z- 3K L L L L z *h66663==??:.//1444444r'   c                    t          j                    }|                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ t          j        t
                    5  |                    d           d d d            d S # 1 swxY w Y   d S )N100px1frz2.5frz2.5z25%zthis is not correct size)r   rS   _size_to_csspytestraises	TypeErrorr   r$   s     r%   test_size_to_csszTestAppLayout.test_size_to_css  s4   !!((G3333&&%////((G3333&&'1111&&%////]9%% 	9 	97888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   4CCCc                    t          j                    }t          j                    }t          j                    }t          j                    }t          j                    }t          j        |||||          }t          j        t
          j                  5  g d|_        d d d            n# 1 swxY w Y   t          j        t
          j                  5  ddg|_        d d d            n# 1 swxY w Y   t          j        t
          j                  5  g d|_        d d d            n# 1 swxY w Y   t          j        t
          j                  5  ddg|_        d d d            n# 1 swxY w Y   |j	        j
        dk    sJ |j	        j        dk    sJ g d|_        |j	        j
        dk    sJ |j	        j        dk    sJ g d|_        |j	        j
        dk    sJ |j	        j        d	k    sJ d S )
N)rL   rK   rM   rN   r)   )1fxrd   rd   rd   rd   z1fr 3fr 1frz1fr 2fr 1fr)3frr[      z3fr 100px 20fr)r   r   r   z3fr 3fr 1fr)r   r   rS   r^   r_   	traitlets
TraitErrorpane_widthspane_heightsr   rU   rT   rV   s          r%   test_set_pane_widths_heightsz*TestAppLayout.test_set_pane_widths_heights  s   !!!!!!~''((%&
 
 
 ]9/00 	; 	;:::CO	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;]9/00 	- 	-$enCO	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- ]9/00 	< 	<;;;C	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<]9/00 	. 	. %u~C	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. z,====z/=@@@@///z,0@@@@@z/=@@@@#))z,0@@@@@z/=@@@@@@sH   
B--B14B1
C,,C03C0
D++D/2D/
E**E.1E.N)rB   rC   rD   rE   rW   rY   rb   rk   rG   r'   r%   rI   rI      s`        "5 "5 "5JV5 V5 V5p
9 
9 
9#A #A #A #A #Ar'   rI   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestGridspecLayoutztest GridspecLayoutc                    t          j        t          j                  5  t	          j                    }d d d            n# 1 swxY w Y   t          j        t          j                  5  t	          j        dd          }d d d            n# 1 swxY w Y   t	          j        dd          }|j        dk    sJ |j        dk    sJ t          |j	                  dk    sJ t          |j	        d                   dk    sJ t	          j        dd          }|j        dk    sJ |j        dk    sJ t          j        t          j                  5  t	          j        dd          }d d d            d S # 1 swxY w Y   d S )Nr   )n_rows	n_columnsrR   r   r   r   )
r^   r_   rg   rh   r   GridspecLayoutrp   rq   r   _grid_template_areasra   s     r%   	test_initzTestGridspecLayout.test_init+  s;   ]9/00 	+ 	+(**C	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ]9/00 	A 	A(a@@@C	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A $A;;;zQ}!!!!3+,,11113+A.//14444$Q**zQ}!!!!]9/00 	/ 	/(A..C	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s3   ?AA(BBBE00E47E4c                 D   t          j        dd          }t          j                    }t          j                    }t          j                    }t          j                    }||d<   |j        j        }||j        v sJ |j        j        d                    |          k    sJ ||d<   |j        j        }||k    sJ ||j        v sJ |j        j        d                    ||          k    sJ ||d<   |j        j        }||k    sJ ||k    sJ ||j        v sJ |j        j        d                    |||	          k    sJ ||d<   |j        j        }	||	k    sJ ||	k    sJ ||j        v sJ ||j        vsJ |j        j        d
                    |||	          k    sJ d S )Nr   r   r   r   z"{} . ."
". . .")ro   ro   z"{} . ."
". . {}"r   r   z"{b1} . ."
"{b3} . {b2}")b1b2b3z"{b1} . ."
"{b4} . {b2}")rx   ry   b4)r   rr   r   r   r   r   r   format)
r   r$   r    r!   r"   r#   button1_labelbutton2_labelbutton3_labelbutton4_labels
             r%   test_setitem_indexz%TestGridspecLayout.test_setitem_index?  sA   $Q**."".""."".""D	0#,&&&&z-1H1O1OP]1^1^^^^^F0----#,&&&&z-1I1P1PQ^Q^2` 2` ` ` ` ` D	0--------#,&&&&z-1P1W1W[h[h[h 2X 2j 2j j j j j
 D	0--------#,&&&&cl****z-1P1W1W[h[h[h 2X 2j 2j j j j j j jr'   c                    t          j        dd          }t          j                    }||d ddf<   t          |j                  dk    sJ ||j        v sJ |j        j        }|j        j        d                    |          k    sJ t          j        dd          }t          j                    }t          j                    }||d ddd f<   t          |j                  dk    sJ ||j        v sJ |j        j        }|j        j        d                    |          k    sJ ||d ddd f<   t          |j                  dk    sJ ||j        v sJ |j        j        }|j        j        d                    |          k    sJ d S )Nr   r   r   r   z"{b1} . ."
"{b1} . .")rx   z". {b1} {b1}"
". {b1} {b1}")	r   rr   r   r   r   r   r   r   r|   )r   r$   r    r}   r!   r~   s         r%   test_setitem_slicesz&TestGridspecLayout.test_setitem_slicesh  s   $Q**.""BQBE
3<  A%%%%#,&&&&0z-1M1T1TXe1T1f1fffff$Q**."".""BQBF3<  A%%%%#,&&&&0z-1S1Z1Z^k1Z1l1lllll BQBF3<  A%%%%#,&&&&0z-1S1Z1Z^k1Z1l1lllllllr'   c                 x    t          j        dd          }t          j                    }||d<   |d         |u sJ dS )ztest retrieving widgetr   r   rv   N)r   rr   r   )r   r$   r    s      r%   test_getitem_indexz%TestGridspecLayout.test_getitem_index  sG     $Q**.""D	4yG######r'   c                    t          j        dd          }t          j                    }||dddf<   |dddf         |u sJ t          j        dd          }t          j                    }t          j                    }||d<   ||d<   |d         |u sJ |d         |u sJ t          j        t
          d          5  |dddf         }ddd           dS # 1 swxY w Y   dS )	z#test retrieving widgets with slicesr   r   Nr   rv   rw   zThe slice spans)match)r   rr   r   r^   r_   r`   )r   r$   r    r!   buttons        r%   test_getitem_slicesz&TestGridspecLayout.test_getitem_slices  sD    $Q**.""BQBE
2A2q5zg%%%%$Q**."".""D	D	4yW$$$$4yW$$$$]9,=>>> 	  	 !QZF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   :CCCN)	rB   rC   rD   rE   rt   r   r   r   r   rG   r'   r%   rm   rm   (  sl        / / /('j 'j 'jRm m m>$ $ $         r'   rm   c                   L    e Zd ZdZ G d dej        e          Zd Zd Z	d Z
dS )TestLayoutPropertiesz!test mixin with layout propertiesc                   <    e Zd Z ej        ej        d          ZdS )"TestLayoutProperties.DummyTemplateT)
allow_noneN)rB   rC   rD   rg   Instancer   WidgetlocationrG   r'   r%   DummyTemplater     s'        %9%gnFFFr'   r   c                     |                      d          }|j        dk    sJ |j        j        dk    sJ d|_        |j        dk    sJ |j        j        dk    sJ dS )zDtest whether respective layout traits are updated when traits changez100%)widthautoN)r   r   r   r   templates     r%   #test_layout_updated_on_trait_changez8TestLayoutProperties.test_layout_updated_on_trait_change  sy     %%F%33~''''$....~''''$......r'   c                     |                      d          }|j        dk    sJ |j        j        dk    sJ d|_        |j        dk    sJ |j        j        dk    sJ d S )Ntopr*   z
flex-startbottomzflex-end)r   r+   r   r   s     r%   test_align_items_extra_optionsz3TestLayoutProperties.test_align_items_extra_options  sz    %%%%88#u,,,,*l::::'#x////*j888888r'   c                     |                                  }t          j        j        D ]}||_        |j        |k    sJ t	          j        t          j                  5  d|_        d d d            d S # 1 swxY w Y   d S )Nzany default position)r   r   r+   valuesr^   r_   rg   rh   )r   prop_objprops      r%   test_validate_propertiesz-TestLayoutProperties.test_validate_properties  s    %%''$07 	0 	0D#'H '4/////]9/00 	: 	:#9H 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   A00A47A4N)rB   rC   rD   rE   r   GridBoxr   r   r   r   r   rG   r'   r%   r   r     s~        ++G G G G G)9 G G G	/ 	/ 	/9 9 9: : : : :r'   r   )rE   unittestr   r   r^   rg   
ipywidgetsr   #ipywidgets.widgets.widget_templatesr   r   rI   rm   r   rG   r'   r%   <module>r      s?   ! !                      @ @ @ @ @ @gA gA gA gA gA gA gA gATpA pA pA pA pAH pA pA pAd	|  |  |  |  |  |  |  | ~#: #: #: #: #:8 #: #: #: #: #:r'   