B
    @\(                 @   s  d dl mZmZmZmZ d dlZe d dlmZmZm	Z	 d dl
mZ edd e  D Zedd e  D ZG dd	 d	e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&d' Z!d(d) Z"d*d+ Z#d,d- Z$d.d/ Z%d0d1 Z&d2d3 Z'd4d5 Z(d6d7 Z)d8d9 Z*d:d; Z+d<d= Z,d>d? Z-d@dA Z.dBdC Z/dDdE Z0dFdG Z1dHdI Z2dJdK Z3dS )L    )absolute_importdivisionprint_functionunicode_literalsN)PlotButtonDiv)eventsc             C   s0   g | ](}t |trt|tjr|jd k	r|qS )N)
isinstancetype
issubclassr	   Event
event_name).0v r   6lib/python3.7/site-packages/bokeh/tests/test_events.py
<listcomp>!   s    r   c             C   s&   g | ]}t |trt|tjr|qS r   )r
   r   r   r	   
PointEvent)r   r   r   r   r   r   $   s    c               @   s    e Zd Zg fddZdd ZdS )EventCallbackc             C   s   d | _ || _i | _d S )N)r   
attributespayload)selfr   r   r   r   __init__,   s    zEventCallback.__init__c                s"    j | _  fdd| jD | _d S )Nc                s   i | ]}t  ||qS r   )getattr)r   attr)eventr   r   
<dictcomp>3   s    z*EventCallback.__call__.<locals>.<dictcomp>)r   r   r   )r   r   r   )r   r   __call__1   s    zEventCallback.__call__N)__name__
__module____qualname__r   r   r   r   r   r   r   +   s   r   c               C   s"   t tttj  dkstd S )Nr   )lenconcrete_eventssetr	   _CONCRETE_EVENT_CLASSESvaluesAssertionErrorr   r   r   r   test_event_metaclass6   s    r(   c              C   sL   xFt j D ]8\} }| d krqt j|jddid}|jdkstqW d S )Nmodel_idztest-model-id)r   event_values)r	   r%   itemsr   decode_jsonr   	_model_idr'   )r   	event_clsr   r   r   r   test_common_decode_json:   s     
r/   c              C   s   t dddddd} xvtD ]n}|jd kr(qtj|j|  d}|jdksNt|j	dks\t|j
dksjt|jdksxt|jdkstqW d S )Nztest-model-id   
   d   )r)   sxsyxy)r   r*   )dictpoint_eventsr   r	   r   r,   copyr4   r'   r5   r6   r7   r-   )r*   r.   r   r   r   r   $test_pointevent_subclass_decode_jsonB   s    

 
r;   c           	   C   s   t dddddddd} tjtjj|  d	}|jdks>t|j	dksLt|j
dksZt|jdksht|jdksvt|jdkst|jdkstd S )
Nztest-model-idg?g333333?r0   r1   r2   r3   )r)   delta_xdelta_yr4   r5   r6   r7   )r   r*   )r8   r	   r   r,   Panr   r:   r<   r'   r=   r4   r5   r6   r7   r-   )r*   r   r   r   r   test_panevent_decode_jsonN   s    r?   c              C   s   t ddddddd} tjtjj|  d}|jdks<t|j	dksJt|j
dksXt|jdksft|jdkstt|jdkstd S )	Nztest-model-idgr0   r1   r2   r3   )r)   deltar4   r5   r6   r7   )r   r*   )r8   r	   r   r,   
MouseWheelr   r:   r@   r'   r4   r5   r6   r7   r-   )r*   r   r   r   r    test_mousewheelevent_decode_json[   s    rB   c              C   s   t ddddddd} tjtjj|  d}|jdks<t|j	dksJt|j
dksXt|jdksft|jdkstt|jdkstd S )	Nztest-model-id*   r0   r1   r2   r3   )r)   scaler4   r5   r6   r7   )r   r*   )r8   r	   r   r,   Pinchr   r:   rD   r'   r4   r5   r6   r7   r-   )r*   r   r   r   r   test_pinchevent_decode_jsonf   s    rF   c              C   s$   t  } t| }|j| jks td S )N)r   r	   r   r-   idr'   )modelr   r   r   r   test_event_constructor_buttonq   s    
rI   c              C   s$   t  } t| }|j| jks td S )N)r   r	   r   r-   rG   r'   )rH   r   r   r   r   test_event_constructor_divv   s    
rJ   c              C   s$   t  } t| }|j| jks td S )N)r   r	   r   r-   rG   r'   )rH   r   r   r   r   test_event_constructor_plot{   s    
rK   c              C   s$   t  } t| }|j| jks td S )N)r   r	   ButtonClickr-   rG   r'   )rH   r   r   r   r   #test_buttonclick_constructor_button   s    
rM   c            	   C   s&   t t tt  W d Q R X d S )N)pytestraises
ValueErrorr	   rL   r   r   r   r   r    test_buttonclick_constructor_div   s    rQ   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   rL   r   r   r   r   r   !test_buttonclick_constructor_plot   s    rR   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   LODStartr   r   r   r   r    test_lodstart_constructor_button   s    rT   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   rS   r   r   r   r   r   test_lodstart_constructor_div   s    rU   c              C   s$   t  } t| }|j| jks td S )N)r   r	   rS   r-   rG   r'   )rH   r   r   r   r   test_lodstart_constructor_plot   s    
rV   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   LODEndr   r   r   r   r   test_lodend_constructor_button   s    rX   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   rW   r   r   r   r   r   test_lodend_constructor_div   s    rY   c              C   s$   t  } t| }|j| jks td S )N)r   r	   rW   r-   rG   r'   )rH   r   r   r   r   test_lodend_constructor_plot   s    
rZ   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   	PlotEventr   r   r   r   r   !test_plotevent_constructor_button   s    r\   c            	   C   s&   t t tt  W d Q R X d S )N)rN   rO   rP   r	   r[   r   r   r   r   r   test_plotevent_constructor_div   s    r]   c              C   s$   t  } t| }|j| jks td S )N)r   r	   r[   r-   rG   r'   )rH   r   r   r   r   test_plotevent_constructor_plot   s    
r^   c              C   sf   t  } tj| ddddd}|jdks(t|jdks6t|jdksDt|jdksRt|j| j	ksbtd S )Nr0   r1   r2   r3   )r4   r5   r6   r7   )
r   r	   r   r4   r'   r5   r6   r7   r-   rG   )rH   r   r   r   r    test_pointEvent_constructor_plot   s    r_   c            	   C   s0   t t tjt ddddd W d Q R X d S )Nr0   r1   r2   r3   )r4   r5   r6   r7   )rN   rO   rP   r	   r   r   r   r   r   r   "test_pointevent_constructor_button   s    r`   c            	   C   s0   t t tjt ddddd W d Q R X d S )Nr0   r1   r2   r3   )r4   r5   r6   r7   )rN   rO   rP   r	   r   r   r   r   r   r   test_pointevent_constructor_div   s    ra   c              C   sr   t  } xftD ]^}|| ddddd}|jdks0t|jdks>t|jdksLt|jdksZt|j| jkstqW d S )Nr0   r1   r2   r3   )r4   r5   r6   r7   )	r   r9   r4   r'   r5   r6   r7   r-   rG   )rH   subclsr   r   r   r   )test_pointevent_subclass_constructor_plot   s    
rc   c           
   C   s@   t  } x4tD ],}tt || ddddd W d Q R X qW d S )Nr0   r1   r2   r3   )r4   r5   r6   r7   )r   r9   rN   rO   rP   )rH   rb   r   r   r   +test_pointevent_subclass_constructor_button   s    
