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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 327 - (show annotations)
Fri Sep 20 14:06:41 2002 UTC (22 years, 5 months ago) by bh
Original Path: trunk/thuban/test/test_base.py
File MIME type: text/x-python
File size: 4967 byte(s)
New. Test cases for Thuban.Model.base

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 TitledObject and Modifiable
10 """
11
12 __version__ = "$Revision$"
13 # $Source$
14 # $Id$
15
16 import unittest
17
18 import support
19 support.initthuban()
20
21 from Thuban.Model.base import TitledObject, Modifiable
22 from Thuban.Model.messages import TITLE_CHANGED, CHANGED
23 from Thuban.Lib.connector import Publisher
24
25 SOMETHING_ELSE = "SOMETHING_ELSE"
26
27 class SomeTitledObject(TitledObject, Publisher):
28
29 """TitledObject for test purposes.
30
31 TitledObject is not used directly. It's a mixin to be used together
32 with Publisher.
33 """
34
35 class SomeModifiable(Modifiable):
36
37 """Modifiable for test purposes.
38
39 Modifiable is intended to be used as a base class for classes that
40 need to inform other classes when they change and that have to keep
41 track of whether they have changed. Thus we use a derived class for
42 testing that provides some methods that simulate modificatios.
43 """
44
45 def do_something(self):
46 """Call self.changed without parameters"""
47 self.changed()
48
49 def do_something_else(self):
50 """Call self.changed with a message parameter"""
51 self.changed(SOMETHING_ELSE)
52
53
54 class SubscriberTest(unittest.TestCase, support.SubscriberMixin):
55
56 """Base class for test cases that use SubscriberMixin.
57
58 Just provide the default implementations of setUp and tearDown.
59 """
60
61 def setUp(self):
62 """Clear the list of received messages"""
63 self.clear_messages()
64
65 def tearDown(self):
66 """Clear the list of received messages"""
67 self.clear_messages()
68
69
70 class TestTitledObject(SubscriberTest):
71
72 """Test cases for TitledObject"""
73
74 def test_titled_object(self):
75 """Test TitledObject"""
76 titled = SomeTitledObject("Some Title")
77 titled.Subscribe(TITLE_CHANGED,
78 self.subscribe_with_params, TITLE_CHANGED)
79
80 self.assertEquals(titled.Title(), "Some Title")
81
82 titled.SetTitle("New Title")
83 self.assertEquals(titled.Title(), "New Title")
84
85 self.check_messages([(titled, TITLE_CHANGED)])
86
87
88 class TestModifiable(SubscriberTest):
89
90 """Test cases for Modifiable"""
91
92 def setUp(self):
93 """Extend the inherited method to create a Modifiable instance.
94
95 Bind the Modifiable instance (actually an instance of
96 SomeModifiable) to self.modifiable and subscribe to its CHANGED
97 and SOMETHING_ELSE channels.
98 """
99 SubscriberTest.setUp(self)
100 self.modifiable = SomeModifiable()
101 self.modifiable.Subscribe(CHANGED, self.subscribe_with_params, CHANGED)
102 self.modifiable.Subscribe(SOMETHING_ELSE,
103 self.subscribe_with_params, SOMETHING_ELSE)
104
105 def tearDown(self):
106 """Extend the inherited method to explicitly destroy self.modifiable.
107 """
108 self.modifiable.Destroy()
109 SubscriberTest.tearDown(self)
110
111 def test_initial_state(self):
112 """Test Modifiable initial state"""
113 # initially a modifiable is unmodified
114 self.failIf(self.modifiable.WasModified())
115 # this test should not have resulted in any messages
116 self.check_messages([])
117
118 def test_silent_change(self):
119 """Test Modifiable method which doesn't issue messages"""
120 self.modifiable.do_something()
121 # Now it should be modified and we should not have received any
122 # message
123 self.assert_(self.modifiable.WasModified())
124 self.check_messages([])
125
126 def test_unset_modified(self):
127 """Test Modifiable.UnsetModified.
128
129 Test whether the UnsetModified does in fact clear the modified
130 flag and whether it issues a CHANGED message if it changes the
131 modified flag from true to false.
132 """
133 # We start with an unmodified object, so when we call
134 # UnsetModified now it shouldn't result in any message.
135 self.modifiable.UnsetModified()
136 self.check_messages([])
137 self.failIf(self.modifiable.WasModified())
138
139 # Call a method that modifies the object silently.
140 self.modifiable.do_something()
141 self.check_messages([])
142 self.assert_(self.modifiable.WasModified())
143
144 # when we now call UnsetModified it should result in a CHANGED
145 # message
146 self.modifiable.UnsetModified()
147 self.check_messages([(CHANGED,)])
148 self.failIf(self.modifiable.WasModified())
149
150 def test_issuing_change(self):
151 """Test Modifiable method that issues messages"""
152 self.modifiable.do_something_else()
153 # Now it should be modified and we should have received a
154 # CHANGED message
155 self.check_messages([(SOMETHING_ELSE,)])
156 self.assert_(self.modifiable.WasModified())
157
158
159
160 if __name__ == "__main__":
161 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