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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 369 by jonathan, Mon Jan 27 11:53:51 2003 UTC revision 656 by jonathan, Fri Apr 11 15:50:27 2003 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002 by Intevation GmbH  # Copyright (c) 2002, 2003 by Intevation GmbH
2  # Authors:  # Authors:
3  # Jonathan Coles <[email protected]>  # Jonathan Coles <[email protected]>
4  #  #
# Line 13  __version__ = "$Revision$" Line 13  __version__ = "$Revision$"
13  # $Source$  # $Source$
14  # $Id$  # $Id$
15    
16    from __future__ import nested_scopes
17    
18  import unittest  import unittest
19    
20  import support  import support
21  support.initthuban()  support.initthuban()
22    
23  from Thuban.Model.classification import Classification  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):  class TestClassification(unittest.TestCase):
31    
32      def test_classification(self):      def test_ClassGroupProperties(self):
33          """Test Classification"""          """Test ClassGroupProperties"""
34    
35          #          props = ClassGroupProperties()
36          # init with no params          self.assertEqual(props.GetLineColor(), Color.Black)
37          #          self.assertEqual(props.GetLineWidth(), 1)
38          c = Classification()          self.assertEqual(props.GetFill(), Color.Transparent)
39          self.assertEquals(c.field, None)  
40          self.assertEquals(c.NullData, None)          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])
         # setField  
         #  
         c = Classification()  
         c.setField("Test")  
         self.assertEquals(c.field, "Test")  
         c.setField(None)  
         self.assertEquals(c.field, None)  
249    
250          #      def test_classification(self):
251          # init with field          """Test Classification"""
         #  
         c = Classification("Test")  
         self.assertEquals(c.field, "Test")  
         self.assertEquals(c.NullData, None)  
252    
253          #          defProps = ClassGroupProperties()
254          # addRange          red   = Color(1, 0, 0)
255          #          green = Color(0, 1, 0)
256          c0 = Classification("c0")          blue  = Color(0, 0, 1)
         self.assertRaises(ValueError, c0.addRange, 0, 0, None)  
         self.assertRaises(ValueError, c0.addRange, 10, 0, None)  
         c0.addRange(-10, 0, "1")  
         c0.addRange(0, 10, "2")  
257    
258          #          layer = Layer("asdf", "../Data/iceland/political.dbf")
         # addPoint  
         #  
         c1 = Classification("c1")  
         c1.addPoint(0, "1")  
         c1.addPoint("0", "2")  
         self.assertRaises(TypeError, c1.addPoint, {'monty':'python'}, "3")  
259    
260          #          #
261          # getProperties          # 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          self.assertEqual(c0.getProperties(-10), "1")          clazz = copy.deepcopy(c)
         self.assertEqual(c0.getProperties(-11), None)  
         self.assertEqual(c0.getProperties(0), "2") # min <= x < max  
         self.assertEqual(c0.getProperties(10), None)  
         self.assertEqual(c0.getProperties(11), None)  
   
         self.assertEqual(c1.getProperties(0), "1")  
         self.assertEqual(c1.getProperties("0"), "2")  
         self.assertEqual(c1.getProperties(-1), None)  
         self.assertEqual(c1.getProperties(1), None)  
         self.assertRaises(TypeError, c1.getProperties, {'monty':'python'})  
311    
312          #          self.assertEquals(clazz.GetNumGroups(), c.GetNumGroups())
313          # toggle field  
314          #          for i in range(clazz.GetNumGroups()):
315                self.assertEquals(clazz.GetGroup(i), c.GetGroup(i))
316    
317          c0.setField(None)          layer.Destroy()
         self.assertEqual(c0.getProperties(10), None)  
         self.assertEqual(c0.getProperties(11), None)  
   
         c1.setField(None)  
         self.assertEqual(c1.getProperties(0), None)  
         self.assertEqual(c1.getProperties("0"), None)  
   
         c0.setField("c0")  
         self.assertEqual(c0.getProperties(10), None)  
         self.assertEqual(c0.getProperties(11), None)  
   
         c1.setField("c1")  
         self.assertEqual(c1.getProperties(0), "1")  
         self.assertEqual(c1.getProperties("0"), "2")  
318    
319  if __name__ == "__main__":  if __name__ == "__main__":
320      unittest.main()      support.run_tests()

Legend:
Removed from v.369  
changed lines
  Added in v.656

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26