Statistiques
| Révision :

root / ase / test / vtk_pipeline.py @ 1

Historique | Voir | Annoter | Télécharger (16,39 ko)

1 1 tkerber
#!/usr/bin/env python
2 1 tkerber
3 1 tkerber
from ase.visualize.vtk import requirevtk
4 1 tkerber
5 1 tkerber
requirevtk()
6 1 tkerber
7 1 tkerber
import sys, unittest
8 1 tkerber
from ase.test import CustomTestCase, CustomTextTestRunner
9 1 tkerber
10 1 tkerber
from vtk import vtkContourFilter, vtkPolyDataNormals, \
11 1 tkerber
                vtkLinearSubdivisionFilter, vtkPolyDataMapper
12 1 tkerber
from ase.visualize.vtk.pipeline import vtkPolyDataPipeline
13 1 tkerber
14 1 tkerber
# -------------------------------------------------------------------
15 1 tkerber
16 1 tkerber
class UTPipeline(CustomTestCase):
17 1 tkerber
    """
18 1 tkerber
    Abstract test case class - TODO."""
19 1 tkerber
20 1 tkerber
    def assertConnected(self, vtk_one, vtk_two, port=0):
21 1 tkerber
        self.assertEqual(vtk_two.GetNumberOfInputConnections(port), 1)
22 1 tkerber
        self.assertEqual(vtk_one.GetOutputPort(),
23 1 tkerber
                         vtk_two.GetInputConnection(port, 0))
24 1 tkerber
25 1 tkerber
    def assertNotConnected(self, vtk_one, vtk_two, port=0):
26 1 tkerber
        self.assertEqual(vtk_two.GetNumberOfInputConnections(port), 0)
27 1 tkerber
28 1 tkerber
29 1 tkerber
# -------------------------------------------------------------------
30 1 tkerber
31 1 tkerber
class UTPolyDataPipeline(UTPipeline):
32 1 tkerber
    """
33 1 tkerber
    TODO"""
34 1 tkerber
35 1 tkerber
    def setUp(self):
36 1 tkerber
        self.vtk_iso = vtkContourFilter()
37 1 tkerber
        #self.vtk_iso.SetInput(...)
38 1 tkerber
39 1 tkerber
        self.vtk_dnorm = vtkPolyDataNormals()
40 1 tkerber
        self.vtk_subdiv = vtkLinearSubdivisionFilter()
41 1 tkerber
        self.vtk_dmap = vtkPolyDataMapper()
42 1 tkerber
43 1 tkerber
    def tearDown(self):
44 1 tkerber
        del self.vtk_dmap
45 1 tkerber
        del self.vtk_subdiv
46 1 tkerber
        del self.vtk_dnorm
47 1 tkerber
        del self.vtk_iso
48 1 tkerber
49 1 tkerber
# -------------------------------------------------------------------
50 1 tkerber
51 1 tkerber
class UTPolyDataPipeline_PureVTK(UTPolyDataPipeline):
52 1 tkerber
    """
53 1 tkerber
    Consistency tests for pure-VTK objects with the purpose
54 1 tkerber
    of ultimately mapping the polygonal data within the pipeline."""
55 1 tkerber
56 1 tkerber
    # =================================
57 1 tkerber
58 1 tkerber
    def test_consistent_data_oninit(self):
59 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
60 1 tkerber
        self.assertTrue(pipeline.hasdata())
61 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
62 1 tkerber
        self.assertFalse(pipeline.hasfilters())
63 1 tkerber
        self.assertFalse(pipeline.isclosed())
64 1 tkerber
65 1 tkerber
        pipeline.append(self.vtk_dnorm)
66 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
67 1 tkerber
68 1 tkerber
        pipeline.append(self.vtk_subdiv)
69 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
70 1 tkerber
71 1 tkerber
        pipeline.append(self.vtk_dmap)
72 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
73 1 tkerber
74 1 tkerber
        self.assertTrue(pipeline.hasfilters())
75 1 tkerber
        self.assertTrue(pipeline.isclosed())
76 1 tkerber
77 1 tkerber
    def test_consistent_data_direct(self):
