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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 409 - (hide annotations)
Wed Feb 19 16:50:39 2003 UTC (22 years ago) by jonathan
Original Path: trunk/thuban/test/test_session.py
File MIME type: text/x-python
File size: 7616 byte(s)
Updated the tests to use the new functions that are in the respective classes.

1 bh 334 # 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 jonathan 409 self.poly_layer.GetClassification().SetDefaultFill(Color(0.0, 0.5, 1.0))
152 bh 334 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 jonathan 409 self.poly_layer.GetClassification().\
159     SetDefaultStroke(Color(0.0, 0.5, 1.0))
160 bh 334 self.assert_(self.session.WasModified())
161     self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
162     (self.session, CHANGED)])
163    
164     def test_forwarding_stroke_width(self):
165     """Test Session's forwarding of Layer.SetStrokeWidth messages"""
166 jonathan 409 self.poly_layer.GetClassification().SetDefaultStrokeWidth(3)
167 bh 334 self.assert_(self.session.WasModified())
168     self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
169     (self.session, CHANGED)])
170    
171     def test_forwarding_visibility(self):
172     """Test Session's forwarding of Layer.SetVisible messages"""
173     self.poly_layer.SetVisible(0)
174     # Currently changing the visibility of a layer doesn't change
175     # the modification flag.
176     self.failIf(self.session.WasModified())
177     self.check_messages([(self.poly_layer, LAYER_VISIBILITY_CHANGED),
178     (self.session, CHANGED)])
179    
180     def test_unset_modified_map(self):
181     """Test Session.UnsetModified with map level changes"""
182     self.failIf(self.session.WasModified())
183     proj = Projection(["zone=26", "proj=utm", "ellps=clrk66"])
184     self.map.SetProjection(proj)
185     self.assert_(self.session.WasModified())
186     self.session.UnsetModified()
187     self.failIf(self.session.WasModified())
188    
189     def test_unset_modified_layer(self):
190     """Test Session.UnsetModified with layer level changes"""
191     self.failIf(self.session.WasModified())
192 jonathan 409 self.poly_layer.GetClassification().SetDefaultStrokeWidth(3)
193 bh 334 self.assert_(self.session.WasModified())
194     self.session.UnsetModified()
195     self.failIf(self.session.WasModified())
196     self.check_messages([(self.poly_layer, LAYER_LEGEND_CHANGED),
197     (self.session, CHANGED),
198     (CHANGED,)])
199    
200    
201     if __name__ == "__main__":
202     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