"""This is the Bokeh charts testing interface. """ #----------------------------------------------------------------------------- # Copyright (c) 2012 - 2014, Continuum Analytics, Inc. All rights reserved. # # Powered by the Bokeh Development Team. # # The full license is in the file LICENSE.txt, distributed with this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Imports #----------------------------------------------------------------------------- from __future__ import absolute_import from bkcharts.utils import (build_wedge_source, build_wedge_text_source, label_from_index_dict, comp_glyphs_to_df) from bkcharts.glyphs import BarGlyph import pytest from bokeh.models.sources import ColumnDataSource #----------------------------------------------------------------------------- # Classes and functions #----------------------------------------------------------------------------- @pytest.fixture def polar_cats(test_data): cat_cols = ['cyl', 'origin'] return build_wedge_source(test_data.auto_data, cat_cols, 'displ', 'mean') def test_ordered_set(): pass def test_collect_attribute_columns(): pass def test_df_from_json(): pass def test_title_from_columns(): pass def test_cat_to_polor(test_data, polar_cats): """Check known example for how many rows should exist based on columns.""" # we expect back start and end angles for each group level level_0 = len(test_data.auto_data[['cyl']].drop_duplicates()) level_1 = len(test_data.auto_data[['cyl', 'origin']].drop_duplicates()) num_groups = level_0 + level_1 assert len(polar_cats) == num_groups def test_create_wedge_text(polar_cats): """Check for type of output and columns in output for wedge text source.""" text_data = build_wedge_text_source(polar_cats) assert isinstance(text_data, ColumnDataSource) assert all(col in text_data.column_names for col in ['x', 'y', 'text', 'text_angle']) is True def test_chart_index_label(): str_label = 'custom label' dict_label = {'col1': 5, 'col2': 8} # custom label is just returned because it is already a label label = label_from_index_dict(str_label) assert str_label == label # tuple label label = label_from_index_dict(dict_label) assert label == (5, 8) or label == (8, 5) # named column label label = label_from_index_dict(dict_label, include_cols=True) assert label == 'col1=5, col2=8' or label == 'col2=8, col1=5' # no label because data not grouped label = label_from_index_dict(None) assert label == 'None' def test_comp_glyph_to_df(): bar1 = BarGlyph('foo', 1) bar2 = BarGlyph('bar', 5) # one row per bar df = comp_glyphs_to_df(bar1, bar2) assert len(df.index) == 2 assert 'chart_index' in df.columns