ó
0¾I]c           @   s   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z m Z d  d l m	 Z	 d e f d „  ƒ  YZ
 d „  Z d	 „  Z d
 „  Z d „  Z d S(   iÿÿÿÿN(   t   TestCase(   t   contextmanager(   t   Markdownt   Image(   t   widget_outputt   TestOutputWidgetc           B   sV   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   c         c   sG   t  j } t  j } | t  _ | t  _ z	 d VWd | t  _ | t  _ Xd S(   sA    Context manager that monkeypatches get_ipython and clear_output N(   R   t   clear_outputt   get_ipython(   t   selfR   R   t   original_clear_outputt   original_get_ipython(    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   _mocked_ipython   s    						c         C   sZ   t  d t f i i i | d 6d 6d 6ƒ } d „  } t  d t f i | d 6| d 6ƒ } | S(	   s9    Returns a mock IPython application with a mocked kernel t   mock_kernelt   msg_idt   headert   _parent_headerc         _   s   | \ } } } | | ƒ ‚ d  S(   N(    (   t   self_t	   exc_tuplet   argst   kwargst   etypet   evaluet   tb(    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   showtraceback"   s    t   mock_ipythont   kernelR   (   t   typet   object(   R   R   R   R   t   ipython(    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   _mock_get_ipython   s    	c            s"   g  ‰  ‡  f d †  } ˆ  | _  | S(   s(    Mock function that records calls to it c             s   ˆ  j  |  | f ƒ d  S(   N(   t   append(   R   R   (   t   calls(    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyR   1   s    (   R   (   R   R   (    (   R   sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   _mock_clear_output-   s    	c      
   C   s–   d } |  j  | ƒ } |  j ƒ  } |  j | | ƒ ] t j ƒ  } | j d k sU t ‚ |  | j | k sq t ‚ Wd  QX| j d k sŒ t ‚ Wd  QXd  S(   Ns   msg-idt    (   R   R    R   R   t   OutputR   t   AssertionError(   R   R   R   R   t   widget(    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   test_set_msg_id_when_capturing7   s    c         C   s›   d } |  j  | ƒ } |  j ƒ  } |  j | | ƒ ! t j ƒ  } | j d t ƒ Wd  QXt | j ƒ d k sq t	 ‚ | j d d i t d 6f k s— t	 ‚ d  S(   Ns   msg-idt   waiti   i    (    (
   R   R    R   R   R"   R   t   Truet   lenR   R#   (   R   R   R   R   R$   (    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   test_clear_outputC   s    c            s  d ‰ |  j  ˆ ƒ } |  j ƒ  } d } t } g  ‰  |  j | | ƒ s t j ƒ  ‰ ˆ j d k sg t ‚ ˆ j ƒ  ‡  ‡ ‡ f d †  ƒ } | | d | ƒˆ j d k s­ t ‚ | ƒ  Wd  QXt	 ˆ  ƒ d k sÒ t ‚ ˆ  d | f i | d 6f k sø t ‚ ˆ  d d	 i  f k st ‚ d  S(
   Ns   msg-idt   argR!   c             s,   ˆ j  ˆ k s t ‚ ˆ  j |  | f ƒ d  S(   N(   R   R#   R   (   R   R   (   t   captee_callsR   R$   (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   captee[   s    t   keyword_argumenti   i    i   (    (
   R   R    R'   R   R   R"   R   R#   t   captureR(   (   R   R   R   t   expected_argumentt   expected_keyword_argumentR,   (    (   R+   R   R$   sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   test_capture_decoratorO   s&    !c      	      sÚ   d ‰  |  j  ˆ  ƒ } |  j ƒ  } |  j | | ƒ I t j ƒ  ‰ ˆ j d t d t ƒ ‡  ‡ f d †  ƒ } | ƒ  | ƒ  Wd  QXt | j ƒ d k s™ t	 ‚ | j d | j d k oË d i t d 6f k n sÖ t	 ‚ d  S(	   Ns   msg-idR   R&   c             s   ˆ j  ˆ  k s t ‚ d  S(   N(   R   R#   (   R   R   (   R   R$   (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyR,   w   s    i   i    i   (    (
   R   R    R   R   R"   R.   R'   R(   R   R#   (   R   R   R   R,   (    (   R   R$   sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt#   test_capture_decorator_clear_outputo   s    *c            s—   d ‰  |  j  ˆ  ƒ } |  j ƒ  } |  j | | ƒ C t j ƒ  ‰ ˆ j d t ƒ ‡  ‡ f d †  ƒ } | ƒ  | ƒ  Wd  QXt | j ƒ d k s“ t	 ‚ d  S(   Ns   msg-idR   c             s   ˆ j  ˆ  k s t ‚ d  S(   N(   R   R#   (   R   R   (   R   R$   (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyR,   ‹   s    i    (
   R   R    R   R   R"   R.   t   FalseR(   R   R#   (   R   R   R   R,   (    (   R   R$   sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt&   test_capture_decorator_no_clear_outputƒ   s    $(   t   __name__t
   __module__R   R   R   R    R%   R)   R1   R2   R4   (    (    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyR   	   s   		
			 	c         C   s   i d d 6| d 6|  d 6S(   Nt   streamt   output_typet   namet   text(    (   R:   R9   (    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   _make_stream_output–   s    c          C   sš   t  j ƒ  }  |  j d ƒ t d d ƒ f } |  j | k sO t t |  j ƒ ƒ ‚ |  j d ƒ | t d d ƒ f 7} |  j | k s– t t |  j ƒ ƒ ‚ d  S(   Ns   snakes!t   stdouts   more snakes!(   R   R"   t   append_stdoutR;   t   outputsR#   t   repr(   R$   t   expected(    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   test_append_stdoutž   s    $c          C   sš   t  j ƒ  }  |  j d ƒ t d d ƒ f } |  j | k sO t t |  j ƒ ƒ ‚ |  j d ƒ | t d d ƒ f 7} |  j | k s– t t |  j ƒ ƒ ‚ d  S(   Ns   snakes!t   stderrs   more snakes!(   R   R"   t   append_stderrR;   R>   R#   R?   (   R$   R@   (    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   test_append_stderr¬   s    $c          C   s   t  j ƒ  }  |  j t d ƒ ƒ i d d 6i d d 6d d 6d 6i  d 6f } |  j | k so t t |  j ƒ ƒ ‚ d	 } t j d
 d k  rŽ | n d } |  j t	 | d d d d ƒƒ | i d d 6i | d 6d d 6d 6i i d d 6d d 6d 6d 6f 7} |  j | k st t |  j ƒ ƒ ‚ d  S(   Ns	   # snakes!t   display_dataR8   s&   <IPython.core.display.Markdown object>s
   text/plains   text/markdownt   datat   metadatat   foobari    i   s	   Zm9vYmFy
t   widthi{   t   heightiÈ  s	   image/pngs#   <IPython.core.display.Image object>(
   R   R"   t   append_display_dataR   R>   R#   R?   t   syst   version_infoR   (   R$   R@   t
   image_datat   image_data_b64(    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   test_append_display_dataº   s.    $(   RL   t   unittestR    t
   contextlibR   t   IPython.displayR   R   t
   ipywidgetsR   R   R;   RA   RD   RP   (    (    (    sJ   lib/python2.7/site-packages/ipywidgets/widgets/tests/test_widget_output.pyt   <module>   s   			