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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 610 - (hide annotations)
Fri Apr 4 13:56:59 2003 UTC (21 years, 11 months ago) by jonathan
Original Path: trunk/thuban/test/test_classification.py
File MIME type: text/x-python
File size: 9612 byte(s)
Rename Color.None to Color.Transparent.

1 bh 598 # Copyright (c) 2002, 2003 by Intevation GmbH
2 jonathan 369 # 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 jonathan 482 from __future__ import nested_scopes
17    
18 jonathan 369 import unittest
19    
20     import support
21     support.initthuban()
22    
23 jonathan 482 from Thuban.Model.table import *
24     from Thuban.Model.classification import *
25 jonathan 395 from Thuban.Model.layer import Layer
26 jonathan 369
27 jonathan 482 import copy
28 jonathan 369
29 jonathan 482
30 jonathan 369 class TestClassification(unittest.TestCase):
31    
32 jonathan 482 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 jonathan 610 self.assertEqual(props.GetFill(), Color.Transparent)
39 jonathan 482
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 jonathan 610 # 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 jonathan 482
86 jonathan 610 # test GetProperties...also a virtual function
87     #self.assertEqual(group.GetProperties(), None)
88 jonathan 482
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.AddGroup(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])
249    
250 jonathan 369 def test_classification(self):
251     """Test Classification"""
252    
253 jonathan 482 defProps = ClassGroupProperties()
254     red = Color(1, 0, 0)
255     green = Color(0, 1, 0)
256     blue = Color(0, 0, 1)
257    
258 jonathan 494 layer = Layer("asdf", "../Data/iceland/political.dbf")
259 jonathan 395
260 jonathan 369 #
261     # init with no params
262     #
263 jonathan 482 c = Classification()
264 jonathan 446 self.assertEqual(c.GetField(), None)
265 jonathan 482 self.assertEqual(c.GetFieldType(), None)
266     self.assertEqual(c.GetGroup(-1), c.GetDefaultGroup())
267 jonathan 369
268 jonathan 482 c.SetDefaultLineColor(red)
269     self.assertEqual(c.GetDefaultLineColor(), red)
270 jonathan 610 self.assertEqual(c.GetDefaultFill(), Color.Transparent)
271 jonathan 369
272 jonathan 482 c.SetDefaultFill(green)
273     self.assertEqual(c.GetDefaultFill(), green)
274     self.assertEqual(c.GetDefaultLineColor(), red)
275 jonathan 369
276 jonathan 482 c.SetField("hallo")
277     self.assertEqual(c.GetField(), "hallo")
278 jonathan 369
279 jonathan 482 c.SetFieldType(FIELDTYPE_STRING)
280     self.assertEqual(c.GetFieldType(), FIELDTYPE_STRING)
281 jonathan 369
282 jonathan 494 # 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 jonathan 482 c.SetLayer(layer)
288     self.assertEqual(c.GetLayer(), layer)
289 jonathan 494 self.assertEqual(c.GetField(), "AREA")
290     self.assertEqual(c.GetFieldType(), FIELDTYPE_DOUBLE)
291 jonathan 369
292 jonathan 482 c.SetField(None)
293 jonathan 494 self.assertEquals(c.GetFieldType(), None)
294 jonathan 482 self.assertEquals(c.GetGroup(5), c.GetDefaultGroup())
295 jonathan 369
296 jonathan 494 c.SetField("AREA")
297 jonathan 482 s = ClassGroupSingleton(5)
298     c.AddGroup(s)
299     self.assertEquals(c.GetGroup(5), s)
300     self.assertEquals(c.GetGroup(0), c.GetDefaultGroup())
301 jonathan 369
302 jonathan 482 r = ClassGroupRange(-10, 10)
303     c.AddGroup(r)
304     self.assertEquals(c.GetGroup(-11), c.GetDefaultGroup())
305     self.assertEquals(c.GetGroup(-10), r)
306     self.assertEquals(c.GetGroup(9), r)
307     self.assertEquals(c.GetGroup(5), s)
308     self.assertEquals(c.GetGroup(10), c.GetDefaultGroup())
309 jonathan 369
310 bh 598 layer.Destroy()
311    
312 jonathan 369 if __name__ == "__main__":
313 bh 598 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