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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 598 - (show annotations)
Thu Apr 3 11:37:10 2003 UTC (21 years, 11 months ago) by bh
Original Path: trunk/thuban/test/test_classification.py
File MIME type: text/x-python
File size: 9494 byte(s)
Use support.run_tests instead of
unittest.main so we get memory leak information
(TestClassification.test_classification): Call the layer's Destroy
method to fix a memory leak.

1 # Copyright (c) 2002, 2003 by Intevation GmbH
2 # Authors:
3 # Jonathan Coles <[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 Classification class
10 """
11
12 __version__ = "$Revision$"
13 # $Source$
14 # $Id$
15
16 from __future__ import nested_scopes
17
18 import unittest
19
20 import support
21 support.initthuban()
22
23 from Thuban.Model.table import *
24 from Thuban.Model.classification import *
25 from Thuban.Model.layer import Layer
26
27 import copy
28
29
30 class TestClassification(unittest.TestCase):
31
32 def test_ClassGroupProperties(self):
33 """Test ClassGroupProperties"""
34
35 props = ClassGroupProperties()
36 self.assertEqual(props.GetLineColor(), Color.Black)
37 self.assertEqual(props.GetLineWidth(), 1)
38 self.assertEqual(props.GetFill(), Color.None)
39
40 red = Color(1, 0, 0)
41 props.SetLineColor(red)
42 self.assertEqual(props.GetLineColor(), red)
43
44 blue = Color(0, 0, 1)
45 props.SetLineColor(blue)
46 self.assertEqual(props.GetLineColor(), blue)
47
48 props.SetLineWidth(10)
49 self.assertEqual(props.GetLineWidth(), 10)
50
51 self.assertRaises(ValueError, props.SetLineWidth, -10)
52 self.assertEqual(props.GetLineWidth(), 10)
53
54 newProps1 = ClassGroupProperties()
55 newProps2 = ClassGroupProperties()
56 self.assertNotEqual(newProps1, props)
57 self.assertEqual(newProps1, newProps2)
58
59 def test_ClassGroup(self):
60 """Test ClassGroup"""
61
62 # test constructor with no label
63 group = ClassGroup()
64 self.assertEqual(group.GetLabel(), "")
65
66 # test constructor with label
67 group = ClassGroup("hallo")
68 self.assertEqual(group.GetLabel(), "hallo")
69
70 # test SetLabel()/GetLabel()
71 group = ClassGroup("welt")
72 group.SetLabel("hallo")
73 self.assertEqual(group.GetLabel(), "hallo")
74
75 group.SetLabel("")
76 self.assertEqual(group.GetLabel(), "")
77
78 # test Matches
79 self.assertEqual(group.Matches(None), False)
80 self.assertEqual(group.Matches(1), False)
81 self.assertEqual(group.Matches("hallo"), False)
82 self.assertEqual(group.Matches([]), False)
83
84 # test GetProperties
85 self.assertEqual(group.GetProperties(), None)
86
87 def test_ClassGroupDefault(self):
88 """Test ClassGroupDefault"""
89
90 defProps = ClassGroupProperties()
91
92 newProps = ClassGroupProperties()
93 newProps.SetLineColor(Color(.25, .5, .75))
94 newProps.SetLineWidth(5)
95 newProps.SetFill(Color(.12, .24, .36))
96
97 # test constructor
98
99 group = ClassGroupDefault(newProps)
100 self.assertEqual(group.GetProperties(), newProps)
101
102 group = ClassGroupDefault(newProps, "hallo")
103 self.assertEqual(group.GetProperties(), newProps)
104 self.assertEqual(group.GetLabel(), "hallo")
105
106 # test empty constructor
107 group = ClassGroupDefault()
108 props = group.GetProperties()
109
110 self.assertEqual(group.GetLabel(), "")
111 self.assertEqual(defProps, props)
112
113 # test Matches()
114 self.assertEqual(group.Matches(None), True)
115 self.assertEqual(group.Matches(1), True)
116 self.assertEqual(group.Matches("hallo"), True)
117 self.assertEqual(group.Matches([]), True)
118
119 # test SetProperties()/GetProperties()
120 group.SetProperties(newProps)
121 self.assertEqual(group.GetProperties(), newProps)
122
123 # test copy
124 groupCopy = copy.copy(group)
125 self.assertEqual(group, groupCopy)
126
127 def test_ClassGroupRange(self):
128 """Test ClassGroupRange"""
129
130 defProps = ClassGroupProperties()
131 newProps = ClassGroupProperties()
132 newProps.SetLineColor(Color(.25, .5, .75))
133 newProps.SetLineWidth(5)
134 newProps.SetFill(Color(.12, .24, .36))
135
136 # test empty constructor
137 group = ClassGroupRange()
138
139 self.assertEqual(group.GetMin(), 0)
140 self.assertEqual(group.GetMax(), 1)
141 self.assertEqual(group.GetProperties(), defProps)
142 self.assertEqual(group.GetLabel(), "")
143
144 # test SetMax()
145 self.assertRaises(ValueError, group.SetMax, 0)
146 self.assertRaises(ValueError, group.SetMax, -1)
147 self.assertEquals(group.GetMax(), 1)
148 group.SetMax(2)
149 self.assertEquals(group.GetMax(), 2)
150
151 # test SetMin()
152 self.assertRaises(ValueError, group.SetMin, 2)
153 self.assertRaises(ValueError, group.SetMin, 3)
154 self.assertEquals(group.GetMin(), 0)
155 group.SetMin(-5)
156 self.assertEquals(group.GetMin(), -5)
157
158 # test SetProperties()/GetProperties()
159 group.SetProperties(newProps)
160 self.assertEqual(group.GetProperties(), newProps)
161
162 # test SetRange()
163 self.assertRaises(ValueError, group.SetRange, 1, 0)
164 group.SetRange(-5, 5)
165 self.assertEqual(group.GetRange(), (-5, 5))
166
167 # test Matches()
168 self.assertEqual(group.Matches(-6), False)
169 self.assertEqual(group.Matches(-5), True)
170 self.assertEqual(group.Matches(0), True)
171 self.assertEqual(group.Matches(4), True)
172 self.assertEqual(group.Matches(5), False)
173
174 # test copy
175 groupCopy = copy.copy(group)
176 self.assertEqual(group, groupCopy)
177
178 def test_ClassGroupSingleton(self):
179 """Test ClassGroupSingleton"""
180
181 defProps = ClassGroupProperties()
182 newProps = ClassGroupProperties()
183 newProps.SetLineColor(Color(.25, .5, .75))
184 newProps.SetLineWidth(5)
185 newProps.SetFill(Color(.12, .24, .36))
186
187 # test empty constructor
188 group = ClassGroupSingleton()
189
190 self.assertEqual(group.GetValue(), 0)
191 self.assertEqual(group.GetProperties(), defProps)
192 self.assertEqual(group.GetLabel(), "")
193
194 # test SetProperties()/GetProperties()
195 group.SetProperties(newProps)
196 self.assertEqual(group.GetProperties(), newProps)
197
198 # test SetValue()
199 group.SetValue(5)
200 self.assertEqual(group.GetValue(), 5)
201
202 # test Matches()
203 self.assertEqual(group.Matches(0), False)
204 self.assertEqual(group.Matches(5), True)
205
206 group.SetValue("5")
207 self.assertNotEqual(group.GetValue(), 5)
208
209 # test Matches()
210 self.assertEqual(group.Matches(5), False)
211 self.assertEqual(group.Matches("5"), True)
212
213 group.SetValue("hallo")
214 self.assertEqual(group.GetValue(), "hallo")
215
216 # test Matches()
217 self.assertEqual(group.Matches("HALLO"), False)
218 self.assertEqual(group.Matches("hallo"), True)
219
220 # test copy
221 groupCopy = copy.copy(group)
222 self.assertEqual(group, groupCopy)
223
224
225 def test_ClassIterator(self):
226 """Test ClassIterator"""
227
228 groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),
229 ClassGroupRange(-3, 3), ClassGroupSingleton(-5),
230 ClassGroupDefault()]
231
232 clazz = Classification()
233
234 for g in groups:
235 clazz.AddGroup(g)
236
237 def convert(clazz):
238 if isinstance(clazz, ClassGroupDefault): return 0
239 if isinstance(clazz, ClassGroupSingleton): return 1
240 if isinstance(clazz, ClassGroupRange): return 2
241
242 list = []
243 for g in clazz:
244 list.append(convert(g))
245
246 self.assertEquals(list, [0, 1, 1, 2, 1])
247
248 def test_classification(self):
249 """Test Classification"""
250
251 defProps = ClassGroupProperties()
252 red = Color(1, 0, 0)
253 green = Color(0, 1, 0)
254 blue = Color(0, 0, 1)
255
256 layer = Layer("asdf", "../Data/iceland/political.dbf")
257
258 #
259 # init with no params
260 #
261 c = Classification()
262 self.assertEqual(c.GetField(), None)
263 self.assertEqual(c.GetFieldType(), None)
264 self.assertEqual(c.GetGroup(-1), c.GetDefaultGroup())
265
266 c.SetDefaultLineColor(red)
267 self.assertEqual(c.GetDefaultLineColor(), red)
268 self.assertEqual(c.GetDefaultFill(), Color.None)
269
270 c.SetDefaultFill(green)
271 self.assertEqual(c.GetDefaultFill(), green)
272 self.assertEqual(c.GetDefaultLineColor(), red)
273
274 c.SetField("hallo")
275 self.assertEqual(c.GetField(), "hallo")
276
277 c.SetFieldType(FIELDTYPE_STRING)
278 self.assertEqual(c.GetFieldType(), FIELDTYPE_STRING)
279
280 # should raise an exception because 'hallo' doesn't
281 # exist in the table
282 self.assertRaises(ValueError, c.SetLayer, layer)
283
284 c.SetField("AREA")
285 c.SetLayer(layer)
286 self.assertEqual(c.GetLayer(), layer)
287 self.assertEqual(c.GetField(), "AREA")
288 self.assertEqual(c.GetFieldType(), FIELDTYPE_DOUBLE)
289
290 c.SetField(None)
291 self.assertEquals(c.GetFieldType(), None)
292 self.assertEquals(c.GetGroup(5), c.GetDefaultGroup())
293
294 c.SetField("AREA")
295 s = ClassGroupSingleton(5)
296 c.AddGroup(s)
297 self.assertEquals(c.GetGroup(5), s)
298 self.assertEquals(c.GetGroup(0), c.GetDefaultGroup())
299
300 r = ClassGroupRange(-10, 10)
301 c.AddGroup(r)
302 self.assertEquals(c.GetGroup(-11), c.GetDefaultGroup())
303 self.assertEquals(c.GetGroup(-10), r)
304 self.assertEquals(c.GetGroup(9), r)
305 self.assertEquals(c.GetGroup(5), s)
306 self.assertEquals(c.GetGroup(10), c.GetDefaultGroup())
307
308 layer.Destroy()
309
310 if __name__ == "__main__":
311 support.run_tests()

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26