def test_PropertyValueColumnData__patch_with_overlapping_slice_indices(mock_notify): from bokeh.document.events import ColumnsPatchedEvent source = ColumnDataSource(data=dict(foo=[10, 20, 30, 40, 50])) pvcd = pc.PropertyValueColumnData(source.data) mock_notify.reset_mock() pvcd._patch("doc", source, dict(foo=[(slice(2), [1,2]), (slice(1,3), [1000,2000])]), setter='setter') assert mock_notify.call_count == 1 assert mock_notify.call_args[0] == ({'foo': [1, 1000, 2000, 40, 50]},) assert pvcd == dict(foo=[1, 1000, 2000, 40, 50]) assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnsPatchedEvent) assert mock_notify.call_args[1]['hint'].setter == 'setter'
def test_PropertyValueColumnData__patch_with_simple_indices(mock_notify): from bokeh.document.events import ColumnsPatchedEvent source = ColumnDataSource(data=dict(foo=[10, 20])) pvcd = pc.PropertyValueColumnData(source.data) mock_notify.reset() pvcd._patch("doc", source, dict(foo=[(1, 40)]), setter='setter') assert mock_notify.called_once assert mock_notify.call_args[0] == ({'foo': [10, 40]}, ) assert pvcd == dict(foo=[10, 40]) assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnsPatchedEvent) assert mock_notify.call_args[1]['hint'].setter == 'setter'
def test_PropertyValueColumnData__stream_list_with_rollover(mock_notify): from bokeh.document.events import ColumnsStreamedEvent source = ColumnDataSource(data=dict(foo=[10, 20, 30])) pvcd = pc.PropertyValueColumnData(source.data) mock_notify.reset_mock() pvcd._stream("doc", source, dict(foo=[40]), rollover=3, setter="setter") assert mock_notify.call_count == 1 assert mock_notify.call_args[0] == ({'foo': [20, 30, 40]},) # streaming to list, "old" is actually updated value assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnsStreamedEvent) assert mock_notify.call_args[1]['hint'].setter == 'setter' assert mock_notify.call_args[1]['hint'].rollover == 3
def test_PropertyValueColumnData__stream_list(mock_notify): from bokeh.document.events import ColumnsStreamedEvent source = ColumnDataSource(data=dict(foo=[10])) pvcd = pc.PropertyValueColumnData(source.data) mock_notify.reset() pvcd._stream("doc", source, dict(foo=[20]), setter="setter") assert mock_notify.called_once assert mock_notify.call_args[0] == ({'foo': [10, 20]}, ) assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnsStreamedEvent) assert mock_notify.call_args[1]['hint'].setter == 'setter' assert mock_notify.call_args[1]['hint'].rollover == None
def test_PropertyValueColumnData__stream_list_to_array(mock_notify): from bokeh.document.events import ColumnsStreamedEvent import numpy as np source = ColumnDataSource(data=dict(foo=np.array([10]))) pvcd = pc.PropertyValueColumnData(source.data) mock_notify.reset_mock() pvcd._stream("doc", source, dict(foo=[20]), setter="setter") assert mock_notify.call_count == 1 assert (mock_notify.call_args[0][0]['foo'] == np.array([10])).all() assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnsStreamedEvent) assert mock_notify.call_args[1]['hint'].setter == 'setter' assert mock_notify.call_args[1]['hint'].rollover == None
def test_PropertyValueColumnData_update(mock_notify): from bokeh.document.events import ColumnDataChangedEvent source = ColumnDataSource(data=dict(foo=[10], bar=[20], baz=[30])) pvcd = pc.PropertyValueColumnData(source.data) pvcd._register_owner(source, source.lookup('data')) mock_notify.reset_mock() pvcd.update(foo=[11], bar=[21]) assert pvcd == dict(foo=[11], bar=[21], baz=[30]) assert mock_notify.call_count == 1 assert mock_notify.call_args[0] == (source, dict(foo=[10], bar=[20], baz=[30])) assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnDataChangedEvent) assert mock_notify.call_args[1]['hint'].column_source == source assert sorted(mock_notify.call_args[1]['hint'].cols) == ['bar', 'foo']
def test_PropertyValueColumnData__stream_array_with_rollover(mock_notify): from bokeh.document.events import ColumnsStreamedEvent import numpy as np source = ColumnDataSource(data=dict(foo=np.array([10, 20, 30]))) pvcd = pc.PropertyValueColumnData(source.data) mock_notify.reset() pvcd._stream("doc", source, dict(foo=[40]), rollover=3, setter="setter") assert mock_notify.called_once assert len(mock_notify.call_args[0]) == 1 assert 'foo' in mock_notify.call_args[0][0] assert (mock_notify.call_args[0][0]['foo'] == np.array([10, 20, 30])).all() assert 'hint' in mock_notify.call_args[1] assert isinstance(mock_notify.call_args[1]['hint'], ColumnsStreamedEvent) assert mock_notify.call_args[1]['hint'].setter == 'setter' assert mock_notify.call_args[1]['hint'].rollover == 3