2
from traits.testing.unittest_tools import unittest
6
from chaco.api import ArrayPlotData
7
from traits.api import HasTraits, Instance, List, on_trait_change
10
class ArrayPlotDataEventsCollector(HasTraits):
11
plot_data = Instance(ArrayPlotData)
13
data_changed_events = List
15
@on_trait_change('plot_data:data_changed')
16
def _got_data_changed_event(self, event):
17
self.data_changed_events.append(event)
20
class ArrayPlotDataTestCase(unittest.TestCase):
21
@contextlib.contextmanager
22
def monitor_events(self, plot_data):
24
Context manager to collect data_changed events.
27
collector = ArrayPlotDataEventsCollector(plot_data=plot_data)
28
yield collector.data_changed_events
30
def test_data_changed_events(self):
32
grumpy = numpy.ones((3, 4))
33
grumpy_too = numpy.zeros(16)
35
plot_data = ArrayPlotData()
37
with self.monitor_events(plot_data) as events:
38
plot_data.set_data('Grumpy', grumpy)
39
self.assertEqual(events, [{'added': ['Grumpy']}])
41
# While we're here, check that get_data works as advertised.
42
grumpy_out = plot_data.get_data('Grumpy')
43
self.assertIs(grumpy_out, grumpy)
45
with self.monitor_events(plot_data) as events:
46
plot_data.set_data('Grumpy', grumpy_too)
47
self.assertEqual(events, [{'changed': ['Grumpy']}])
49
with self.monitor_events(plot_data) as events:
50
plot_data.del_data('Grumpy')
51
self.assertEqual(events, [{'removed': ['Grumpy']}])
54
if __name__ == '__main__':