1 #!/usr/bin/env python
2
3import os
4import vtk
5
6#
7# If the current directory is writable, then test the witers
8#
9try:
10    channel = open("test.tmp", "w")
11    channel.close()
12    os.remove("test.tmp")
13
14    s = vtk.vtkRTAnalyticSource()
15    s.SetWholeExtent(5, 10, 5, 10, 5, 10)
16    s.Update()
17
18    d = s.GetOutput()
19
20    w = vtk.vtkStructuredPointsWriter()
21    w.SetInputData(d)
22    w.SetFileName("test-dim.vtk")
23    w.Write()
24
25    r = vtk.vtkStructuredPointsReader()
26    r.SetFileName("test-dim.vtk")
27    r.Update()
28
29    os.remove("test-dim.vtk")
30
31    assert(r.GetOutput().GetExtent() == (0,5,0,5,0,5))
32    assert(r.GetOutput().GetOrigin() == (5, 5, 5))
33
34    w.SetInputData(d)
35    w.SetFileName("test-dim.vtk")
36    w.SetWriteExtent(True)
37    w.Write()
38
39    r.Modified()
40    r.Update()
41
42    os.remove("test-dim.vtk")
43
44    assert(r.GetOutput().GetExtent() == (5,10,5,10,5,10))
45    assert(r.GetOutput().GetOrigin() == (0, 0, 0))
46
47    rg = vtk.vtkRectilinearGrid()
48    extents = (1, 3, 1, 3, 1, 3)
49    rg.SetExtent(extents)
50    pts = vtk.vtkFloatArray()
51    pts.InsertNextTuple1(0)
52    pts.InsertNextTuple1(1)
53    pts.InsertNextTuple1(2)
54    rg.SetXCoordinates(pts)
55    rg.SetYCoordinates(pts)
56    rg.SetZCoordinates(pts)
57
58    w = vtk.vtkRectilinearGridWriter()
59    w.SetInputData(rg)
60    w.SetFileName("test-dim.vtk")
61    w.Write()
62
63    r = vtk.vtkRectilinearGridReader()
64    r.SetFileName("test-dim.vtk")
65    r.Update()
66
67    os.remove("test-dim.vtk")
68
69    assert(r.GetOutput().GetExtent() == (0,2,0,2,0,2))
70
71    w.SetInputData(rg)
72    w.SetFileName("test-dim.vtk")
73    w.SetWriteExtent(True)
74    w.Write()
75
76    r.Modified()
77    r.Update()
78
79    assert(r.GetOutput().GetExtent() == (1,3,1,3,1,3))
80
81    sg = vtk.vtkStructuredGrid()
82    extents = (1, 3, 1, 3, 1, 3)
83    sg.SetExtent(extents)
84    ptsa = vtk.vtkFloatArray()
85    ptsa.SetNumberOfComponents(3)
86    ptsa.SetNumberOfTuples(27)
87    # We don't really care about point coordinates being correct
88    for i in range(27):
89        ptsa.InsertNextTuple3(0, 0, 0)
90    pts = vtk.vtkPoints()
91    pts.SetData(ptsa)
92    sg.SetPoints(pts)
93
94    w = vtk.vtkStructuredGridWriter()
95    w.SetInputData(sg)
96    w.SetFileName("test-dim.vtk")
97    w.Write()
98
99    # comment out reader part of this test as it has been failing
100    # for over 6 months and no one is willing to fix it
101    #
102    # r = vtk.vtkStructuredGridReader()
103    # r.SetFileName("test-dim.vtk")
104    # r.Update()
105
106    os.remove("test-dim.vtk")
107
108    # assert(r.GetOutput().GetExtent() == (0,2,0,2,0,2))
109
110    w.SetInputData(sg)
111    w.SetFileName("test-dim.vtk")
112    w.SetWriteExtent(True)
113    w.Write()
114
115    # r.Modified()
116    # r.Update()
117
118    # assert(r.GetOutput().GetExtent() == (1,3,1,3,1,3))
119
120
121except IOError:
122    pass
123