def test_loop_loops_timesteps(self):
        # Given
        e = self.engine
        # Read a VTK XML data file.
        r = VTKXMLFileReader()
        r.initialize(self.abc1)
        r.timestep = 0
        e.add_source(r)

        # Create an outline for the data.
        o = Outline()
        e.add_module(o)

        values = []

        def callback(new):
            values.append(new)
            # Shut off so only one loop is done.
            if new == 0:
                r.loop = False

        r.on_trait_change(callback, 'timestep')

        # When
        r.loop = True
        r.play = True

        # Then
        expected = [1, 0, 1]
        self.assertEqual(values, expected)
        self.assertEqual(r.timestep, 1)
        self.assertEqual(r.loop, False)
    def test_loop_loops_timesteps(self):
        # Given
        e = self.engine
        # Read a VTK XML data file.
        r = VTKXMLFileReader()
        r.initialize(self.abc1)
        r.timestep = 0
        e.add_source(r)

        # Create an outline for the data.
        o = Outline()
        e.add_module(o)

        values = []

        def callback(new):
            values.append(new)
            # Shut off so only one loop is done.
            if new == 0:
                r.loop = False

        r.on_trait_change(callback, "timestep")

        # When
        r.loop = True
        r.play = True

        # Then
        expected = [1, 0, 1]
        self.assertEqual(values, expected)
        self.assertEqual(r.timestep, 1)
        self.assertEqual(r.loop, False)
    def test_play_updates_timestep(self):
        # Given
        e = self.engine
        # Read a VTK XML data file.
        r = VTKXMLFileReader()
        r.initialize(self.abc1)
        r.timestep = 0
        e.add_source(r)

        # Create an outline for the data.
        o = Outline()
        e.add_module(o)

        r2 = VTKXMLFileReader()
        r2.initialize(self.def1)
        e.add_source(r2)

        # When
        r.play = True

        # Then
        self.assertEqual(r.timestep, 1)
        self.assertEqual(r2.timestep, 0)
    def test_play_updates_timestep(self):
        # Given
        e = self.engine
        # Read a VTK XML data file.
        r = VTKXMLFileReader()
        r.initialize(self.abc1)
        r.timestep = 0
        e.add_source(r)

        # Create an outline for the data.
        o = Outline()
        e.add_module(o)

        r2 = VTKXMLFileReader()
        r2.initialize(self.def1)
        e.add_source(r2)

        # When
        r.play = True

        # Then
        self.assertEqual(r.timestep, 1)
        self.assertEqual(r2.timestep, 0)
    def test_play_calls_movie_maker_correctly(self):
        # Given
        e = self.engine
        # Read a VTK XML data file.
        r = VTKXMLFileReader()
        r.initialize(self.abc1)
        r.timestep = 0
        e.add_source(r)
        # Mock
        s = make_mock_scene()
        r.scene = s
        mm = s.movie_maker

        # Create an outline for the data.
        o = Outline()
        e.add_module(o)

        # When
        r.play = True

        # Then
        mm.animation_start.assert_called_once_with()
        self.assertEqual(mm.animation_step.call_count, 1)
        mm.animation_stop.assert_called_once_with()
    def test_play_calls_movie_maker_correctly(self):
        # Given
        e = self.engine
        # Read a VTK XML data file.
        r = VTKXMLFileReader()
        r.initialize(self.abc1)
        r.timestep = 0
        e.add_source(r)
        # Mock
        s = make_mock_scene()
        r.scene = s
        mm = s.movie_maker

        # Create an outline for the data.
        o = Outline()
        e.add_module(o)

        # When
        r.play = True

        # Then
        mm.animation_start.assert_called_once_with()
        self.assertEqual(mm.animation_step.call_count, 1)
        mm.animation_stop.assert_called_once_with()