/[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 656 - (show annotations)
Fri Apr 11 15:50:27 2003 UTC (21 years, 10 months ago) by jonathan
Original Path: trunk/thuban/test/test_classification.py
File MIME type: text/x-python
File size: 9845 byte(s)
Added test for copying of classifications.

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.Transparent)
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 # Matches() is a virtual function...can't test it here
80 #
81 #self.assertEqual(group.Matches(None), False)
82 #self.assertEqual(group.Matches(1), False)
83 #self.assertEqual(group.Matches("hallo"), False)
84 #self.assertEqual(group.Matches([]), False)
85
86 # test GetProperties...also a virtual function
87 #self.assertEqual(group.GetProperties(), None)
88
89 def test_ClassGroupDefault(self):
90 """Test ClassGroupDefault"""
91
92 defProps = ClassGroupProperties()
93
94 newProps = ClassGroupProperties()
95 newProps.SetLineColor(Color(.25, .5, .75))
96 newProps.SetLineWidth(5)
97 newProps.SetFill(Color(.12, .24, .36))
98
99 # test constructor
100
101 group = ClassGroupDefault(newProps)
102 self.assertEqual(group.GetProperties(), newProps)
103
104 group = ClassGroupDefault(newProps, "hallo")
105 self.assertEqual(group.GetProperties(), newProps)
106 self.assertEqual(group.GetLabel(), "hallo")
107
108 # test empty constructor
109 group = ClassGroupDefault()
110 props = group.GetProperties()
111
112 self.assertEqual(group.GetLabel(), "")
113 self.assertEqual(defProps, props)
114
115 # test Matches()
116 self.assertEqual(group.Matches(None), True)
117 self.assertEqual(group.Matches(1), True)
118 self.assertEqual(group.Matches("hallo"), True)
119 self.assertEqual(group.Matches([]), True)
120
121 # test SetProperties()/GetProperties()
122 group.SetProperties(newProps)
123 self.assertEqual(group.GetProperties(), newProps)
124
125 # test copy
126 groupCopy = copy.copy(group)
127 self.assertEqual(group, groupCopy)
128
129 def test_ClassGroupRange(self):
130 """Test ClassGroupRange"""
131
132 defProps = ClassGroupProperties()
133 newProps = ClassGroupProperties()
134 newProps.SetLineColor(Color(.25, .5, .75))
135 newProps.SetLineWidth(5)
136 newProps.SetFill(Color(.12, .24, .36))
137
138 # test empty constructor
139 group = ClassGroupRange()
140
141 self.assertEqual(group.GetMin(), 0)
142 self.assertEqual(group.GetMax(), 1)
143 self.assertEqual(group.GetProperties(), defProps)
144 self.assertEqual(group.GetLabel(), "")
145
146 # test SetMax()
147 self.assertRaises(ValueError, group.SetMax, 0)
148 self.assertRaises(ValueError, group.SetMax, -1)
149 self.assertEquals(group.GetMax(), 1)
150 group.SetMax(2)
151 self.assertEquals(group.GetMax(), 2)
152
153 # test SetMin()
154 self.assertRaises(ValueError, group.SetMin, 2)
155 self.assertRaises(ValueError, group.SetMin, 3)
156 self.assertEquals(group.GetMin(), 0)
157 group.SetMin(-5)
158 self.assertEquals(group.GetMin(), -5)
159
160 # test SetProperties()/GetProperties()
161 group.SetProperties(newProps)
162 self.assertEqual(group.GetProperties(), newProps)
163
164 # test SetRange()
165 self.assertRaises(ValueError, group.SetRange, 1, 0)
166 group.SetRange(-5, 5)
167 self.assertEqual(group.GetRange(), (-5, 5))
168
169 # test Matches()
170 self.assertEqual(group.Matches(-6), False)
171 self.assertEqual(group.Matches(-5), True)
172 self.assertEqual(group.Matches(0), True)
173 self.assertEqual(group.Matches(4), True)
174 self.assertEqual(group.Matches(5), False)
175
176 # test copy
177 groupCopy = copy.copy(group)
178 self.assertEqual(group, groupCopy)
179
180 def test_ClassGroupSingleton(self):
181 """Test ClassGroupSingleton"""
182
183 defProps = ClassGroupProperties()
184 newProps = ClassGroupProperties()
185 newProps.SetLineColor(Color(.25, .5, .75))
186 newProps.SetLineWidth(5)
187 newProps.SetFill(Color(.12, .24, .36))
188
189 # test empty constructor
190 group = ClassGroupSingleton()
191
192 self.assertEqual(group.GetValue(), 0)
193 self.assertEqual(group.GetProperties(), defProps)
194 self.assertEqual(group.GetLabel(), "")
195
196 # test SetProperties()/GetProperties()
197 group.SetProperties(newProps)
198 self.assertEqual(group.GetProperties(), newProps)
199
200 # test SetValue()
201 group.SetValue(5)
202 self.assertEqual(group.GetValue(), 5)
203
204 # test Matches()
205 self.assertEqual(group.Matches(0), False)
206 self.assertEqual(group.Matches(5), True)
207
208 group.SetValue("5")
209 self.assertNotEqual(group.GetValue(), 5)
210
211 # test Matches()
212 self.assertEqual(group.Matches(5), False)
213 self.assertEqual(group.Matches("5"), True)
214
215 group.SetValue("hallo")
216 self.assertEqual(group.GetValue(), "hallo")
217
218 # test Matches()
219 self.assertEqual(group.Matches("HALLO"), False)
220 self.assertEqual(group.Matches("hallo"), True)
221
222 # test copy
223 groupCopy = copy.copy(group)
224 self.assertEqual(group, groupCopy)
225
226
227 def test_ClassIterator(self):
228 """Test ClassIterator"""
229
230 groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),
231 ClassGroupRange(-3, 3), ClassGroupSingleton(-5),
232 ClassGroupDefault()]
233
234 clazz = Classification()
235
236 for g in groups:
237 clazz.AppendGroup(g)
238
239 def convert(clazz):
240 if isinstance(clazz, ClassGroupDefault): return 0
241 if isinstance(clazz, ClassGroupSingleton): return 1
242 if isinstance(clazz, ClassGroupRange): return 2
243
244 list = []
245 for g in clazz:
246 list.append(convert(g))
247
248 self.assertEquals(list, [0, 1, 1, 2, 1, 0])
249
250 def test_classification(self):
251 """Test Classification"""
252
253 defProps = ClassGroupProperties()
254 red = Color(1, 0, 0)
255 green = Color(0, 1, 0)
256 blue = Color(0, 0, 1)
257
258 layer = Layer("asdf", "../Data/iceland/political.dbf")
259
260 #
261 # init with no params
262 #
263 c = Classification()
264 self.assertEqual(c.GetField(), None)
265 self.assertEqual(c.GetFieldType(), None)
266 self.assertEqual(c.FindGroup(-1), c.GetDefaultGroup())
267
268 c.SetDefaultLineColor(red)
269 self.assertEqual(c.GetDefaultLineColor(), red)
270 self.assertEqual(c.GetDefaultFill(), Color.Transparent)
271
272 c.SetDefaultFill(green)
273 self.assertEqual(c.GetDefaultFill(), green)
274 self.assertEqual(c.GetDefaultLineColor(), red)
275
276 c.SetField("hallo")
277 self.assertEqual(c.GetField(), "hallo")
278
279 c.SetFieldType(FIELDTYPE_STRING)
280 self.assertEqual(c.GetFieldType(), FIELDTYPE_STRING)
281
282 # should raise an exception because 'hallo' doesn't
283 # exist in the table
284 self.assertRaises(ValueError, c.SetLayer, layer)
285
286 c.SetField("AREA")
287 c.SetLayer(layer)
288 self.assertEqual(c.GetLayer(), layer)
289 self.assertEqual(c.GetField(), "AREA")
290 self.assertEqual(c.GetFieldType(), FIELDTYPE_DOUBLE)
291
292 c.SetField(None)
293 self.assertEquals(c.GetFieldType(), None)
294 self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())
295
296 c.SetField("AREA")
297 s = ClassGroupSingleton(5)
298 c.AppendGroup(s)
299 self.assertEquals(c.FindGroup(5), s)
300 self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())
301
302 r = ClassGroupRange(-10, 10)
303 c.AppendGroup(r)
304 self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())
305 self.assertEquals(c.FindGroup(-10), r)
306 self.assertEquals(c.FindGroup(9), r)
307 self.assertEquals(c.FindGroup(5), s)
308 self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())
309
310 clazz = copy.deepcopy(c)
311
312 self.assertEquals(clazz.GetNumGroups(), c.GetNumGroups())
313
314 for i in range(clazz.GetNumGroups()):
315 self.assertEquals(clazz.GetGroup(i), c.GetGroup(i))
316
317 layer.Destroy()
318
319 if __name__ == "__main__":
320 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