78 1 tkerber
        pipeline = vtkPolyDataPipeline()
79 1 tkerber
        self.assertFalse(pipeline.hasdata())
80 1 tkerber
        self.assertFalse(pipeline.hasfilters())
81 1 tkerber
        self.assertFalse(pipeline.isclosed())
82 1 tkerber
83 1 tkerber
        pipeline.set_data(self.vtk_iso)
84 1 tkerber
        self.assertTrue(pipeline.hasdata())
85 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
86 1 tkerber
87 1 tkerber
        pipeline.append(self.vtk_dnorm)
88 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
89 1 tkerber
90 1 tkerber
        pipeline.append(self.vtk_subdiv)
91 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
92 1 tkerber
93 1 tkerber
        pipeline.append(self.vtk_dmap)
94 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
95 1 tkerber
96 1 tkerber
        self.assertTrue(pipeline.hasfilters())
97 1 tkerber
        self.assertTrue(pipeline.isclosed())
98 1 tkerber
99 1 tkerber
    def test_consistent_data_postponed(self):
100 1 tkerber
        pipeline = vtkPolyDataPipeline()
101 1 tkerber
        self.assertFalse(pipeline.hasdata())
102 1 tkerber
        self.assertFalse(pipeline.hasfilters())
103 1 tkerber
        self.assertFalse(pipeline.isclosed())
104 1 tkerber
105 1 tkerber
        pipeline.append(self.vtk_dnorm)
106 1 tkerber
        self.assertTrue(pipeline.hasfilters())
107 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
108 1 tkerber
109 1 tkerber
        pipeline.append(self.vtk_subdiv)
110 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
111 1 tkerber
112 1 tkerber
        pipeline.set_data(self.vtk_iso)
113 1 tkerber
        self.assertTrue(pipeline.hasdata())
114 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
115 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
116 1 tkerber
117 1 tkerber
        pipeline.append(self.vtk_dmap)
118 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
119 1 tkerber
        self.assertTrue(pipeline.hasdata())
120 1 tkerber
        self.assertTrue(pipeline.isclosed())
121 1 tkerber
122 1 tkerber
    def test_consistent_data_onclose(self):
123 1 tkerber
        pipeline = vtkPolyDataPipeline()
124 1 tkerber
        self.assertFalse(pipeline.hasdata())
125 1 tkerber
        self.assertFalse(pipeline.hasfilters())
126 1 tkerber
        self.assertFalse(pipeline.isclosed())
127 1 tkerber
128 1 tkerber
        pipeline.append(self.vtk_dnorm)
129 1 tkerber
        self.assertTrue(pipeline.hasfilters())
130 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
131 1 tkerber
132 1 tkerber
        pipeline.append(self.vtk_subdiv)
133 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
134 1 tkerber
135 1 tkerber
        pipeline.append(self.vtk_dmap)
136 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
137 1 tkerber
        self.assertTrue(pipeline.isclosed())
138 1 tkerber
139 1 tkerber
        pipeline.set_data(self.vtk_iso)
140 1 tkerber
        self.assertTrue(pipeline.hasdata())
141 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
142 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
143 1 tkerber
144 1 tkerber
    # =================================
145 1 tkerber
146 1 tkerber
    def test_failure_duplicate_data(self):
147 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
148 1 tkerber
        self.assertRaises(ValueError, pipeline.append, self.vtk_iso)
149 1 tkerber
150 1 tkerber
    def test_failure_duplicate_mixed(self):
151 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
152 1 tkerber
        pipeline.append(self.vtk_dnorm)
153 1 tkerber
        self.assertRaises(ValueError, pipeline.append, self.vtk_iso)
154 1 tkerber
155 1 tkerber
    def test_failure_duplicate_cyclic(self):
156 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
157 1 tkerber
        pipeline.append(self.vtk_dnorm)
158 1 tkerber
        pipeline.append(self.vtk_subdiv)
159 1 tkerber
        self.assertRaises(ValueError, pipeline.append, self.vtk_dnorm)
160 1 tkerber
161 1 tkerber
    def test_failure_duplicate_filter(self):
