def test_no_tree(self): """Check if parser is usable without the tree.""" p = vtk_parser.VTKMethodParser(use_tree=False) self.assertEqual(p.get_tree(), None) self.p = p self.test_methods() self.test_parse() self.test_method_signature() # Now check that it really works for abstract classes. # abstract classes that have state methods abs_class = [ vtk.vtkDicer, vtk.vtkMapper, vtk.vtkScalarsToColors, vtk.vtkUnstructuredGridVolumeMapper, vtk.vtkVolumeMapper, vtk.vtkXMLWriter ] if hasattr(vtk, 'vtkStreamer'): abs_class.append(vtk.vtkStreamer) for k in abs_class: p.parse(k) # Make sure we did get the state methods. self.assertEqual(len(p.get_state_methods()) > 0, True) for key, values in p.get_state_methods().items(): for val in values: # No state information is obtainable since no # class tree is created. self.assertTrue(val[1] in [None, 0, 1, 2])
method signature for every method in every class. If this runs without crashing or raising any exceptions, then it shows that the vtk_parser will work for any VTK class. The test will show a few VTK error messages but they are usually harmless. """ import unittest from tvtk import vtk_parser import time # Only used when timing. import sys # Only used when debugging. import vtk # This is a little expensive to create so we cache it. _cache = vtk_parser.VTKMethodParser() vtk_major_version = vtk.vtkVersion.GetVTKMajorVersion() vtk_minor_version = vtk.vtkVersion.GetVTKMinorVersion() class TestVTKParser(unittest.TestCase): def setUp(self): self.p = _cache def test_methods(self): """Check get_methods.""" p = self.p meths = p.get_methods(vtk.vtkFloatArray) # Check if special methods are removed. for m in meths: