source: inundation/coordinate_transforms/test_geo_reference.py @ 2253

Last change on this file since 2253 was 2253, checked in by duncan, 18 years ago

creating flatter structure

File size: 7.2 KB
Line 
1#!/usr/bin/env python
2#
3
4import unittest
5import tempfile
6import os
7
8from geo_reference import *
9from Numeric import allclose,array
10
11class geo_referenceTestCase(unittest.TestCase):
12    def setUp(self):
13        pass
14       
15    def tearDown(self):
16        pass
17
18   
19   
20    def test_get_origin(self):
21        g = Geo_reference(56,1.9,1.9)
22        (z,x,y) = g.get_origin()
23
24        self.failUnless(z == g.get_zone(), ' failed')
25        self.failUnless(x == g.get_xllcorner(), ' failed')
26        self.failUnless(y == g.get_yllcorner(), ' failed') 
27       
28    def test_read_write_NetCDF(self):
29        from Scientific.IO.NetCDF import NetCDFFile
30        g = Geo_reference(56,1.9,1.9)
31        file_name = tempfile.mktemp(".geo_referenceTest")
32       
33        out_file = NetCDFFile(file_name, 'w')
34        g.write_NetCDF(out_file)
35        out_file.close()
36       
37        in_file = NetCDFFile(file_name, 'r')
38        new_g = Geo_reference(NetCDFObject=in_file)
39        in_file.close()
40        os.remove(file_name)
41
42        self.failUnless(g == new_g, 'test_read_write_NetCDF failed') 
43       
44    def test_read_write_ASCII(self):
45        from Scientific.IO.NetCDF import NetCDFFile
46        g = Geo_reference(56,1.9,1.9)
47        file_name = tempfile.mktemp(".geo_referenceTest")
48        fd = open(file_name,'w')
49        g.write_ASCII(fd)
50        fd.close()
51       
52        fd = open(file_name,'r')
53        new_g = Geo_reference(ASCIIFile=fd)
54        fd.close()
55        os.remove(file_name)
56
57        self.failUnless(g == new_g, 'test_read_write_ASCII failed') 
58   
59    def test_read_write_ASCII2(self):
60        from Scientific.IO.NetCDF import NetCDFFile
61        g = Geo_reference(56,1.9,1.9)
62        file_name = tempfile.mktemp(".geo_referenceTest")
63        fd = open(file_name,'w')
64        g.write_ASCII(fd)
65        fd.close()       
66        fd = open(file_name,'r')
67        line = fd.readline()
68        new_g = Geo_reference(ASCIIFile=fd, read_title=line)
69        fd.close()
70        os.remove(file_name)
71
72        self.failUnless(g == new_g, 'test_read_write_ASCII failed')
73       
74    def test_read_write_ASCII2(self):
75        from Scientific.IO.NetCDF import NetCDFFile
76        g = Geo_reference(56,1.9,1.9)
77        file_name = tempfile.mktemp(".geo_referenceTest")
78        fd = open(file_name,'w')
79        g.write_ASCII(fd)
80        fd.close()       
81        fd = open(file_name,'r')
82        line = fd.readline()
83        line = "fail !!"
84        try:
85            new_g = Geo_reference(ASCIIFile=fd, read_title=line)
86            fd.close()
87            os.remove(file_name)
88        except SyntaxError:
89            fd.close()
90            os.remove(file_name)
91        else:
92            self.failUnless(0 ==1,
93                        'bad text file did not raise error!')
94           
95    def test_change_points_geo_ref(self):
96        x = 3.0
97        y = 3.0
98        g = Geo_reference(56,x,y)
99        lofl = [[3.0,3.0], [6.0,6.0]]
100        new_lofl = g.change_points_geo_ref(lofl)
101        #print "lofl",lofl
102        #print "new_lofl",new_lofl
103
104        self.failUnless(type(new_lofl) == types.ListType, ' failed')
105        self.failUnless(type(new_lofl) == type(lofl), ' failed')
106        for point,new_point in map(None,lofl,new_lofl):
107            self.failUnless(point[0]-x==new_point[0], ' failed')
108            self.failUnless(point[1]-y==new_point[1], ' failed')
109       
110    def test_change_points_geo_ref2(self):
111        x = 3.0
112        y = 3.0
113        g = Geo_reference(56,x,y)
114        lofl = [[3.0,3.0]]
115        new_lofl = g.change_points_geo_ref(lofl)
116        #print "lofl",lofl
117        #print "new_lofl",new_lofl
118
119        self.failUnless(type(new_lofl) == types.ListType, ' failed')
120        self.failUnless(type(new_lofl) == type(lofl), ' failed')
121        for point,new_point in map(None,lofl,new_lofl):
122            self.failUnless(point[0]-x==new_point[0], ' failed')
123            self.failUnless(point[1]-y==new_point[1], ' failed')
124       
125    def test_change_points_geo_ref3(self):
126        x = 3.0
127        y = 3.0
128        g = Geo_reference(56,x,y)
129        lofl = [3.0,3.0]
130        new_lofl = g.change_points_geo_ref(lofl)
131        #print "lofl",lofl
132        #print "new_lofl",new_lofl
133
134        self.failUnless(type(new_lofl) == types.ListType, ' failed')
135        self.failUnless(type(new_lofl) == type(lofl), ' failed')
136        for point,new_point in map(None,[lofl],new_lofl):
137            self.failUnless(point[0]-x==new_point[0], ' failed')
138            self.failUnless(point[1]-y==new_point[1], ' failed')
139       
140   
141    def test_change_points_geo_ref4(self):
142        x = 3.0
143        y = 3.0
144        g = Geo_reference(56,x,y)
145        lofl = array([[3.0,3.0], [6.0,6.0]])
146        new_lofl = g.change_points_geo_ref(lofl)
147        #print "4 lofl",lofl
148        #print "4 new_lofl",new_lofl
149
150        self.failUnless(type(new_lofl) == ArrayType, ' failed')
151        self.failUnless(type(new_lofl) == type(lofl), ' failed')
152        lofl[:,0] -= x
153        lofl[:,1] -= y
154        assert allclose(lofl,new_lofl)
155       
156    def test_change_points_geo_ref5(self):
157        x = 3.0
158        y = 3.0
159        g = Geo_reference(56,x,y)
160        lofl = array([[3.0,3.0]])
161        new_lofl = g.change_points_geo_ref(lofl)
162        #print "5 lofl",lofl
163        #print "5 new_lofl",new_lofl
164
165        self.failUnless(type(new_lofl) == ArrayType, ' failed')
166        self.failUnless(type(new_lofl) == type(lofl), ' failed')
167        for point,new_point in map(None,lofl,new_lofl):
168            self.failUnless(point[0]-x==new_point[0], ' failed')
169            self.failUnless(point[1]-y==new_point[1], ' failed')
170       
171    def test_change_points_geo_ref6(self):
172        x = 3.0
173        y = 3.0
174        g = Geo_reference(56,x,y)
175        lofl = array([3.0,3.0])
176        new_lofl = g.change_points_geo_ref(lofl)
177        #print "lofl",lofl
178        #print "new_lofl",new_lofl
179
180        self.failUnless(type(new_lofl) == ArrayType, ' failed')
181        self.failUnless(type(new_lofl) == type(lofl), ' failed')
182        for point,new_point in map(None,[lofl],new_lofl):
183            self.failUnless(point[0]-x==new_point[0], ' failed')
184            self.failUnless(point[1]-y==new_point[1], ' failed')
185     
186    def test_change_points_geo_ref7(self):
187        x = 3.0
188        y = 3.0
189        point_x = 9.0
190        point_y = -60.0
191        g = Geo_reference(56,x,y)
192        points_geo_ref = Geo_reference(56,point_x,point_y)
193        lofl = [[3.0,3.0], [6.0,6.0]]
194        new_lofl = g.change_points_geo_ref(lofl,points_geo_ref=points_geo_ref)
195        #print "lofl",lofl
196        #print "new_lofl",new_lofl
197
198        self.failUnless(type(new_lofl) == types.ListType, ' failed')
199        self.failUnless(type(new_lofl) == type(lofl), ' failed')
200        for point,new_point in map(None,lofl,new_lofl):
201            self.failUnless(point[0]+point_x-x==new_point[0], ' failed')
202            self.failUnless(point[1]+point_y-y==new_point[1], ' failed')
203               
204    def test___cmp__(self):
205        g = Geo_reference(56,1.9,1.9,)
206        new_g = Geo_reference(56,1.9,1.9)
207     
208        self.failUnless(g == new_g, 'test___cmp__ failed')   
209       
210       
211       
212#-------------------------------------------------------------
213if __name__ == "__main__":
214
215    suite = unittest.makeSuite(geo_referenceTestCase,'test')
216    runner = unittest.TextTestRunner() #verbosity=2)
217    runner.run(suite)
218   
Note: See TracBrowser for help on using the repository browser.