rd   c           
   C   s@   t  } x4tD ],}tt || ddddd W d Q R X qW d S )Nr0   r1   r2   r3   )r4   r5   r6   r7   )r   r9   rN   rO   rP   )rH   rb   r   r   r   (test_pointevent_subclass_constructor_div   s    
re   c              C   sN   t  } t }| tj| |jd ks(t| t|  |jtjjksJtd S )N)r   r   on_eventr	   rL   r   r'   _trigger_event)Zbuttontest_callbackr   r   r    test_buttonclick_event_callbacks   s    ri   c              C   s^   t  } xRtjtjgD ]B}t }| || |jd ks8t| ||  |j|jkstqW d S )N)	r   r	   rS   rW   r   rf   r   r'   rg   )plotr.   rh   r   r   r    test_atomic_plot_event_callbacks   s    rk   c              C   s   t  } tddddd}xftD ]^}tdddd	g}| || |jd ksJt| || f| |j|jkslt|j|kstqW d S )
Nr0   r1   r2   r3   )r4   r5   r6   r7   r4   r5   r6   r7   )	r   r8   r9   r   rf   r   r'   rg   r   )rj   r   r.   rh   r   r   r   test_pointevent_callbacks   s    
rl   c              C   s~   t  } tdddddd}tddd	d
dg}| tj| |jd ksFt| tj| f| |jtjjkslt|j	|ksztd S )Nr0   r1   r2   r3      )r4   r5   r6   r7   r@   r4   r5   r6   r7   r@   )
r   r8   r   rf   r	   rA   r   r'   rg   r   )rj   r   rh   r   r   r   test_mousewheel_callbacks   s    rn   c              C   s   t  } tddddddd}tdd	d
dddg}| tj| |jd ksJt| tj| f| |jtjjkspt|j	|ks~td S )Nr0   r1   r2   r3      g	@)r4   r5   r6   r7   r<   r=   r4   r5   r6   r7   r<   r=   )
r   r8   r   rf   r	   r>   r   r'   rg   r   )rj   r   rh   r   r   r   test_pan_callbacks  s    rp   c              C   s~   t  } tdddddd}tddd	d
dg}| tj| |jd ksFt| tj| f| |jtjjkslt|j	|ksztd S )Nr0   r1   r2   r3   rC   )r4   r5   r6   r7   rD   r4   r5   r6   r7   rD   )
r   r8   r   rf   r	   rE   r   r'   rg   r   )rj   r   rh   r   r   r   test_pinch_callbacks  s    rq   )4Z
__future__r   r   r   r   rN   Zbokeh.modelsr   r   r   Zbokehr	   r$   globalsr&   r#   r9   objectr   r(   r/   r;   r?   rB   rF   rI   rJ   rK   rM   rQ   rR   rT   rU   rV   rX   rY   rZ   r\   r]   r^   r_   r`   ra   rc   rd   re   ri   rk   rl   rn   rp   rq   r   r   r   r   <module>   sP    	



