1 |
# Copyright (c) 2002 by Intevation GmbH |
# Copyright (c) 2002, 2003 by Intevation GmbH |
2 |
# Authors: |
# Authors: |
3 |
# Bernhard Herzog <[email protected]> |
# Bernhard Herzog <[email protected]> |
4 |
# |
# |
20 |
support.initthuban() |
support.initthuban() |
21 |
|
|
22 |
from Thuban.Model.messages import CHANGED, MAPS_CHANGED, FILENAME_CHANGED, \ |
from Thuban.Model.messages import CHANGED, MAPS_CHANGED, FILENAME_CHANGED, \ |
23 |
MAP_PROJECTION_CHANGED, LAYERS_CHANGED, \ |
MAP_PROJECTION_CHANGED, MAP_LAYERS_CHANGED, \ |
24 |
LAYER_VISIBILITY_CHANGED, LAYER_LEGEND_CHANGED |
LAYER_VISIBILITY_CHANGED, LAYER_CHANGED |
25 |
from Thuban.Model.session import Session |
from Thuban.Model.session import Session |
26 |
from Thuban.Model.map import Map |
from Thuban.Model.map import Map |
27 |
from Thuban.Model.layer import Layer |
from Thuban.Model.layer import Layer |
38 |
session = Session("Test Session") |
session = Session("Test Session") |
39 |
self.assertEquals(session.Title(), "Test Session") |
self.assertEquals(session.Title(), "Test Session") |
40 |
self.assertEquals(session.Maps(), []) |
self.assertEquals(session.Maps(), []) |
41 |
|
self.assertEquals(session.Tables(), []) |
42 |
|
self.assertEquals(session.ShapeStores(), []) |
43 |
self.assertEquals(session.filename, None) |
self.assertEquals(session.filename, None) |
44 |
self.failIf(session.HasMaps()) |
self.failIf(session.HasMaps()) |
45 |
self.failIf(session.WasModified()) |
self.failIf(session.WasModified()) |
60 |
|
|
61 |
# Create a Session and subscribe to all interesting channels. |
# Create a Session and subscribe to all interesting channels. |
62 |
self.session = Session("Test Session") |
self.session = Session("Test Session") |
63 |
for channel in (CHANGED, MAPS_CHANGED, FILENAME_CHANGED, |
for channel in (CHANGED, |
64 |
MAP_PROJECTION_CHANGED, LAYERS_CHANGED, |
MAPS_CHANGED, |
65 |
LAYER_VISIBILITY_CHANGED, LAYER_LEGEND_CHANGED): |
FILENAME_CHANGED, |
66 |
|
MAP_PROJECTION_CHANGED, |
67 |
|
MAP_LAYERS_CHANGED, |
68 |
|
LAYER_VISIBILITY_CHANGED, |
69 |
|
LAYER_CHANGED): |
70 |
self.session.Subscribe(channel, |
self.session.Subscribe(channel, |
71 |
self.subscribe_with_params, channel) |
self.subscribe_with_params, channel) |
72 |
|
|
73 |
def tearDown(self): |
def tearDown(self): |
74 |
"""Destroy self.session and clear the message list""" |
"""Destroy self.session and clear the message list""" |
75 |
self.session.Destroy() |
self.session.Destroy() |
76 |
|
self.session = None |
77 |
self.clear_messages() |
self.clear_messages() |
78 |
|
|
79 |
|
|
108 |
"""Extend the inherited method to add a non-empty map to self.session |
"""Extend the inherited method to add a non-empty map to self.session |
109 |
""" |
""" |
110 |
TestSessionBase.setUp(self) |
TestSessionBase.setUp(self) |
111 |
|
open_shp = self.session.OpenShapefile |
112 |
self.arc_layer = Layer("Roads", |
self.arc_layer = Layer("Roads", |
113 |
os.path.join("..", "Data", "iceland", |
open_shp(os.path.join("..", "Data", "iceland", |
114 |
"roads-line.shp")) |
"roads-line.shp"))) |
115 |
self.poly_layer = Layer("Political", |
self.poly_layer = Layer("Political", |
116 |
os.path.join("..", "Data", "iceland", |
open_shp(os.path.join("..", "Data", "iceland", |
117 |
"political.shp")) |
"political.shp"))) |
118 |
self.map = Map("A Map") |
self.map = Map("A Map") |
119 |
self.map.AddLayer(self.arc_layer) |
self.map.AddLayer(self.arc_layer) |
120 |
self.map.AddLayer(self.poly_layer) |
self.map.AddLayer(self.poly_layer) |
122 |
self.session.UnsetModified() |
self.session.UnsetModified() |
123 |
self.clear_messages() |
self.clear_messages() |
124 |
|
|
125 |
|
def tearDown(self): |
126 |
|
TestSessionBase.tearDown(self) |
127 |
|
self.arc_layer = self.poly_layer = None |
128 |
|
|
129 |
def test_remove_map(self): |
def test_remove_map(self): |
130 |
"""Test Session.RemoveMap""" |
"""Test Session.RemoveMap""" |
131 |
self.session.RemoveMap(self.map) |
self.session.RemoveMap(self.map) |
160 |
|
|
161 |
def test_forwarding_fill(self): |
def test_forwarding_fill(self): |
162 |
"""Test Session's forwarding of Layer.SetFill messages""" |
"""Test Session's forwarding of Layer.SetFill messages""" |
163 |
self.poly_layer.classification.SetDefaultFill(Color(0.0, 0.5, 1.0)) |
self.poly_layer.GetClassification().SetDefaultFill(Color(0.0, 0.5, 1.0)) |
164 |
self.assert_(self.session.WasModified()) |
self.assert_(self.session.WasModified()) |
165 |
self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED), |
self.check_messages([(self.poly_layer, LAYER_CHANGED), |
166 |
(self.session, CHANGED)]) |
(self.session, CHANGED)]) |
167 |
|
|
168 |
def test_forwarding_stroke(self): |
def test_forwarding_stroke(self): |
169 |
"""Test Session's forwarding of Layer.SetStroke messages""" |
"""Test Session's forwarding of Layer.SetStroke messages""" |
170 |
self.poly_layer.classification.SetDefaultStroke(Color(0.0, 0.5, 1.0)) |
self.poly_layer.GetClassification().\ |
171 |
|
SetDefaultLineColor(Color(0.0, 0.5, 1.0)) |
172 |
self.assert_(self.session.WasModified()) |
self.assert_(self.session.WasModified()) |
173 |
self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED), |
self.check_messages([(self.poly_layer, LAYER_CHANGED), |
174 |
(self.session, CHANGED)]) |
(self.session, CHANGED)]) |
175 |
|
|
176 |
def test_forwarding_stroke_width(self): |
def test_forwarding_stroke_width(self): |
177 |
"""Test Session's forwarding of Layer.SetStrokeWidth messages""" |
"""Test Session's forwarding of Layer.SetStrokeWidth messages""" |
178 |
self.poly_layer.classification.SetDefaultStrokeWidth(3) |
self.poly_layer.GetClassification().SetDefaultLineWidth(3) |
179 |
self.assert_(self.session.WasModified()) |
self.assert_(self.session.WasModified()) |
180 |
self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED), |
self.check_messages([(self.poly_layer, LAYER_CHANGED), |
181 |
(self.session, CHANGED)]) |
(self.session, CHANGED)]) |
182 |
|
|
183 |
def test_forwarding_visibility(self): |
def test_forwarding_visibility(self): |
201 |
def test_unset_modified_layer(self): |
def test_unset_modified_layer(self): |
202 |
"""Test Session.UnsetModified with layer level changes""" |
"""Test Session.UnsetModified with layer level changes""" |
203 |
self.failIf(self.session.WasModified()) |
self.failIf(self.session.WasModified()) |
204 |
self.poly_layer.classification.SetDefaultStrokeWidth(3) |
self.poly_layer.GetClassification().SetDefaultLineWidth(3) |
205 |
self.assert_(self.session.WasModified()) |
self.assert_(self.session.WasModified()) |
206 |
self.session.UnsetModified() |
self.session.UnsetModified() |
207 |
self.failIf(self.session.WasModified()) |
self.failIf(self.session.WasModified()) |
208 |
self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED), |
self.check_messages([(self.poly_layer, LAYER_CHANGED), |
209 |
(self.session, CHANGED), |
(self.session, CHANGED), |
210 |
(CHANGED,)]) |
(CHANGED,)]) |
211 |
|
|
212 |
|
def test_shape_stores(self): |
213 |
|
"""Test Session.ShapeStores()""" |
214 |
|
# Strictly speaking the session doesn't make guarantees about |
215 |
|
# the order of the ShapeStores in the list, but currently it's |
216 |
|
# deterministic and they're listed in the order in which they |
217 |
|
# were created |
218 |
|
self.assertEquals(self.session.ShapeStores(), |
219 |
|
[self.arc_layer.ShapeStore(), |
220 |
|
self.poly_layer.ShapeStore()]) |
221 |
|
# If we remove the map from the session and clear our instance |
222 |
|
# variables that hold the layers and the map the list should |
223 |
|
# become empty again. |
224 |
|
self.session.RemoveMap(self.map) |
225 |
|
self.arc_layer = self.poly_layer = self.map = None |
226 |
|
self.assertEquals(self.session.ShapeStores(), []) |
227 |
|
|
228 |
|
def test_tables(self): |
229 |
|
"""Test Session.Tables()""" |
230 |
|
# Strictly speaking the session doesn't make guarantees about |
231 |
|
# the order of the tables in the list, but currently it's |
232 |
|
# deterministic and they're listed in the order in which they |
233 |
|
# were opened |
234 |
|
self.assertEquals(self.session.Tables(), |
235 |
|
[self.arc_layer.ShapeStore().Table(), |
236 |
|
self.poly_layer.ShapeStore().Table()]) |
237 |
|
# If we remove the map from the session and clear our instance |
238 |
|
# variables that hold the layers and the map the list should |
239 |
|
# become empty again. |
240 |
|
self.session.RemoveMap(self.map) |
241 |
|
self.arc_layer = self.poly_layer = self.map = None |
242 |
|
self.assertEquals(self.session.Tables(), []) |
243 |
|
|
244 |
|
|
245 |
if __name__ == "__main__": |
if __name__ == "__main__": |
246 |
unittest.main() |
unittest.main() |