ó
0¾I]c           @   sÚ   d  Z  d d l m Z y d d l m Z Wn e k
 rI d d l Z n Xd d l Z d d l Z d d l Z d d l	 m
 Z
 d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s   Testing widget layout templatesiÿÿÿÿ(   t   TestCase(   t   mockN(   t   LayoutPropertiest   TestTwoByTwoLayoutc           B   sA   e  Z d  Z d „  Z d „  Z d „  Z e j d ƒ d „  ƒ Z RS(   s   test layout templatesc         C   s<  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | d | d | d | ƒ } | j j d d k sp t ‚ | j j j d k s‹ t ‚ | j j j d k s¦ t ‚ | j	 j j d	 k sÁ t ‚ | j
 j j d
 k sÜ t ‚ t | j ƒ  d ƒ d k sþ t ‚ t  j d | d | d d d | ƒ } | j j d d k s>t ‚ | j j j d k sYt ‚ | j j j d k stt ‚ | j	 d k s‰t ‚ | j
 j j d
 k s¤t ‚ t | j ƒ  d ƒ d k sÆt ‚ t  j d d d | d | d | ƒ } | j j d d k st ‚ | j d k st ‚ | j j j d k s6t ‚ | j	 j j d	 k sQt ‚ | j
 j j d
 k slt ‚ t | j ƒ  d ƒ d k sŽt ‚ t  j d d d | d d d | ƒ } | j j d d k sÎt ‚ | j d k sãt ‚ | j j j d k sþt ‚ | j	 d k st ‚ | j
 j j d
 k s.t ‚ t | j ƒ  d ƒ d k sPt ‚ t  j d | d d d | d | ƒ } | j j d d k st ‚ | j j j d k s«t ‚ | j d k sÀt ‚ | j	 j j d	 k sÛt ‚ | j
 j j d
 k söt ‚ t | j ƒ  d ƒ d k st ‚ t  j d | d d d d d d ƒ } | j j d d k sXt ‚ | j | k smt ‚ | j j j d k sˆt ‚ | j d k st ‚ | j	 d k s²t ‚ | j
 d k sÇt ‚ t | j ƒ  d ƒ d k sét ‚ t  j d d d | d d d d ƒ } | j j d d k s)t ‚ | j | k s>t ‚ | j j j d k sYt ‚ | j d k snt ‚ | j	 d k sƒt ‚ | j
 d k s˜t ‚ t | j ƒ  d ƒ d k sºt ‚ t  j d d d d d d d d ƒ } | j j d k söt ‚ | j d k st ‚ | j d k s t ‚ | j	 d k s5t ‚ | j
 d k sJt ‚ | j ƒ  d sat ‚ t  j d d d | d d d d d t ƒ } | j j d d k s§t ‚ | j | k s¼t ‚ | j j j d k s×t ‚ | j d k sìt ‚ | j	 d k st ‚ | j
 d k st ‚ t | j ƒ  d ƒ d k s8t ‚ d S(   s'   test merging cells with missing widgetst   top_leftt	   top_rightt   bottom_leftt   bottom_rights   "top-left top-right"
s   "bottom-left bottom-right"s   top-lefts	   top-rights   bottom-lefts   bottom-rightt   childreni   s   "top-left bottom-right"i   s   "bottom-left top-right"
s   "top-right top-right"
s   "bottom-right bottom-right"i   s   "top-left bottom-right"
s   "top-left top-left"
s   "top-left top-left"i   s   "top-right top-right"t   mergeN(   t   widgetst   Buttont   TwoByTwoLayoutt   layoutt   grid_template_areast   AssertionErrorR   t	   grid_areaR   R   R   t   lent	   get_statet   Nonet   False(   t   selft   button1t   button2t   button3t   button4t   box(    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_merge_cells   sÔ    	"	"	"	"	"	"	"		c         C   sˆ   t  j d d ƒ } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | d | d | d | d | ƒ } | j j d k s„ t ‚ d S(	   s6   test whether layout options are passed down to GridBoxt   align_itemst   centerR   R   R   R   R   N(   R
   t   LayoutR   R   R   R   R   (   R   R   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_keep_layout_options—   s    	c         C   sØ  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | d | d | d | d d d d d	 d ƒ } | j j d k s~ t ‚ | j j d k s– t ‚ | j j d k s® t ‚ t  j d d d d d	 d ƒ } t  j d | d | d | d | d
 | ƒ } | j j d k st ‚ | j j d k s&t ‚ | j j d k s>t ‚ t  j d d d d d	 d ƒ } t  j d | d | d | d | d
 | d d ƒ } | j j d k s¤t ‚ | j j d k s¼t ‚ | j j d k sÔt ‚ d S(   sg   test whether the extra layout options of the template class are
           passed down to Layout objectR   R   R   R   t   grid_gapt   10pxt   justify_contentR   R   R   t   30pxN(	   R
   R   R   R   R    R   R"   R   R   (   R   R   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_pass_layout_options¦   s6    				s   ipywidgets.Layout.send_statec   	   	   C   sÈ  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | d | d d d | ƒ } d d l m } | j ƒ  } t | d ƒ d k sŒ t ‚ | j	 j
 d	 d
 k s¨ t ‚ t j d | ƒ | j	 j _ | j ƒ  | | _ | j ƒ  } t | d ƒ d k sþ t ‚ | j	 j
 d	 d k st ‚ | j d d ƒ t  j d | d | d d d | ƒ } | j	 j
 d	 d
 k sjt ‚ t j d | ƒ | j	 j _ | j ƒ  t | _ | j	 j
 d	 d k s´t ‚ | j d d ƒ d S(   s9   test whether it's possible to add widget outside __init__R   R   R   R   iÿÿÿÿ(   t   KernelR   i   s   "top-left top-right"
s   "top-left bottom-right"t   speci   s   "bottom-left bottom-right"t   keyR   N(   R
   R   R   R   t   ipykernel.kernelbaseR%   R   R   R   R   R   R   t	   MagicMockt   commt   kernelt
   reset_mockR   t   assert_called_once_withR   R	   (	   R   t
   send_stateR   R   R   R   R   R%   t   state(    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_update_dynamicallyÑ   s:    
	
	(	   t   __name__t
   __module__t   __doc__R   R   R$   R   t   patchR0   (    (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyR      s
   	„		+t   TestAppLayoutc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s   test layout templatesc         C   s©  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | d | d | d | d | ƒ } | j j d d d k s† t ‚ | j j j d k s¡ t ‚ | j j j d k s¼ t ‚ | j	 j j d k s× t ‚ | j
 j j d	 k sò t ‚ | j j j d
 k st ‚ t | j ƒ  d ƒ d k s/t ‚ t  j ƒ  } | j j d k sSt ‚ | j j d k skt ‚ | j j d k sƒt ‚ t | j ƒ  d ƒ d k s¥t ‚ d S(   s!   test creating with default valuest   footert   headerR   t   left_sidebart   right_sidebars   "header header header"
s$   "left-sidebar center right-sidebar"
s   "footer footer footer"s   left-sidebars   right-sidebarR   i   i    N(   R
   R   t	   AppLayoutR   R   R   R6   R   R7   R   R8   R9   R   R   R   t   grid_template_columnst   grid_template_rows(   R   R6   R7   R   R8   R9   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_create_with_defaultsý   s2    			"c         C   s	
  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | ƒ } | j j d d d k sn t ‚ | j j j d k s‰ t ‚ t | j	 ƒ  d ƒ d k s« t ‚ t  j d | ƒ } | j j d d d k sÝ t ‚ | j
 j j d	 k sø t ‚ t | j	 ƒ  d ƒ d k st ‚ t  j d
 | d | d | d | ƒ } | j j d d d k s^t ‚ | j j j d k syt ‚ | j j j d
 k s”t ‚ | j j j d k s¯t ‚ | j
 j j d	 k sÊt ‚ t | j	 ƒ  d ƒ d k sìt ‚ t  j d
 | d | d | d | ƒ } | j j d d d k s0t ‚ | j j j d k sKt ‚ | j j j d
 k sft ‚ | j j j d k st ‚ | j j j d k sœt ‚ t | j	 ƒ  d ƒ d k s¾t ‚ t  j d
 | d | d | ƒ } | j j d d d k süt ‚ | j j j d k st ‚ | j j j d
 k s2t ‚ | j j j d k sMt ‚ t | j	 ƒ  d ƒ d k sot ‚ t  j d
 | d | d d d | d | ƒ } | j j d d d k s¹t ‚ | j j j d k sÔt ‚ | j j j d
 k sït ‚ | j
 j j d	 k s
t ‚ | j j j d k s%t ‚ | j d k s:t ‚ t | j	 ƒ  d ƒ d k s\t ‚ t  j d
 | d | d d d d d | ƒ } | j j d d d k s¦t ‚ | j j j d k sÁt ‚ | j j j d
 k sÜt ‚ | j
 d k sñt ‚ | j j j d k st ‚ | j d k s!t ‚ t | j	 ƒ  d ƒ d k sCt ‚ t  j d
 | d | d d d d d d ƒ } | j j d k s…t ‚ | j j j d k s t ‚ | j j j d
 k s»t ‚ | j d k sÐt ‚ | j
 d k såt ‚ | j d k sút ‚ t | j	 ƒ  d ƒ d k st ‚ t  j d
 | d | d | d t ƒ } | j j d d d k s`t ‚ | j j j d k s{t ‚ | j j j d
 k s–t ‚ | j j j d k s±t ‚ | j
 d k sÆt ‚ | j d k sÛt ‚ t | j	 ƒ  d ƒ d k sýt ‚ t  j d | d | d | d | ƒ } | j j d d k s=t ‚ | j j j d k sXt ‚ | j
 j j d	 k sst ‚ | j j j d k sŽt ‚ | j j j d k s©t ‚ | j d k s¾t ‚ t | j	 ƒ  d ƒ d k sàt ‚ t  j d
 | d | d | d | ƒ } | j j d d k s t ‚ | j j j d k s;t ‚ | j
 j j d	 k sVt ‚ | j j j d k sqt ‚ | j j j d
 k sŒt ‚ | j d k s¡t ‚ t | j	 ƒ  d ƒ d k sÃt ‚ t  j d | d | d | ƒ } | j j d k sùt ‚ | j j j d k s	t ‚ | j
 j j d	 k s/	t ‚ | j j j d k sJ	t ‚ | j d k s_	t ‚ | j d k st	t ‚ t | j	 ƒ  d ƒ d k s–	t ‚ t  j d | ƒ } | j j d d d k sÈ	t ‚ | j j j d k sã	t ‚ t | j	 ƒ  d ƒ d k s
t ‚ d S(    s"   test if cells are correctly mergedR   s   "center center center"
s   "center center center"R   i   R8   s)   "left-sidebar left-sidebar left-sidebar"
s(   "left-sidebar left-sidebar left-sidebar"s   left-sidebarR7   R6   s   "header header header"
s   "left-sidebar center center"
s   "footer footer footer"i   R9   s   "center center right-sidebar"
s   right-sidebari   s   "header header"
s   "left-sidebar right-sidebar"
s   "footer footer"s   "right-sidebar right-sidebar"
s	   "header"
s   "footer"i   R	   s$   "left-sidebar center right-sidebar"
s#   "left-sidebar center right-sidebar"Ns   "header"
"footer"(   R
   R   R:   R   R   R   R   R   R   R   R8   R6   R7   R9   R   R   (   R   R6   R7   R   R8   R9   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_merge_empty_cells"  s<   			"			"			"			"			"			"			"			"			"		"		"		"			c         C   sº   t  j ƒ  } | j d ƒ d k s' t ‚ | j d ƒ d k sB t ‚ | j d ƒ d k s] t ‚ | j d ƒ d k sx t ‚ | j d ƒ d k s“ t ‚ t j t ƒ  | j d ƒ Wd  QXd  S(   Nt   100pxt   1frs   2.5frs   2.5s   25%s   this is not correct size(   R
   R:   t   _size_to_cssR   t   pytestt   raisest	   TypeError(   R   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_size_to_cssú  s    c         C   sÊ  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j d | d | d | d | d | ƒ } t j t j ƒ  d d d d g | _ Wd  QXt j t j ƒ  d d g | _ Wd  QXt j t j ƒ  d d d d g | _ Wd  QXt j t j ƒ  d d g | _ Wd  QX| j	 j
 d k s*t ‚ | j	 j d k sBt ‚ d	 d
 d g | _ | j	 j
 d k slt ‚ | j	 j d k s„t ‚ d d d g | _ | j	 j
 d k s®t ‚ | j	 j d k sÆt ‚ d  S(   NR7   R6   R8   R9   R   t   1fxs   1fr 3fr 1frs   1fr 2fr 1frt   3frR?   i   s   3fr 100px 20fri   i   s   3fr 3fr 1fr(   R
   R   R:   RB   RC   t	   traitletst
   TraitErrort   pane_widthst   pane_heightsR   R<   R   R;   (   R   R6   R7   R   R8   R9   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_set_pane_widths_heights  s6    		(   R1   R2   R3   R=   R>   RE   RL   (    (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyR5   ú   s
   	%	Ø	t   TestGridspecLayoutc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   test GridspecLayoutc      
   C   s=  t  j t j ƒ  t j ƒ  } Wd  QXt  j t j ƒ  t j d d d d ƒ } Wd  QXt j d d d d ƒ } | j d k sƒ t ‚ | j d k s˜ t ‚ t	 | j
 ƒ d k s³ t ‚ t	 | j
 d ƒ d k sÒ t ‚ t j d d ƒ } | j d k sù t ‚ | j d k st ‚ t  j t j ƒ  t j d d ƒ } Wd  QXd  S(	   Nt   n_rowsiÿÿÿÿt	   n_columnsi   i   i   i    i   (   RB   RC   RH   RI   R
   t   GridspecLayoutRN   R   RO   R   t   _grid_template_areas(   R   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt	   test_init/  s    c   
      C   s  t  j d d ƒ } t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } | | d <| j j } | | j k sm t ‚ | j j d j | ƒ k sŽ t ‚ | | d <| j j } | | k s¶ t ‚ | | j k sË t ‚ | j j d j | | ƒ k sï t ‚ | | d <| j j } | | k st ‚ | | k s)t ‚ | | j k s>t ‚ | j j d j d	 | d
 | d | ƒ k snt ‚ | | d <| j j }	 | |	 k s–t ‚ | |	 k s¨t ‚ | | j k s½t ‚ | | j k sÒt ‚ | j j d j d	 | d
 | d |	 ƒ k st ‚ d  S(   Ni   i   i    s   "{} . ."
". . ."iÿÿÿÿs   "{} . ."
". . {}"i   s   "{b1} . ."
"{b3} . {b2}"t   b1t   b2t   b3s   "{b1} . ."
"{b4} . {b2}"t   b4(   i    i    (   iÿÿÿÿiÿÿÿÿ(   i   i    (   i   i    (	   R
   RP   R   R   R   R   R   R   t   format(
   R   R   R   R   R   R   t   button1_labelt   button2_labelt   button3_labelt   button4_label(    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_setitem_indexC  s@    
!


c         C   sº  t  j d d ƒ } t  j ƒ  } | | d  d … d f <t | j ƒ d k sO t ‚ | | j k sd t ‚ | j j } | j j d j	 d | ƒ k s” t ‚ t  j d d ƒ } t  j ƒ  } t  j ƒ  } | | d  d … d d  … f <t | j ƒ d k sõ t ‚ | | j k s
t ‚ | j j } | j j d j	 d | ƒ k s:t ‚ | | d  d … d d  … f <t | j ƒ d k sqt ‚ | | j k s†t ‚ | j j } | j j d j	 d | ƒ k s¶t ‚ d  S(   Ni   i   i    i   s   "{b1} . ."
"{b1} . ."RS   s   ". {b1} {b1}"
". {b1} {b1}"(
   R
   RP   R   R   R   R   R   R   R   RW   (   R   R   R   RX   R   RY   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_setitem_slicesl  s(    $$c         C   sB   t  j d d ƒ } t  j ƒ  } | | d <| d | k s> t ‚ d S(   s   test retrieving widgeti   i   i    N(   i    i    (   i    i    (   R
   RP   R   R   (   R   R   R   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_getitem_index‹  s    
c         C   sö   t  j d d ƒ } t  j ƒ  } | | d d … d f <| d d … d f | k sV t ‚ t  j d d ƒ } t  j ƒ  } t  j ƒ  } | | d <| | d	 <| d
 | k sª t ‚ | d | k sÀ t ‚ t j t d d ƒ | d d … d f } Wd QXd S(   s#   test retrieving widgets with slicesi   i   Ni    i   t   matchs   The slice spans(   i    i    (   i   i    (   i    i    (   i   i    (   R
   RP   R   R   RB   RC   RD   (   R   R   R   R   t   button(    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_getitem_slices•  s    "

(   R1   R2   R3   RR   R\   R]   R^   Ra   (    (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyRM   ,  s   		)		
t   TestLayoutPropertiesc           B   sE   e  Z d  Z d e j e f d „  ƒ  YZ d „  Z d „  Z d „  Z	 RS(   s!   test mixin with layout propertiest   DummyTemplatec           B   s    e  Z e j e j d  e ƒZ RS(   t
   allow_none(   R1   R2   RH   t   InstanceR
   t   Widgett   Truet   location(    (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyRc   ®  s   c         C   sy   |  j  d d ƒ } | j d k s' t ‚ | j j d k s? t ‚ d | _ | j d k s] t ‚ | j j d k su t ‚ d S(   sD   test whether respective layout traits are updated when traits changet   widths   100%t   autoN(   Rc   Ri   R   R   (   R   t   template(    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt#   test_layout_updated_on_trait_change±  s    	c         C   sy   |  j  d d ƒ } | j d k s' t ‚ | j j d k s? t ‚ d | _ | j d k s] t ‚ | j j d k su t ‚ d  S(   NR   t   tops
   flex-startt   bottoms   flex-end(   Rc   R   R   R   (   R   Rk   (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_align_items_extra_options¼  s    	c         C   sg   |  j  ƒ  } x2 t j j D]$ } | | _ | j | k s t ‚ q Wt j t j ƒ  d | _ Wd  QXd  S(   Ns   any default position(	   Rc   R   R   t   valuesR   RB   RC   RH   RI   (   R   t   prop_objt   prop(    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   test_validate_propertiesÆ  s    	(
   R1   R2   R3   R
   t   GridBoxR   Rc   Rl   Ro   Rs   (    (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyRb   «  s
   		
(   R3   t   unittestR    R   t   ImportErrorRB   RH   t
   ipywidgetsR
   t#   ipywidgets.widgets.widget_templatesR   R   R5   RM   Rb   (    (    (    sM   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_templates.pyt   <module>   s   êÿ 3