File: test_vtk_object_source.py

package info (click to toggle)
mayavi2 4.8.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 21,892 kB
  • sloc: python: 49,447; javascript: 32,885; makefile: 129; fortran: 60
file content (103 lines) | stat: -rw-r--r-- 2,576 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import unittest

import vtk
from tvtk.api import tvtk

from mayavi.sources.vtk_object_source import VTKObjectSource
from mayavi.sources.vtk_data_source import VTKDataSource
from mayavi import mlab

from .test_mlab_integration import TestMlabNullEngine


class TestVTKObjectSource(TestMlabNullEngine):
    def test_simple_vtk_object_source(self):
        # Given
        cs = tvtk.ConeSource()
        ef = tvtk.ElevationFilter(input_connection=cs.output_port)
        engine = self.e

        # When
        src = VTKObjectSource(object=ef)
        engine.add_source(src)

        # Then
        self.assertEqual(src.outputs[0], ef)
        self.assertEqual(src.browser.root_object, [ef])
        self.assertEqual(src.output_info.datasets, ['poly_data'])
        self.assertEqual(src.name, 'VTK (ElevationFilter)')

        # When
        src.object = cs

        # Then
        self.assertEqual(src.outputs[0], cs)
        self.assertEqual(src.browser.root_object, [cs])
        self.assertEqual(src.output_info.datasets, ['poly_data'])
        self.assertEqual(src.name, 'VTK (ConeSource)')

    def test_data_changed_is_fired_when_object_is_modified(self):
        # Given
        cs = tvtk.ConeSource()

        # When
        src = mlab.pipeline.add_dataset(cs)

        # Then
        self.assertTrue(isinstance(src, VTKObjectSource))

        # When
        self.count = 0

        def callback():
            self.count += 1

        src.on_trait_change(callback, 'data_changed')
        cs.height = 2.0

        # Then
        self.assertTrue(self.count > 0)

    def test_add_dataset_uses_vtk_data_source_for_datasets(self):
        # Given
        pd = tvtk.PolyData()

        # When
        src = mlab.pipeline.add_dataset(pd)

        # Then
        self.assertTrue(isinstance(src, VTKDataSource))

    def test_vtk_object_source_works_with_any_vtk_object(self):
        # Given
        a = tvtk.Actor()

        # When/Then
        src = VTKObjectSource(object=a, actors=[a])

        # Then
        self.assertEqual(src.object, a)
        self.assertEqual(src.output_info.datasets, ['none'])

    def test_add_dataset_uses_vtk_object_source_for_objects(self):
        # Given
        a = tvtk.Actor()

        # When
        src = mlab.pipeline.add_dataset(a)

        # Then
        self.assertTrue(isinstance(src, VTKObjectSource))

        # Given
        a = vtk.vtkActor()

        # When
        src = mlab.pipeline.add_dataset(a)

        # Then
        self.assertTrue(isinstance(src, VTKObjectSource))


if __name__ == '__main__':
    unittest.main()