23 |
from Thuban import _ |
from Thuban import _ |
24 |
from Thuban.Model.proj import Projection, ProjFile, \ |
from Thuban.Model.proj import Projection, ProjFile, \ |
25 |
PROJ_UNITS_METERS, PROJ_UNITS_DEGREES |
PROJ_UNITS_METERS, PROJ_UNITS_DEGREES |
26 |
|
from Thuban.Model.messages import PROJECTION_ADDED, PROJECTION_REMOVED, \ |
27 |
|
PROJECTION_REPLACED |
28 |
import Thuban.Model.resource as resource |
import Thuban.Model.resource as resource |
29 |
|
|
30 |
from xmlsupport import sax_eventlist |
from xmlsupport import sax_eventlist |
131 |
self.assertEquals(proj_file.GetFilename(), "other_name") |
self.assertEquals(proj_file.GetFilename(), "other_name") |
132 |
|
|
133 |
|
|
134 |
class TestProjFile(unittest.TestCase): |
class TestProjFile(unittest.TestCase, support.SubscriberMixin): |
135 |
|
|
136 |
"""Test cases for reading and writing projection files. |
"""Test cases for reading and writing projection files. |
137 |
""" |
""" |
138 |
|
|
139 |
def setUp(self): |
def setUp(self): |
140 |
|
self.clear_messages() |
141 |
self.proj0 = Projection(["proj=tmerc", "ellps=clrk66"]) |
self.proj0 = Projection(["proj=tmerc", "ellps=clrk66"]) |
142 |
self.proj1 = Projection(["proj=utm", "ellps=clrk66"]) |
self.proj1 = Projection(["proj=utm", "ellps=clrk66"]) |
143 |
self.proj2 = Projection(["proj=lcc", "ellps=clrk66", |
self.proj2 = Projection(["proj=lcc", "ellps=clrk66", |
144 |
"lat_1=0", "lat_2=20"]) |
"lat_1=0", "lat_2=20"]) |
145 |
|
self.proj_file = ProjFile("some_filename") |
146 |
|
for msg in [PROJECTION_ADDED, PROJECTION_REMOVED, PROJECTION_REPLACED]: |
147 |
|
self.proj_file.Subscribe(msg, self.subscribe_with_params, msg) |
148 |
|
|
149 |
def test_add_remove(self): |
def test_add_remove(self): |
150 |
"""Test ProjFile.Add() and ProjFile.Remove()""" |
"""Test ProjFile.Add() and ProjFile.Remove()""" |
151 |
proj_file = ProjFile("some_filename") |
self.proj_file.Add(self.proj0) |
152 |
proj_file.Add(self.proj0) |
self.proj_file.Add(self.proj1) |
153 |
proj_file.Add(self.proj1) |
self.assertEquals(self.proj_file.GetProjections(), |
154 |
self.assertEquals(proj_file.GetProjections(), [self.proj0, self.proj1]) |
[self.proj0, self.proj1]) |
155 |
proj_file.Remove(self.proj0) |
self.check_messages([(self.proj0, PROJECTION_ADDED), |
156 |
self.assertEquals(proj_file.GetProjections(), [self.proj1]) |
(self.proj1, PROJECTION_ADDED)]) |
157 |
|
self.clear_messages() |
158 |
|
|
159 |
|
self.proj_file.Remove(self.proj0) |
160 |
|
self.assertEquals(self.proj_file.GetProjections(), [self.proj1]) |
161 |
|
self.check_messages([(self.proj0, PROJECTION_REMOVED)]) |
162 |
|
|
163 |
def test_remove_non_existing(self): |
def test_remove_non_existing(self): |
164 |
"""Test ProjFile.Remove(<proj not in projfile>)""" |
"""Test ProjFile.Remove(<proj not in projfile>)""" |
165 |
proj_file = ProjFile("some_filename") |
self.assertRaises(ValueError, self.proj_file.Remove, self.proj0) |
166 |
self.assertRaises(ValueError, proj_file.Remove, self.proj0) |
# Nothing happened, so no messages should have been sent |
167 |
|
self.check_messages([]) |
168 |
|
|
169 |
def test_replace(self): |
def test_replace(self): |
170 |
"""Test ProjFile.Replace()""" |
"""Test ProjFile.Replace()""" |
171 |
proj_file = ProjFile("some_filename") |
self.proj_file.Add(self.proj0) |
172 |
proj_file.Add(self.proj0) |
self.proj_file.Add(self.proj1) |
173 |
proj_file.Add(self.proj1) |
self.clear_messages() |
174 |
|
|
175 |
# Replace() |
# Replace() |
176 |
proj_file.Replace(self.proj0, self.proj2) |
self.proj_file.Replace(self.proj0, self.proj2) |
177 |
self.assertEquals(proj_file.GetProjections(), [self.proj2, self.proj1]) |
self.assertEquals(self.proj_file.GetProjections(), |
178 |
|
[self.proj2, self.proj1]) |
179 |
|
self.check_messages([(self.proj0, self.proj2, PROJECTION_REPLACED)]) |
180 |
|
|
181 |
def test_replace_non_existing(self): |
def test_replace_non_existing(self): |
182 |
"""Test ProjFile.Replace(<proj not in projfile>, <some proj>)""" |
"""Test ProjFile.Replace(<proj not in projfile>, <some proj>)""" |
183 |
proj_file = ProjFile("some_filename") |
self.proj_file.Add(self.proj0) |
184 |
proj_file.Add(self.proj0) |
self.proj_file.Add(self.proj1) |
185 |
proj_file.Add(self.proj1) |
self.clear_messages() |
186 |
self.assertRaises(ValueError, |
self.assertRaises(ValueError, |
187 |
proj_file.Replace, self.proj2, self.proj0) |
self.proj_file.Replace, self.proj2, self.proj0) |
188 |
|
# All projections should still be there |
189 |
|
self.assertEquals(self.proj_file.GetProjections(), |
190 |
|
[self.proj0, self.proj1]) |
191 |
|
# Nothing happened, so no messages should have been sent |
192 |
|
self.check_messages([]) |
193 |
|
|
194 |
|
|
195 |
class ProjFileTest(unittest.TestCase, support.FileTestMixin, |
class ProjFileTest(unittest.TestCase, support.FileTestMixin, |