/[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 446 by jonathan, Thu Feb 27 16:05:10 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  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_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):      def test_classification(self):
251          """Test Classification"""          """Test Classification"""
252    
253          layer = Layer("asdf", "../Data/iceland/political.shp")          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          # init with no params
262          #          #
263          c = Classification(layer)          c = Classification()
264          self.assertEqual(c.GetField(), None)          self.assertEqual(c.GetField(), None)
265          self.assertNotEqual(c.GetDefaultGroup(), None)          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    
         #  
         # SetField  
         #  
         c = Classification(layer)  
         c.SetField("Test")  
         self.assertEqual(c.field, "Test")  
292          c.SetField(None)          c.SetField(None)
293          self.assertEqual(c.field, None)          self.assertEquals(c.GetFieldType(), None)
294            self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())
295    
296          #          c.SetField("AREA")
297          # init with field          s = ClassGroupSingleton(5)
298          #          c.AppendGroup(s)
299          c = Classification(layer, "Test")          self.assertEquals(c.FindGroup(5), s)
300          self.assertEqual(c.field, "Test")          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          # GetProperties  
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  #       self.assertEqual(c0.GetProperties(-10), "1")          layer.Destroy()
 #       self.assertEqual(c0.GetProperties(-11), default0)  
 #       self.assertEqual(c0.GetProperties(0), "2") # min <= x < max  
 #       self.assertEqual(c0.GetProperties(10), default0)  
 #       self.assertEqual(c0.GetProperties(11), default0)  
   
 #       self.assertEqual(c1.GetProperties(0), "1")  
 #       self.assertEqual(c1.GetProperties("0"), "2")  
 #       self.assertEqual(c1.GetProperties(-1), default1)  
 #       self.assertEqual(c1.GetProperties(1), default1)  
 #       self.assertRaises(TypeError, c1.GetProperties, {'monty':'python'})  
   
 #       #  
 #       # toggle field  
 #       #  
   
 #       c0.SetField(None)  
 #       self.assertEqual(c0.GetProperties(10), default0)  
 #       self.assertEqual(c0.GetProperties(11), default0)  
   
 #       c1.SetField(None)  
 #       self.assertEqual(c1.GetProperties(0), default1)  
 #       self.assertEqual(c1.GetProperties("0"), default1)  
   
 #       c0.SetField("c0")  
 #       self.assertEqual(c0.GetProperties(10), default0)  
 #       self.assertEqual(c0.GetProperties(11), default0)  
   
 #       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.446  
changed lines
  Added in v.656

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26