162 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
163 1 tkerber
        pipeline.append(self.vtk_dnorm)
164 1 tkerber
        self.assertRaises(ValueError, pipeline.append, self.vtk_dnorm)
165 1 tkerber
166 1 tkerber
    # =================================
167 1 tkerber
168 1 tkerber
    def test_failure_output_missing(self):
169 1 tkerber
        pipeline = vtkPolyDataPipeline()
170 1 tkerber
        self.assertRaises(RuntimeError, pipeline.get_output_port)
171 1 tkerber
172 1 tkerber
    def test_failure_output_closed(self):
173 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
174 1 tkerber
        pipeline.append(self.vtk_dmap)
175 1 tkerber
        self.assertRaises(RuntimeError, pipeline.append, self.vtk_dnorm)
176 1 tkerber
177 1 tkerber
# -------------------------------------------------------------------
178 1 tkerber
179 1 tkerber
class UTPolyDataPipeline_PipelineVTK(UTPolyDataPipeline):
180 1 tkerber
    """
181 1 tkerber
    Consistency tests for mixed VTK objects and pipelines with the purpose
182 1 tkerber
    of ultimately mapping the polygonal data through embedded pipelines."""
183 1 tkerber
184 1 tkerber
    # =================================
185 1 tkerber
186 1 tkerber
    def get_consistent_datapipe(self):
187 1 tkerber
        datapipe = vtkPolyDataPipeline(self.vtk_iso)
188 1 tkerber
        self.assertTrue(datapipe.hasdata())
189 1 tkerber
        self.assertTrue(self.vtk_iso in datapipe)
190 1 tkerber
        self.assertEqual(datapipe.vtkish_data, self.vtk_iso)
191 1 tkerber
        self.assertFalse(datapipe.hasfilters())
192 1 tkerber
        self.assertFalse(datapipe.isclosed())
193 1 tkerber
194 1 tkerber
        return datapipe
195 1 tkerber
196 1 tkerber
    def test_consistent_datapipe_oninit(self):
197 1 tkerber
        datapipe = self.get_consistent_datapipe()
198 1 tkerber
199 1 tkerber
        pipeline = vtkPolyDataPipeline(datapipe)
200 1 tkerber
        self.assertTrue(pipeline.hasdata())
201 1 tkerber
        self.assertTrue(datapipe in pipeline)
202 1 tkerber
        self.assertTrue(self.vtk_iso in pipeline)
203 1 tkerber
        self.assertEqual(pipeline.vtkish_data, datapipe)
204 1 tkerber
        self.assertRaises(RuntimeError, datapipe.isclosed)
205 1 tkerber
        self.assertFalse(pipeline.hasfilters())
206 1 tkerber
        self.assertFalse(pipeline.isclosed())
207 1 tkerber
208 1 tkerber
        pipeline.append(self.vtk_dnorm)
209 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
210 1 tkerber
211 1 tkerber
        pipeline.append(self.vtk_subdiv)
212 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
213 1 tkerber
214 1 tkerber
        pipeline.append(self.vtk_dmap)
215 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
216 1 tkerber
217 1 tkerber
        self.assertTrue(pipeline.hasfilters())
218 1 tkerber
        self.assertTrue(pipeline.isclosed())
219 1 tkerber
220 1 tkerber
    def test_consistent_datapipe_direct(self):
221 1 tkerber
        datapipe = self.get_consistent_datapipe()
222 1 tkerber
223 1 tkerber
        pipeline = vtkPolyDataPipeline()
224 1 tkerber
        self.assertFalse(pipeline.hasdata())
225 1 tkerber
        self.assertFalse(datapipe in pipeline)
226 1 tkerber
        self.assertFalse(self.vtk_iso in pipeline)
227 1 tkerber
        self.assertFalse(pipeline.hasfilters())
228 1 tkerber
        self.assertFalse(pipeline.isclosed())
229 1 tkerber
230 1 tkerber
        pipeline.set_data(datapipe)
231 1 tkerber
        self.assertTrue(pipeline.hasdata())
232 1 tkerber
        self.assertTrue(datapipe in pipeline)
