/[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 409 by jonathan, Wed Feb 19 16:50:39 2003 UTC revision 1898 by bh, Fri Oct 31 14:38:09 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  import os
24    from Thuban.Model.color import Color, Transparent, Black
25    from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_STRING, FIELDTYPE_DOUBLE
26    from Thuban.Model.classification import \
27        Classification, ClassGroup, \
28        ClassGroupDefault, ClassGroupSingleton, ClassGroupRange,\
29        ClassGroupProperties
30    
31    from Thuban.Model.session import Session
32  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer
33    from Thuban.Model.range import Range
34    
35    import copy
36    
37    
38    class TestClassGroupProperties(unittest.TestCase):
39    
40        def test(self):
41            """Test ClassGroupProperties"""
42    
43            props = ClassGroupProperties()
44            self.assertEqual(props.GetLineColor(), Black)
45            self.assertEqual(props.GetLineWidth(), 1)
46            self.assertEqual(props.GetFill(), Transparent)
47    
48            red = Color(1, 0, 0)
49            props.SetLineColor(red)
50            self.assertEqual(props.GetLineColor(), red)
51    
52            blue = Color(0, 0, 1)
53            props.SetLineColor(blue)
54            self.assertEqual(props.GetLineColor(), blue)
55    
56            props.SetLineWidth(10)
57            self.assertEqual(props.GetLineWidth(), 10)
58    
59            self.assertRaises(ValueError, props.SetLineWidth, -10)
60            self.assertEqual(props.GetLineWidth(), 10)
61    
62            newProps1 = ClassGroupProperties()
63            newProps2 = ClassGroupProperties()
64            self.assertNotEqual(newProps1, props)
65            self.assertEqual(newProps1, newProps2)
66    
67    
68    class TestClassGroup(unittest.TestCase):
69    
70        def test(self):
71            """Test ClassGroup"""
72    
73            # test constructor with no label
74            group = ClassGroup()
75            self.assertEqual(group.GetLabel(), "")
76    
77            # test constructor with label
78            group = ClassGroup("hallo")
79            self.assertEqual(group.GetLabel(), "hallo")
80    
81            # test SetLabel()/GetLabel()
82            group = ClassGroup("welt")
83            group.SetLabel("hallo")
84            self.assertEqual(group.GetLabel(), "hallo")
85    
86            group.SetLabel("")
87            self.assertEqual(group.GetLabel(), "")
88    
89            # test Matches
90            # Matches() is a virtual function...can't test it here
91            #
92            #self.assertEqual(group.Matches(None), False)
93            #self.assertEqual(group.Matches(1), False)
94            #self.assertEqual(group.Matches("hallo"), False)
95            #self.assertEqual(group.Matches([]), False)
96    
97            # test GetProperties...also a virtual function
98            #self.assertEqual(group.GetProperties(), None)
99    
100    
101    class TestClassGroupDefault(unittest.TestCase):
102    
103        def test(self):
104            """Test ClassGroupDefault"""
105    
106            defProps = ClassGroupProperties()
107    
108            newProps = ClassGroupProperties()
109            newProps.SetLineColor(Color(.25, .5, .75))
110            newProps.SetLineWidth(5)
111            newProps.SetFill(Color(.12, .24, .36))
112    
113            # test constructor
114    
115            group = ClassGroupDefault(newProps)
116            self.assertEqual(group.GetProperties(), newProps)
117    
118            group = ClassGroupDefault(newProps, "hallo")
119            self.assertEqual(group.GetProperties(), newProps)
120            self.assertEqual(group.GetLabel(), "hallo")
121    
122            # test empty constructor
123            group = ClassGroupDefault()
124            props = group.GetProperties()
125    
126            self.assertEqual(group.GetLabel(), "")
127            self.assertEqual(defProps, props)
128    
129            # test Matches()
130            self.assertEqual(group.Matches(None), True)
131            self.assertEqual(group.Matches(1), True)
132            self.assertEqual(group.Matches("hallo"), True)
133            self.assertEqual(group.Matches([]), True)
134    
135            # test SetProperties()/GetProperties()
136            group.SetProperties(newProps)
137            self.assertEqual(group.GetProperties(), newProps)
138    
139            # test copy
140            groupCopy = copy.copy(group)
141            self.assertEqual(group, groupCopy)
142    
143    
144    class TestClassGroupRange(unittest.TestCase):
145    
146        def test(self):
147            """Test ClassGroupRange"""
148    
149            defProps = ClassGroupProperties()
150            newProps = ClassGroupProperties()
151            newProps.SetLineColor(Color(.25, .5, .75))
152            newProps.SetLineWidth(5)
153            newProps.SetFill(Color(.12, .24, .36))
154    
155            # test empty constructor
156            group = ClassGroupRange()
157    
158            self.assertEqual(group.GetMin(), 0)
159            self.assertEqual(group.GetMax(), 1)
160            self.assertEqual(group.GetProperties(), defProps)
161            self.assertEqual(group.GetLabel(), "")
162    
163            # test SetMax()
164            self.assertRaises(ValueError, group.SetMax, 0)
165            self.assertRaises(ValueError, group.SetMax, -1)
166            self.assertEquals(group.GetMax(), 1)
167            group.SetMax(2)
168            self.assertEquals(group.GetMax(), 2)
169    
170            # test SetMin()
171            self.assertRaises(ValueError, group.SetMin, 2)
172            self.assertRaises(ValueError, group.SetMin, 3)
173            self.assertEquals(group.GetMin(), 0)
174            group.SetMin(-5)
175            self.assertEquals(group.GetMin(), -5)
176    
177            # test SetProperties()/GetProperties()
178            group.SetProperties(newProps)
179            self.assertEqual(group.GetProperties(), newProps)
180    
181            # test SetRange()
182            self.assertRaises(ValueError, group.SetRange, (1, 0))
183            group.SetRange(Range("]-oo;6]"))
184            self.assertEqual(group.GetRange(), "]-oo;6]")
185            group.SetRange((-5, 5))
186            self.assertEqual(group.GetRange(), "[-5;5[")
187    
188            # test Matches()
189            self.assertEqual(group.Matches(-6), False)
190            self.assertEqual(group.Matches(-5), True)
191            self.assertEqual(group.Matches(0), True)
192            self.assertEqual(group.Matches(4), True)
193            self.assertEqual(group.Matches(5), False)
194    
195            # test copy
196            groupCopy = copy.copy(group)
197            self.assertEqual(group, groupCopy)
198    
199    
200    class TestClassGroupSingleton(unittest.TestCase):
201    
202        def test(self):
203            """Test ClassGroupSingleton"""
204    
205            defProps = ClassGroupProperties()
206            newProps = ClassGroupProperties()
207            newProps.SetLineColor(Color(.25, .5, .75))
208            newProps.SetLineWidth(5)
209            newProps.SetFill(Color(.12, .24, .36))
210    
211            # test empty constructor
212            group = ClassGroupSingleton()
213    
214            self.assertEqual(group.GetValue(), 0)
215            self.assertEqual(group.GetProperties(), defProps)
216            self.assertEqual(group.GetLabel(), "")
217    
218            # test SetProperties()/GetProperties()
219            group.SetProperties(newProps)
220            self.assertEqual(group.GetProperties(), newProps)
221    
222            # test SetValue()
223            group.SetValue(5)
224            self.assertEqual(group.GetValue(), 5)
225    
226            # test Matches()
227            self.assertEqual(group.Matches(0), False)
228            self.assertEqual(group.Matches(5), True)
229    
230            group.SetValue("5")
231            self.assertNotEqual(group.GetValue(), 5)
232    
233            # test Matches()
234            self.assertEqual(group.Matches(5), False)
235            self.assertEqual(group.Matches("5"), True)
236    
237            group.SetValue("hallo")
238            self.assertEqual(group.GetValue(), "hallo")
239    
240            # test Matches()
241            self.assertEqual(group.Matches("HALLO"), False)
242            self.assertEqual(group.Matches("hallo"), True)
243    
244            # test copy
245            groupCopy = copy.copy(group)
246            self.assertEqual(group, groupCopy)
247    
248    
249    class TestClassIterator(unittest.TestCase):
250    
251        def test(self):
252            """Test ClassIterator"""
253    
254            groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),
255                      ClassGroupRange((-3, 3)), ClassGroupSingleton(-5),
256                      ClassGroupDefault()]
257    
258            clazz = Classification()
259    
260            for g in groups:
261                clazz.AppendGroup(g)
262    
263            def convert(clazz):
264                if isinstance(clazz, ClassGroupDefault):   return 0
265                if isinstance(clazz, ClassGroupSingleton): return 1
266                if isinstance(clazz, ClassGroupRange):     return 2
267    
268            list = []
269            for g in clazz:
270                list.append(convert(g))
271    
272            self.assertEquals(list, [0, 1, 1, 2, 1, 0])
273    
274    
275  class TestClassification(unittest.TestCase):  class TestClassification(unittest.TestCase):
276    
277      def test_classification(self):      def test(self):
278          """Test Classification"""          """Test Classification"""
279    
280          layer = Layer("asdf", "../Data/iceland/political.shp")          defProps = ClassGroupProperties()
281            red   = Color(1, 0, 0)
282            green = Color(0, 1, 0)
283            blue  = Color(0, 0, 1)
284    
285            session = Session("Test session")
286            filename = os.path.join("..", "Data", "iceland", "political.dbf")
287            layer = Layer("asdf", session.OpenShapefile(filename))
288    
289          #          #
290          # init with no params          # init with no params
291          #          #
292          c = Classification(layer)          c = Classification()
293          self.assertEqual(c.field, None)          self.assertEqual(c.FindGroup(-1), c.GetDefaultGroup())
         self.assertNotEqual(c.DefaultData, None)  
