1#!/usr/bin/env python
2import vtk
3from vtk.test import Testing
4from vtk.util.misc import vtkGetDataRoot
5VTK_DATA_ROOT = vtkGetDataRoot()
6
7from vtk.test import Testing
8
9class TestCommand(Testing.vtkTest):
10    def _test(self, fname):
11        reader = vtk.vtkXMLUnstructuredGridReader()
12        reader.SetFileName(VTK_DATA_ROOT + fname)
13
14        elev = vtk.vtkElevationFilter()
15        elev.SetInputConnection(reader.GetOutputPort())
16        elev.SetLowPoint(-0.05, 0.05, 0)
17        elev.SetHighPoint(0.05, 0.05, 0)
18
19        grad = vtk.vtkGradientFilter()
20        grad.SetInputConnection(elev.GetOutputPort())
21        grad.SetInputArrayToProcess(0, 0, 0, vtk.vtkDataObject.FIELD_ASSOCIATION_POINTS, "Elevation")
22
23        grad.Update()
24
25        vals = (10, 0, 0)
26
27        for i in range(3):
28            r = grad.GetOutput().GetPointData().GetArray("Gradients").GetRange(i)
29
30            self.assertTrue(abs(r[0] - vals[i]) < 1E-4)
31            self.assertTrue(abs(r[1] - vals[i]) < 1E-4)
32
33        elev.SetLowPoint(0.05, -0.05, 0)
34        elev.SetHighPoint(0.05, 0.05, 0)
35        grad.Update()
36
37        vals = (0, 10, 0)
38
39        for i in range(3):
40            r = grad.GetOutput().GetPointData().GetArray("Gradients").GetRange(i)
41
42            self.assertTrue(abs(r[0] - vals[i]) < 1E-4)
43            self.assertTrue(abs(r[1] - vals[i]) < 1E-4)
44
45    def testQuadraticQuad(self):
46        self._test("/Data/Disc_QuadraticQuads_0_0.vtu")
47
48    def testBiQuadraticQuad(self):
49        self._test("/Data/Disc_BiQuadraticQuads_0_0.vtu")
50
51if __name__ == "__main__":
52    Testing.main([(TestCommand, 'test')])
53