def test_PropertyValueColumnData__patch_with_slice_indices(mock_notify): from bokeh.document.events import ColumnsPatchedEvent source = ColumnDataSource(data=dict(foo=[10, 20, 30, 40, 50])) pvcd = bcpw.PropertyValueColumnData(source.data) mock_notify.reset_mock() pvcd._patch("doc", source, dict(foo=[(slice(2), [1, 2])]), setter='setter') assert mock_notify.call_count == 1 assert mock_notify.call_args[0] == ({'foo': [1, 2, 30, 40, 50]}, ) assert pvcd == dict(foo=[1, 2, 30, 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_repeated_simple_indices(mock_notify: MagicMock) -> None: from bokeh.document.events import ColumnsPatchedEvent source = ColumnDataSource(data=dict(foo=[10, 20])) pvcd = bcpw.PropertyValueColumnData(source.data) mock_notify.reset_mock() pvcd._patch("doc", source, dict(foo=[(1, 40), (1, 50)]), setter='setter') assert mock_notify.call_count == 1 assert mock_notify.call_args[0] == ({'foo': [10, 50]},) assert pvcd == dict(foo=[10, 50]) assert 'hint' in mock_notify.call_args[1] event = mock_notify.call_args[1]['hint'] assert isinstance(event, ColumnsPatchedEvent) assert event.setter == 'setter'
def test_PropertyValueColumnData__stream_list_with_rollover(mock_notify) -> None: from bokeh.document.events import ColumnsStreamedEvent source = ColumnDataSource(data=dict(foo=[10, 20, 30])) pvcd = bcpw.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_to_array(mock_notify) -> None: from bokeh.document.events import ColumnsStreamedEvent import numpy as np source = ColumnDataSource(data=dict(foo=np.array([10]))) pvcd = bcpw.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) -> None: from bokeh.document.events import ColumnDataChangedEvent source = ColumnDataSource(data=dict(foo=[10], bar=[20], baz=[30])) pvcd = bcpw.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_to_list(mock_notify: MagicMock) -> None: from bokeh.document.events import ColumnsStreamedEvent source = ColumnDataSource(data=dict(foo=[10])) pvcd = bcpw.PropertyValueColumnData(source.data) mock_notify.reset_mock() pvcd._stream("doc", source, dict(foo=[20]), setter="setter") assert mock_notify.call_count == 1 assert len(mock_notify.call_args[0]) == 1 assert 'foo' in mock_notify.call_args[0][0] assert mock_notify.call_args[0] == ({'foo': [10, 20]},) # streaming to list, "old" is actually updated value assert 'hint' in mock_notify.call_args[1] event = mock_notify.call_args[1]['hint'] assert isinstance(event, ColumnsStreamedEvent) assert event.setter == 'setter' assert event.rollover is None
def test_PropertyValueColumnData___setitem__(mock_notify: MagicMock) -> None: from bokeh.document.events import ColumnDataChangedEvent source = ColumnDataSource(data=dict(foo=[10], bar=[20], baz=[30])) pvcd = bcpw.PropertyValueColumnData(source.data) pvcd._register_owner(source, source.lookup('data')) mock_notify.reset_mock() pvcd['foo'] = [11] assert pvcd == dict(foo=[11], bar=[20], 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] event = mock_notify.call_args[1]['hint'] assert isinstance(event, ColumnDataChangedEvent) assert event.model == source assert event.attr == "data" assert event.cols == ['foo']
def test_PropertyValueColumnData__stream_array_with_rollover(mock_notify: MagicMock) -> None: import numpy as np from bokeh.document.events import ColumnsStreamedEvent source = ColumnDataSource(data=dict(foo=np.array([10, 20, 30]))) pvcd = bcpw.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 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] event = mock_notify.call_args[1]['hint'] assert isinstance(event, ColumnsStreamedEvent) assert event.setter == 'setter' assert event.rollover == 3