B
    Y                 @   s   d Z ddlmZ ddlZddlmZ ddlZddlZddl	m
Z
mZ ddlmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZ G d	d
 d
ejZdd Zdd Z dd Z!dd Z"dd Z#dS )z-This is the Bokeh charts testing interface.

    )absolute_importN)patch)Chartdefaults)ColumnDataSourceGridGlyphRenderer
LinearAxisRange1dTicker)FactorRange)BoxZoomToolHelpToolLassoSelectToolPanToolSaveTool	ResetToolWheelZoomToolc               @   sn   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dZdd Zeddd ZdS )	TestChartc             C   sT   t  | _t | _t | _t | _| jgd | _tddddddddd	d	d	d
d| _	d S )N   titlexlabelylabeltop_leftlineari   iX  TF)r   r   r   legendxscaleyscalewidthheighttoolsZ
responsivexgridygrid)
r   sourcer
   ZxdrZydrr   ZglyphZ_groupsr   chart)self r&   8lib/python3.7/site-packages/bkcharts/tests/test_chart.pysetUp%   s    zTestChart.setUpc             C   s    d| j j_| | j jjd d S )NZ	new_title)r$   r   textassertEqual)r%   r&   r&   r'   
test_title3   s    
zTestChart.test_titlec             C   s   |  | jjd d S )NZscale_width)r*   r$   Zsizing_mode)r%   r&   r&   r'   test_sizing_mode7   s    zTestChart.test_sizing_modec             C   s   |  | jjd t |  | jjd t |  | jjd t |  | jjd t |  | jjd t |  | jjd t x(t|D ]\}}|  | jj| | qW d S )Nr         r   )	assertIsInstancer$   leftr	   Z	renderersbelowr   	enumerater    )r%   expected_toolsiZtype_r&   r&   r'   check_chart_elements:   s    zTestChart.check_chart_elementsc             C   s$   |  | jjd |  | jjd dS )z*Test ranges are not created buy the chart.N)r*   r$   x_rangeZy_range)r%   r&   r&   r'   test_rangesD   s    zTestChart.test_rangesc          	   C   s,   t t | jdddd W d Q R X d S )Nxr0   datetimefoo)pytestraises
ValueErrorr$   	make_axis)r%   r&   r&   r'   test_axis_requires_rangeI   s    z"TestChart.test_axis_requires_rangec             C   s   | j dt  | j dddd}| |jd | j dddd}| |jd | |jtjd  | j dddd	}| |jd	 d S )
Nr8   r0   r9   r:   categoricalbar   r   Zfoobar)	r$   
add_rangesr
   r>   r*   Z
axis_labelZmajor_label_orientationnpZpi)r%   axisr&   r&   r'   test_make_axisO   s    zTestChart.test_make_axisc             C   sR   | j dt  | j dddd}| j d|j}| |jd | |jt	 d S )Nr8   r0   r9   r:   r   )
r$   rC   r
   r>   Z	make_gridZtickerr*   Z	dimensionr/   r   )r%   rE   Zgridr&   r&   r'   test_make_grid]   s
    zTestChart.test_make_gridFc             C   s6   x0|D ](\}}||d< t f |}| |j| qW d S )Nr    )r   compare_toolsr    )r%   	base_args	scenariosr@   r    r3   r$   r&   r&   r'   check_tools_scenariod   s    
zTestChart.check_tools_scenarioc             C   s>   |  t|t| x$t|D ]\}}| || | qW d S )N)r*   lenr2   r/   )r%   r    r3   r4   Z_typer&   r&   r'   rH   j   s    zTestChart.compare_toolsz$bokeh.plotting.helpers.warnings.warnc             C   s   t ddddddddddd	
}ttttttgg ttttgg}tdd
dg|}| 	|| | j	||dd d}tttttg}|
  d|d< tf |}t |_| |j| || d S )Nr   r   r   r   r   Ti   iX  )
r   r   r   r   r   r   r!   r"   r   r   Fzpan,box_zoom,reset,lasso_select)r@   z"LassoSelectTool are being repeatedz,pan,box_zoom,reset,lasso_select,lasso_selectr    )dictr   r   r   r   r   r   r   ziprK   Z
reset_mockr   r   r6   rH   r    Zassert_any_call)r%   Z	mock_warnrI   ZexpectedrJ   Z
msg_repeatr3   r$   r&   r&   r'   test_chart_tools_linearo   s&    


z!TestChart.test_chart_tools_linearN)F)__name__
__module____qualname__r(   r+   r,   r5   r7   r?   rF   rG   rK   rH   r   rO   r&   r&   r&   r'   r   $   s   

r   c              C   s   t ddd} | jdkstd S )NZ1234r   )idr   )r   Z_idAssertionError)r$   r&   r&   r'   test_chart_id   s    rU   c              C   s   t  } dt_dt_dt_t  }t  }| jdks2t|j|j  krJdksPn t| jdks^t|j|j  krvdks|n t| jst|j|j  krg ksn td S )Ni  FiX  )r   r   Zplot_heightZ
plot_widthr    rT   )Zc1Zc2Zc3r&   r&   r'   test_defaults   s    
rV   c             C   s   t dd t| dkstd S )Nr   )r   r   )r   rL   rT   )Zrecwarnr&   r&   r'   test_title_kwarg_no_warning   s    
rW   c           	   C   s6   ddl m}  |  }tt t| W d Q R X d S )Nr   )figure)Zbokeh.plottingrX   r;   r<   r=   r   Zapply)rX   pr&   r&   r'   test_charts_theme_validation   s    rZ   c              C   s   ddl m}  tddgddgd}| |dd	}|jd j tdgdgd}| |dd
d}|jd jsfttdgdgd}| |dd	}|jd jrtd S )Nr   )Barr:   rA   r   r.   )typescountsr]   )valuesr\   )r^   Zlabel)bkchartsr[   rM   r1   ZvisiblerT   )r[   ZdfrY   r&   r&   r'   test_bar_chart_below_visibility   s    r`   )$__doc__Z
__future__r   ZunittestZmockr   r;   ZnumpyrD   r_   r   r   Zbokeh.modelsr   r   r   r	   r
   r   Zbokeh.models.rangesr   Zbokeh.models.toolsr   r   r   r   r   r   r   ZTestCaser   rU   rV   rW   rZ   r`   r&   r&   r&   r'   <module>   s    $l