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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26