233 1 tkerber
        self.assertTrue(self.vtk_iso in pipeline)
234 1 tkerber
        self.assertEqual(pipeline.vtkish_data, datapipe)
235 1 tkerber
        self.assertRaises(RuntimeError, datapipe.isclosed)
236 1 tkerber
237 1 tkerber
        pipeline.append(self.vtk_dnorm)
238 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
239 1 tkerber
240 1 tkerber
        pipeline.append(self.vtk_subdiv)
241 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
242 1 tkerber
243 1 tkerber
        pipeline.append(self.vtk_dmap)
244 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
245 1 tkerber
246 1 tkerber
        self.assertTrue(pipeline.hasfilters())
247 1 tkerber
        self.assertTrue(pipeline.isclosed())
248 1 tkerber
249 1 tkerber
    def test_consistent_datapipe_postponed(self):
250 1 tkerber
        datapipe = self.get_consistent_datapipe()
251 1 tkerber
252 1 tkerber
        pipeline = vtkPolyDataPipeline()
253 1 tkerber
        self.assertFalse(pipeline.hasdata())
254 1 tkerber
        self.assertFalse(datapipe in pipeline)
255 1 tkerber
        self.assertFalse(self.vtk_iso in pipeline)
256 1 tkerber
        self.assertFalse(pipeline.hasfilters())
257 1 tkerber
        self.assertFalse(pipeline.isclosed())
258 1 tkerber
259 1 tkerber
        pipeline.append(self.vtk_dnorm)
260 1 tkerber
        self.assertTrue(pipeline.hasfilters())
261 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
262 1 tkerber
263 1 tkerber
        pipeline.append(self.vtk_subdiv)
264 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
265 1 tkerber
266 1 tkerber
        pipeline.set_data(datapipe)
267 1 tkerber
        self.assertTrue(pipeline.hasdata())
268 1 tkerber
        self.assertTrue(datapipe in pipeline)
269 1 tkerber
        self.assertTrue(self.vtk_iso in pipeline)
270 1 tkerber
        self.assertEqual(pipeline.vtkish_data, datapipe)
271 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
272 1 tkerber
        self.assertTrue(datapipe.isclosed())
273 1 tkerber
274 1 tkerber
        pipeline.append(self.vtk_dmap)
275 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
276 1 tkerber
        self.assertTrue(pipeline.hasdata())
277 1 tkerber
        self.assertTrue(pipeline.isclosed())
278 1 tkerber
279 1 tkerber
    def test_consistent_datapipe_onclose(self):
280 1 tkerber
        datapipe = self.get_consistent_datapipe()
281 1 tkerber
282 1 tkerber
        pipeline = vtkPolyDataPipeline()
283 1 tkerber
        self.assertFalse(pipeline.hasdata())
284 1 tkerber
        self.assertFalse(datapipe in pipeline)
285 1 tkerber
        self.assertFalse(self.vtk_iso in pipeline)
286 1 tkerber
        self.assertFalse(pipeline.hasfilters())
287 1 tkerber
        self.assertFalse(pipeline.isclosed())
288 1 tkerber
289 1 tkerber
        pipeline.append(self.vtk_dnorm)
290 1 tkerber
        self.assertTrue(pipeline.hasfilters())
291 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
292 1 tkerber
293 1 tkerber
        pipeline.append(self.vtk_subdiv)
294 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
295 1 tkerber
296 1 tkerber
        pipeline.append(self.vtk_dmap)
297 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
298 1 tkerber
        self.assertTrue(pipeline.isclosed())
299 1 tkerber
300 1 tkerber
        pipeline.set_data(datapipe)
301 1 tkerber
        self.assertTrue(pipeline.hasdata())
302 1 tkerber
        self.assertEqual(pipeline.vtkish_data, datapipe)
303 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
304 1 tkerber
        self.assertTrue(datapipe.isclosed())
305 1 tkerber
306 1 tkerber
    # =================================
307 1 tkerber
308 1 tkerber
    def get_consistent_filterpipe(self):
309 1 tkerber
        filterpipe = vtkPolyDataPipeline()
