From 875ebee7d64ef437d3f0edf70d24fd251ec7b87d Mon Sep 17 00:00:00 2001
From: Philipp Rudiger
Date: Tue, 4 Apr 2017 13:16:17 +0100
Subject: [PATCH] Added tests for bokeh plotting utils
---
tests/testbokehutils.py | 85 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 tests/testbokehutils.py
diff --git a/tests/testbokehutils.py b/tests/testbokehutils.py
new file mode 100644
index 0000000000..80defe3049
--- /dev/null
+++ b/tests/testbokehutils.py
@@ -0,0 +1,85 @@
+from collections import defaultdict
+from unittest import SkipTest
+
+import numpy as np
+
+from holoviews.core import Store
+from holoviews.element.comparison import ComparisonTestCase
+from holoviews.element import Curve, Points, Path
+
+try:
+ from holoviews.plotting.bokeh.util import (
+ bokeh_version, expand_batched_style, filter_batched_data
+ )
+ bokeh_renderer = Store.renderers['bokeh']
+except:
+ bokeh_renderer = None
+
+
+class TestBokehUtilsInstantiation(ComparisonTestCase):
+
+ def setUp(self):
+ if not bokeh_renderer:
+ raise SkipTest("Bokeh required to test plot instantiation")
+
+ def test_expand_style_opts_simple(self):
+ style = {'line_width': 3}
+ opts = ['line_width']
+ data, mapping = expand_batched_style(style, opts, {}, nvals=3)
+ self.assertEqual(data['line_width'], [3, 3, 3])
+ self.assertEqual(mapping, {'line_width': {'field': 'line_width'}})
+
+ def test_expand_style_opts_multiple(self):
+ style = {'line_color': 'red', 'line_width': 4}
+ opts = ['line_color', 'line_width']
+ data, mapping = expand_batched_style(style, opts, {}, nvals=3)
+ self.assertEqual(data['line_color'], ['red', 'red', 'red'])
+ self.assertEqual(data['line_width'], [4, 4, 4])
+ self.assertEqual(mapping, {'line_color': {'field': 'line_color'},
+ 'line_width': {'field': 'line_width'}})
+
+ def test_expand_style_opts_line_color_and_color(self):
+ style = {'fill_color': 'red', 'color': 'blue'}
+ opts = ['color', 'line_color', 'fill_color']
+ data, mapping = expand_batched_style(style, opts, {}, nvals=3)
+ self.assertEqual(data['line_color'], ['blue', 'blue', 'blue'])
+ self.assertEqual(data['fill_color'], ['red', 'red', 'red'])
+ self.assertEqual(mapping, {'line_color': {'field': 'line_color'},
+ 'fill_color': {'field': 'fill_color'}})
+
+ def test_expand_style_opts_line_alpha_and_alpha(self):
+ style = {'fill_alpha': 0.5, 'alpha': 0.2}
+ opts = ['alpha', 'line_alpha', 'fill_alpha']
+ data, mapping = expand_batched_style(style, opts, {}, nvals=3)
+ self.assertEqual(data['line_alpha'], [0.2, 0.2, 0.2])
+ self.assertEqual(data['fill_alpha'], [0.5, 0.5, 0.5])
+ self.assertEqual(mapping, {'line_alpha': {'field': 'line_alpha'},
+ 'fill_alpha': {'field': 'fill_alpha'}})
+
+ def test_expand_style_opts_color_predefined(self):
+ style = {'fill_color': 'red'}
+ opts = ['color', 'line_color', 'fill_color']
+ data, mapping = expand_batched_style(style, opts, {'color': 'color'}, nvals=3)
+ self.assertEqual(data['fill_color'], ['red', 'red', 'red'])
+ self.assertEqual(mapping, {'fill_color': {'field': 'fill_color'}})
+
+ def test_filter_batched_data(self):
+ data = {'line_color': ['red', 'red', 'red']}
+ mapping = {'line_color': 'line_color'}
+ filter_batched_data(data, mapping)
+ self.assertEqual(data, {})
+ self.assertEqual(mapping, {'line_color': 'red'})
+
+ def test_filter_batched_data_as_field(self):
+ data = {'line_color': ['red', 'red', 'red']}
+ mapping = {'line_color': {'field': 'line_color'}}
+ filter_batched_data(data, mapping)
+ self.assertEqual(data, {})
+ self.assertEqual(mapping, {'line_color': 'red'})
+
+ def test_filter_batched_data_heterogeneous(self):
+ data = {'line_color': ['red', 'red', 'blue']}
+ mapping = {'line_color': {'field': 'line_color'}}
+ filter_batched_data(data, mapping)
+ self.assertEqual(data, {'line_color': ['red', 'red', 'blue']})
+ self.assertEqual(mapping, {'line_color': {'field': 'line_color'}})