~ubuntu-branches/ubuntu/utopic/python-chaco/utopic

« back to all changes in this revision

Viewing changes to chaco/tests/array_plot_data_test_case.py

  • Committer: Package Import Robot
  • Author(s): Andrew Starr-Bochicchio
  • Date: 2014-06-01 17:04:08 UTC
  • mfrom: (7.2.5 sid)
  • Revision ID: package-import@ubuntu.com-20140601170408-m86xvdjd83a4qon0
Tags: 4.4.1-1ubuntu1
* Merge from Debian unstable. Remaining Ubuntu changes:
 - Let the binary-predeb target work on the usr/lib/python* directory
   as we don't have usr/share/pyshared anymore.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import contextlib
 
2
from traits.testing.unittest_tools import unittest
 
3
 
 
4
import numpy
 
5
 
 
6
from chaco.api import ArrayPlotData
 
7
from traits.api import HasTraits, Instance, List, on_trait_change
 
8
 
 
9
 
 
10
class ArrayPlotDataEventsCollector(HasTraits):
 
11
    plot_data = Instance(ArrayPlotData)
 
12
 
 
13
    data_changed_events = List
 
14
 
 
15
    @on_trait_change('plot_data:data_changed')
 
16
    def _got_data_changed_event(self, event):
 
17
        self.data_changed_events.append(event)
 
18
 
 
19
 
 
20
class ArrayPlotDataTestCase(unittest.TestCase):
 
21
    @contextlib.contextmanager
 
22
    def monitor_events(self, plot_data):
 
23
        """
 
24
        Context manager to collect data_changed events.
 
25
 
 
26
        """
 
27
        collector = ArrayPlotDataEventsCollector(plot_data=plot_data)
 
28
        yield collector.data_changed_events
 
29
 
 
30
    def test_data_changed_events(self):
 
31
        # Test data.
 
32
        grumpy = numpy.ones((3, 4))
 
33
        grumpy_too = numpy.zeros(16)
 
34
 
 
35
        plot_data = ArrayPlotData()
 
36
 
 
37
        with self.monitor_events(plot_data) as events:
 
38
            plot_data.set_data('Grumpy', grumpy)
 
39
            self.assertEqual(events, [{'added': ['Grumpy']}])
 
40
 
 
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)
 
44
 
 
45
        with self.monitor_events(plot_data) as events:
 
46
            plot_data.set_data('Grumpy', grumpy_too)
 
47
            self.assertEqual(events, [{'changed': ['Grumpy']}])
 
48
 
 
49
        with self.monitor_events(plot_data) as events:
 
50
            plot_data.del_data('Grumpy')
 
51
            self.assertEqual(events, [{'removed': ['Grumpy']}])
 
52
 
 
53
 
 
54
if __name__ == '__main__':
 
55
    import nose
 
56
    nose.run()