310 1 tkerber
        self.assertFalse(filterpipe.hasdata())
311 1 tkerber
        self.assertFalse(self.vtk_iso in filterpipe)
312 1 tkerber
        self.assertFalse(filterpipe.hasfilters())
313 1 tkerber
        self.assertFalse(filterpipe.isclosed())
314 1 tkerber
315 1 tkerber
        filterpipe.append(self.vtk_dnorm)
316 1 tkerber
        self.assertTrue(filterpipe.hasfilters())
317 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
318 1 tkerber
319 1 tkerber
        filterpipe.append(self.vtk_subdiv)
320 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
321 1 tkerber
322 1 tkerber
        return filterpipe
323 1 tkerber
324 1 tkerber
    def test_consistent_filterpipe_oninit(self):
325 1 tkerber
        filterpipe = self.get_consistent_filterpipe()
326 1 tkerber
327 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
328 1 tkerber
        self.assertTrue(pipeline.hasdata())
329 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
330 1 tkerber
        self.assertFalse(pipeline.hasfilters())
331 1 tkerber
        self.assertFalse(pipeline.isclosed())
332 1 tkerber
333 1 tkerber
        pipeline.append(filterpipe)
334 1 tkerber
        self.assertRaises(RuntimeError, filterpipe.isclosed)
335 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
336 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
337 1 tkerber
        self.assertFalse(pipeline.isclosed())
338 1 tkerber
339 1 tkerber
        pipeline.append(self.vtk_dmap)
340 1 tkerber
        self.assertTrue(filterpipe.isclosed())
341 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
342 1 tkerber
        self.assertTrue(pipeline.hasfilters())
343 1 tkerber
        self.assertTrue(pipeline.isclosed())
344 1 tkerber
345 1 tkerber
    def test_consistent_filterpipe_direct(self):
346 1 tkerber
        filterpipe = self.get_consistent_filterpipe()
347 1 tkerber
348 1 tkerber
        pipeline = vtkPolyDataPipeline()
349 1 tkerber
        self.assertFalse(pipeline.hasdata())
350 1 tkerber
        self.assertFalse(pipeline.hasfilters())
351 1 tkerber
        self.assertFalse(pipeline.isclosed())
352 1 tkerber
353 1 tkerber
        pipeline.set_data(self.vtk_iso)
354 1 tkerber
        self.assertTrue(pipeline.hasdata())
355 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
356 1 tkerber
357 1 tkerber
        pipeline.append(filterpipe)
358 1 tkerber
        self.assertRaises(RuntimeError, filterpipe.isclosed)
359 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
360 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
361 1 tkerber
        self.assertFalse(pipeline.isclosed())
362 1 tkerber
363 1 tkerber
        pipeline.append(self.vtk_dmap)
364 1 tkerber
        self.assertTrue(filterpipe.isclosed())
365 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
366 1 tkerber
        self.assertTrue(pipeline.hasfilters())
367 1 tkerber
        self.assertTrue(pipeline.isclosed())
368 1 tkerber
369 1 tkerber
    def test_consistent_filterpipe_postponed(self):
370 1 tkerber
        filterpipe = self.get_consistent_filterpipe()
371 1 tkerber
372 1 tkerber
        pipeline = vtkPolyDataPipeline()
373 1 tkerber
        self.assertFalse(pipeline.hasdata())
374 1 tkerber
        self.assertFalse(pipeline.hasfilters())
375 1 tkerber
        self.assertFalse(pipeline.isclosed())
376 1 tkerber
377 1 tkerber
        pipeline.append(filterpipe)
378 1 tkerber
        self.assertRaises(RuntimeError, filterpipe.isclosed)
379 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
380 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
381 1 tkerber
382 1 tkerber
        pipeline.set_data(self.vtk_iso)
383 1 tkerber
        self.assertTrue(pipeline.hasdata())
384 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
385 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
386 1 tkerber
387 1 tkerber
        pipeline.append(self.vtk_dmap)
388 1 tkerber
        self.assertTrue(filterpipe.isclosed())
389 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
390 1 tkerber
        self.assertTrue(pipeline.hasdata())
