/[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 395 by jonathan, Mon Feb 10 15:28:02 2003 UTC revision 618 by jonathan, Mon Apr 7 08:58:26 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    
 class TestClassification(unittest.TestCase):  
29    
30      def test_classification(self):  class TestClassification(unittest.TestCase):
         """Test Classification"""  
31    
32          layer = Layer("asdf", "../Data/iceland/political.shp")      def test_ClassGroupProperties(self):
33            """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(layer)          self.assertEqual(props.GetFill(), Color.Transparent)
39          self.assertEqual(c.field, None)  
40          self.assertNotEqual(c.DefaultData, 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(layer)  
         c.SetField("Test")  
         self.assertEqual(c.field, "Test")  
         c.SetField(None)  
         self.assertEqual(c.field, None)  
249    
250          #      def test_classification(self):
251          # init with field          """Test Classification"""
         #  
         c = Classification(layer, "Test")  
         self.assertEqual(c.field, "Test")  
252    
253          #          defProps = ClassGroupProperties()
254          # AddRange          red   = Color(1, 0, 0)
255          #          green = Color(0, 1, 0)
256          c0 = Classification(layer, "c0")          blue  = Color(0, 0, 1)
         default0 = c0.GetDefaultData()  
         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(layer, "c1")  
         default1 = c1.GetDefaultData()  
         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          self.assertEqual(c0.GetProperties(-10), "1")          c.SetField(None)
293          self.assertEqual(c0.GetProperties(-11), default0)          self.assertEquals(c.GetFieldType(), None)
294          self.assertEqual(c0.GetProperties(0), "2") # min <= x < max          self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())
         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'})  
295    
296          #          c.SetField("AREA")
297          # toggle field          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          c0.SetField(None)          layer.Destroy()
         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")  
311    
312  if __name__ == "__main__":  if __name__ == "__main__":
313      unittest.main()      support.run_tests()

Legend:
Removed from v.395  
changed lines
  Added in v.618

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26