294    
295          #          c.SetDefaultLineColor(red)
296          # SetField          self.assertEqual(c.GetDefaultLineColor(), red)
297          #          self.assertEqual(c.GetDefaultFill(), Transparent)
         c = Classification(layer)  
         c.SetField("Test")  
         self.assertEqual(c.field, "Test")  
         c.SetField(None)  
         self.assertEqual(c.field, None)  
298    
299          #          c.SetDefaultFill(green)
300          # init with field          self.assertEqual(c.GetDefaultFill(), green)
301          #          self.assertEqual(c.GetDefaultLineColor(), red)
         c = Classification(layer, "Test")  
         self.assertEqual(c.field, "Test")  
302    
303          #          layer.SetClassification(c)
304          # GetProperties  
305          #          self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())
306    
307            s = ClassGroupSingleton(5)
308            c.AppendGroup(s)
309            self.assertEquals(c.FindGroup(5), s)
310            self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())
311    
312            r = ClassGroupRange((-10, 10))
313            c.AppendGroup(r)
314            self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())
315            self.assertEquals(c.FindGroup(-10), r)
316            self.assertEquals(c.FindGroup(9), r)
317            self.assertEquals(c.FindGroup(5), s)
318            self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())
319    
320            clazz = copy.deepcopy(c)
321    
322            self.assertEquals(clazz.GetNumGroups(), c.GetNumGroups())
323    
324            for i in range(clazz.GetNumGroups()):
325                self.assertEquals(clazz.GetGroup(i), c.GetGroup(i))
326    
327            session.Destroy()
328            layer.Destroy()
329    
 #       self.assertEqual(c0.GetProperties(-10), "1")  
 #       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")  
330    
331  if __name__ == "__main__":  if __name__ == "__main__":
332      unittest.main()      support.run_tests()

Legend:
Removed from v.409  
changed lines
  Added in v.1898

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26