391 1 tkerber
        self.assertTrue(pipeline.isclosed())
392 1 tkerber
393 1 tkerber
    def test_consistent_filterdata_onclose(self):
394 1 tkerber
        filterpipe = self.get_consistent_filterpipe()
395 1 tkerber
396 1 tkerber
        pipeline = vtkPolyDataPipeline()
397 1 tkerber
        self.assertFalse(pipeline.hasdata())
398 1 tkerber
        self.assertFalse(pipeline.hasfilters())
399 1 tkerber
        self.assertFalse(pipeline.isclosed())
400 1 tkerber
401 1 tkerber
        pipeline.append(filterpipe)
402 1 tkerber
        self.assertRaises(RuntimeError, filterpipe.isclosed)
403 1 tkerber
        self.assertNotConnected(self.vtk_iso, self.vtk_dnorm)
404 1 tkerber
        self.assertConnected(self.vtk_dnorm, self.vtk_subdiv)
405 1 tkerber
406 1 tkerber
        pipeline.append(self.vtk_dmap)
407 1 tkerber
        self.assertTrue(filterpipe.isclosed())
408 1 tkerber
        self.assertConnected(self.vtk_subdiv, self.vtk_dmap)
409 1 tkerber
        self.assertFalse(pipeline.hasdata())
410 1 tkerber
        self.assertTrue(pipeline.isclosed())
411 1 tkerber
412 1 tkerber
        pipeline.set_data(self.vtk_iso)
413 1 tkerber
        self.assertTrue(pipeline.hasdata())
414 1 tkerber
        self.assertEqual(pipeline.vtkish_data, self.vtk_iso)
415 1 tkerber
        self.assertConnected(self.vtk_iso, self.vtk_dnorm)
416 1 tkerber
417 1 tkerber
    # =================================
418 1 tkerber
419 1 tkerber
    def test_failure_recursive_data(self):
420 1 tkerber
        pipeline = vtkPolyDataPipeline()
421 1 tkerber
        self.assertRaises(ValueError, pipeline.set_data, pipeline)
422 1 tkerber
423 1 tkerber
    def test_failure_recursive_mixed(self):
424 1 tkerber
        pipeline = vtkPolyDataPipeline(self.vtk_iso)
425 1 tkerber
        pipeline.append(self.vtk_dnorm)
426 1 tkerber
        self.assertRaises(ValueError, pipeline.append, pipeline)
427 1 tkerber
428 1 tkerber
    def test_failure_recursive_filter(self):
429 1 tkerber
        pipeline = vtkPolyDataPipeline()
430 1 tkerber
        self.assertRaises(ValueError, pipeline.append, pipeline)
431 1 tkerber
432 1 tkerber
433 1 tkerber
# -------------------------------------------------------------------
434 1 tkerber
435 1 tkerber
if __name__ in ['__main__', '__builtin__']:
436 1 tkerber
    # We may have been imported by test.py, if so we should redirect to logfile
437 1 tkerber
    if __name__ == '__builtin__':
438 1 tkerber
        testrunner = CustomTextTestRunner('vtk_pipeline.log', verbosity=2)
439 1 tkerber
    else:
440 1 tkerber
        testrunner = unittest.TextTestRunner(stream=sys.stdout, verbosity=2)
441 1 tkerber
442 1 tkerber
    testcases = [UTPolyDataPipeline_PureVTK, UTPolyDataPipeline_PipelineVTK]
443 1 tkerber
444 1 tkerber
    for test in testcases:
445 1 tkerber
        info = '\n' + test.__name__ + '\n' + test.__doc__.strip('\n') + '\n'
446 1 tkerber
        testsuite = unittest.defaultTestLoader.loadTestsFromTestCase(test)
447 1 tkerber
        testrunner.stream.writeln(info)
448 1 tkerber
        testresult = testrunner.run(testsuite)
449 1 tkerber
        # Provide feedback on failed tests if imported by test.py
450 1 tkerber
        if __name__ == '__builtin__' and not testresult.wasSuccessful():
451 1 tkerber
            raise SystemExit('Test failed. Check vtk_pipeline.log for details.')