/[thuban]/branches/WIP-pyshapelib-bramz/test/test_session.py
ViewVC logotype

Contents of /branches/WIP-pyshapelib-bramz/test/test_session.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 395 - (show annotations)
Mon Feb 10 15:28:02 2003 UTC (22 years ago) by jonathan
Original Path: trunk/thuban/test/test_session.py
File MIME type: text/x-python
File size: 7582 byte(s)
fix tests to work with new code changes.

1 # Copyright (c) 2002 by Intevation GmbH
2 # Authors:
3 # Bernhard Herzog <[email protected]>
4 #
5 # This program is free software under the GPL (>=v2)
6 # Read the file COPYING coming with Thuban for details.
7
8 """
9 Test the Session class
10 """
11
12 __version__ = "$Revision$"
13 # $Source$
14 # $Id$
15
16 import os
17 import unittest
18
19 import support
20 support.initthuban()
21
22 from Thuban.Model.messages import CHANGED, MAPS_CHANGED, FILENAME_CHANGED, \
23 MAP_PROJECTION_CHANGED, LAYERS_CHANGED, \
24 LAYER_VISIBILITY_CHANGED, LAYER_LEGEND_CHANGED
25 from Thuban.Model.session import Session
26 from Thuban.Model.map import Map
27 from Thuban.Model.layer import Layer
28 from Thuban.Model.proj import Projection
29 from Thuban.Model.color import Color
30
31
32 class TestSessionSimple(unittest.TestCase):
33
34 """Very simple test cases for Session"""
35
36 def test_initial_state(self):
37 """Test Session's initial state"""
38 session = Session("Test Session")
39 self.assertEquals(session.Title(), "Test Session")
40 self.assertEquals(session.Maps(), [])
41 self.assertEquals(session.filename, None)
42 self.failIf(session.HasMaps())
43 self.failIf(session.WasModified())
44 session.Destroy()
45
46
47 class TestSessionBase(unittest.TestCase, support.SubscriberMixin):
48
49 """Base class for Session test cases that test the messages"""
50
51 def setUp(self):
52 """
53 Clear the message list, create a session and subscribe to its messages
54
55 Bind the session to self.session.
56 """
57 self.clear_messages()
58
59 # Create a Session and subscribe to all interesting channels.
60 self.session = Session("Test Session")
61 for channel in (CHANGED, MAPS_CHANGED, FILENAME_CHANGED,
62 MAP_PROJECTION_CHANGED, LAYERS_CHANGED,
63 LAYER_VISIBILITY_CHANGED, LAYER_LEGEND_CHANGED):
64 self.session.Subscribe(channel,
65 self.subscribe_with_params, channel)
66
67 def tearDown(self):
68 """Destroy self.session and clear the message list"""
69 self.session.Destroy()
70 self.clear_messages()
71
72
73 class TestSessionMessages(TestSessionBase):
74
75 """Simple Session test cases that test messges"""
76
77 def test_add_map(self):
78 """Test Session.AddMap"""
79 self.failIf(self.session.WasModified())
80 map = Map("Some Map")
81 self.session.AddMap(map)
82 self.assert_(self.session.HasMaps())
83 self.assert_(self.session.WasModified())
84 self.assertEquals(self.session.Maps(), [map])
85 self.check_messages([(MAPS_CHANGED,),
86 (self.session, CHANGED)])
87
88 def test_set_filename(self):
89 """Test Session.SetFilename"""
90 self.session.SetFilename("session_set_filename_test")
91 self.session.filename = "session_set_filename_test"
92 self.check_messages([(FILENAME_CHANGED,),
93 (self.session, CHANGED)])
94
95
96 class TestSessionWithContent(TestSessionBase):
97
98 """Session test cases that start with a filled session."""
99
100 def setUp(self):
101 """Extend the inherited method to add a non-empty map to self.session
102 """
103 TestSessionBase.setUp(self)
104 self.arc_layer = Layer("Roads",
105 os.path.join("..", "Data", "iceland",
106 "roads-line.shp"))
107 self.poly_layer = Layer("Political",
108 os.path.join("..", "Data", "iceland",
109 "political.shp"))
110 self.map = Map("A Map")
111 self.map.AddLayer(self.arc_layer)
112 self.map.AddLayer(self.poly_layer)
113 self.session.AddMap(self.map)
114 self.session.UnsetModified()
115 self.clear_messages()
116
117 def test_remove_map(self):
118 """Test Session.RemoveMap"""
119 self.session.RemoveMap(self.map)
120 self.assert_(self.session.WasModified())
121 self.failIf(self.session.HasMaps())
122 self.check_messages([(MAPS_CHANGED,),
123 (self.session, CHANGED)])
124
125 def test_tree_info(self):
126 """Test Session.TreeInfo"""
127 self.assertEquals(self.session.TreeInfo(),
128 ('Session: Test Session',
129 ['Filename:',
130 'Unmodified',
131 self.map]))
132
133 def test_forward_map_projection(self):
134 """Test Session forwarding of Map.SetProjection messages"""
135 proj = Projection(["zone=26", "proj=utm", "ellps=clrk66"])
136 self.map.SetProjection(proj)
137 self.check_messages([(self.map, MAP_PROJECTION_CHANGED),
138 (self.session, CHANGED)])
139 self.assert_(self.session.WasModified())
140
141 def test_forward_map_projection(self):
142 """Test Session forwarding of Map.SetProjection messages"""
143 proj = Projection(["zone=26", "proj=utm", "ellps=clrk66"])
144 self.map.SetProjection(proj)
145 self.assert_(self.session.WasModified())
146 self.check_messages([(self.map, MAP_PROJECTION_CHANGED),
147 (self.session, CHANGED)])
148
149 def test_forwarding_fill(self):
150 """Test Session's forwarding of Layer.SetFill messages"""
151 self.poly_layer.classification.SetDefaultFill(Color(0.0, 0.5, 1.0))
152 self.assert_(self.session.WasModified())
153 self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
154 (self.session, CHANGED)])
155
156 def test_forwarding_stroke(self):
157 """Test Session's forwarding of Layer.SetStroke messages"""
158 self.poly_layer.classification.SetDefaultStroke(Color(0.0, 0.5, 1.0))
159 self.assert_(self.session.WasModified())
160 self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
161 (self.session, CHANGED)])
162
163 def test_forwarding_stroke_width(self):
164 """Test Session's forwarding of Layer.SetStrokeWidth messages"""
165 self.poly_layer.classification.SetDefaultStrokeWidth(3)
166 self.assert_(self.session.WasModified())
167 self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
168 (self.session, CHANGED)])
169
170 def test_forwarding_visibility(self):
171 """Test Session's forwarding of Layer.SetVisible messages"""
172 self.poly_layer.SetVisible(0)
173 # Currently changing the visibility of a layer doesn't change
174 # the modification flag.
175 self.failIf(self.session.WasModified())
176 self.check_messages([(self.poly_layer, LAYER_VISIBILITY_CHANGED),
177 (self.session, CHANGED)])
178
179 def test_unset_modified_map(self):
180 """Test Session.UnsetModified with map level changes"""
181 self.failIf(self.session.WasModified())
182 proj = Projection(["zone=26", "proj=utm", "ellps=clrk66"])
183 self.map.SetProjection(proj)
184 self.assert_(self.session.WasModified())
185 self.session.UnsetModified()
186 self.failIf(self.session.WasModified())
187
188 def test_unset_modified_layer(self):
189 """Test Session.UnsetModified with layer level changes"""
190 self.failIf(self.session.WasModified())
191 self.poly_layer.classification.SetDefaultStrokeWidth(3)
192 self.assert_(self.session.WasModified())
193 self.session.UnsetModified()
194 self.failIf(self.session.WasModified())
195 self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
196 (self.session, CHANGED),
197 (CHANGED,)])
198
199
200 if __name__ == "__main__":
201 unittest.main()

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26