/[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 482 by jonathan, Thu Mar 6 16:47:02 2003 UTC revision 1903 by bh, Fri Oct 31 16:52:33 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 20  import unittest Line 20  import unittest
20  import support  import support
21  support.initthuban()  support.initthuban()
22    
23  from Thuban.Model.table import *  import os
24  from Thuban.Model.classification import *  import copy
25    
26    from Thuban.Model.color import Color, Transparent, Black
27    from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_STRING, FIELDTYPE_DOUBLE
28    from Thuban.Model.classification import \
29        Classification, ClassGroup, \
30        ClassGroupDefault, ClassGroupSingleton, ClassGroupRange,\
31        ClassGroupProperties
32    
33    from Thuban.Model.session import Session
34  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer
35    from Thuban.Model.range import Range
36    
 import copy  
37    
38    
39  class TestClassification(unittest.TestCase):  # A few colors for use by the test cases
40    red = Color(1, 0, 0)
41    green = Color(0, 1, 0)
42    blue = Color(0, 0, 1)
43    
44      def test_ClassGroupProperties(self):  
45    class TestClassGroupProperties(unittest.TestCase):
46    
47        def test(self):
48          """Test ClassGroupProperties"""          """Test ClassGroupProperties"""
49    
50          props = ClassGroupProperties()          props = ClassGroupProperties()
51          self.assertEqual(props.GetLineColor(), Color.Black)          self.assertEqual(props.GetLineColor(), Black)
52          self.assertEqual(props.GetLineWidth(), 1)          self.assertEqual(props.GetLineWidth(), 1)
53          self.assertEqual(props.GetFill(), Color.None)          self.assertEqual(props.GetFill(), Transparent)
54    
         red = Color(1, 0, 0)  
55          props.SetLineColor(red)          props.SetLineColor(red)
56          self.assertEqual(props.GetLineColor(), red)          self.assertEqual(props.GetLineColor(), red)
57    
         blue = Color(0, 0, 1)  
58          props.SetLineColor(blue)          props.SetLineColor(blue)
59          self.assertEqual(props.GetLineColor(), blue)          self.assertEqual(props.GetLineColor(), blue)
60    
# Line 56  class TestClassification(unittest.TestCa Line 69  class TestClassification(unittest.TestCa
69          self.assertNotEqual(newProps1, props)          self.assertNotEqual(newProps1, props)
70          self.assertEqual(newProps1, newProps2)          self.assertEqual(newProps1, newProps2)
71    
72      def test_ClassGroup(self):  
73    class TestClassGroup(unittest.TestCase):
74    
75        def test(self):
76          """Test ClassGroup"""          """Test ClassGroup"""
77    
78          # test constructor with no label          # test constructor with no label
# Line 76  class TestClassification(unittest.TestCa Line 92  class TestClassification(unittest.TestCa
92          self.assertEqual(group.GetLabel(), "")          self.assertEqual(group.GetLabel(), "")
93    
94          # test Matches          # test Matches
95          self.assertEqual(group.Matches(None), False)          # Matches() is a virtual function...can't test it here
96          self.assertEqual(group.Matches(1), False)          #
97          self.assertEqual(group.Matches("hallo"), False)          #self.assertEqual(group.Matches(None), False)
98          self.assertEqual(group.Matches([]), False)          #self.assertEqual(group.Matches(1), False)
99            #self.assertEqual(group.Matches("hallo"), False)
100            #self.assertEqual(group.Matches([]), False)
101    
102            # test GetProperties...also a virtual function
103            #self.assertEqual(group.GetProperties(), None)
104    
         # test GetProperties  
         self.assertEqual(group.GetProperties(), None)  
105    
106      def test_ClassGroupDefault(self):  class TestClassGroupDefault(unittest.TestCase):
107    
108        def test(self):
109          """Test ClassGroupDefault"""          """Test ClassGroupDefault"""
110    
111          defProps = ClassGroupProperties()          defProps = ClassGroupProperties()
# Line 124  class TestClassification(unittest.TestCa Line 145  class TestClassification(unittest.TestCa
145          groupCopy = copy.copy(group)          groupCopy = copy.copy(group)
146          self.assertEqual(group, groupCopy)          self.assertEqual(group, groupCopy)
147    
148      def test_ClassGroupRange(self):  
149    class TestClassGroupRange(unittest.TestCase):
150    
151        def test(self):
152          """Test ClassGroupRange"""          """Test ClassGroupRange"""
153    
154          defProps = ClassGroupProperties()          defProps = ClassGroupProperties()
# Line 140  class TestClassification(unittest.TestCa Line 164  class TestClassification(unittest.TestCa
164          self.assertEqual(group.GetMax(), 1)          self.assertEqual(group.GetMax(), 1)
165          self.assertEqual(group.GetProperties(), defProps)          self.assertEqual(group.GetProperties(), defProps)
166          self.assertEqual(group.GetLabel(), "")          self.assertEqual(group.GetLabel(), "")
167            
168          # test SetMax()          # test SetMax()
169          self.assertRaises(ValueError, group.SetMax, 0)          self.assertRaises(ValueError, group.SetMax, 0)
170          self.assertRaises(ValueError, group.SetMax, -1)          self.assertRaises(ValueError, group.SetMax, -1)
# Line 160  class TestClassification(unittest.TestCa Line 184  class TestClassification(unittest.TestCa
184          self.assertEqual(group.GetProperties(), newProps)          self.assertEqual(group.GetProperties(), newProps)
185    
186          # test SetRange()          # test SetRange()
187          self.assertRaises(ValueError, group.SetRange, 1, 0)          self.assertRaises(ValueError, group.SetRange, (1, 0))
188          group.SetRange(-5, 5)          group.SetRange(Range("]-oo;6]"))
189          self.assertEqual(group.GetRange(), (-5, 5))          self.assertEqual(group.GetRange(), "]-oo;6]")
190            group.SetRange((-5, 5))
191            self.assertEqual(group.GetRange(), "[-5;5[")
192    
193          # test Matches()          # test Matches()
194          self.assertEqual(group.Matches(-6), False)          self.assertEqual(group.Matches(-6), False)
# Line 175  class TestClassification(unittest.TestCa Line 201  class TestClassification(unittest.TestCa
201          groupCopy = copy.copy(group)          groupCopy = copy.copy(group)
202          self.assertEqual(group, groupCopy)          self.assertEqual(group, groupCopy)
203    
204      def test_ClassGroupSingleton(self):  
205    class TestClassGroupSingleton(unittest.TestCase):
206    
207        def test(self):
208          """Test ClassGroupSingleton"""          """Test ClassGroupSingleton"""
209    
210          defProps = ClassGroupProperties()          defProps = ClassGroupProperties()
# Line 220  class TestClassification(unittest.TestCa Line 249  class TestClassification(unittest.TestCa
249          # test copy          # test copy
250          groupCopy = copy.copy(group)          groupCopy = copy.copy(group)
251          self.assertEqual(group, groupCopy)          self.assertEqual(group, groupCopy)
           
252    
     def test_ClassIterator(self):  
         """Test ClassIterator"""  
253    
254          groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),  class TestClassification(unittest.TestCase):
                   ClassGroupRange(-3, 3), ClassGroupSingleton(-5),  
                   ClassGroupDefault()]  
   
         clazz = Classification()  
   
         for g in groups:  
             clazz.AddGroup(g)  
   
         def convert(clazz):  
             if isinstance(clazz, ClassGroupDefault):   return 0  
             if isinstance(clazz, ClassGroupSingleton): return 1  
             if isinstance(clazz, ClassGroupRange):     return 2  
   
         list = []  
         for g in clazz:  
             list.append(convert(g))  
   
         self.assertEquals(list, [0, 1, 1, 2, 1])  
255    
256      def test_classification(self):      """Test cases for Classification"""
         """Test Classification"""  
257    
258          defProps = ClassGroupProperties()      def test_defaults(self):
259          red   = Color(1, 0, 0)          """Test Classification default settings"""
260          green = Color(0, 1, 0)          c = Classification()
261          blue  = Color(0, 0, 1)          self.assertEqual(c.FindGroup(-1), c.GetDefaultGroup())
262            self.assertEqual(c.GetDefaultLineColor(), Black)
263            self.assertEqual(c.GetDefaultFill(), Transparent)
264    
265          layer = Layer("asdf", "../Data/iceland/political.shp")          # The default group is not counted, hence 0 groups
266            self.assertEqual(c.GetNumGroups(), 0)
267    
268          #      def test_set_default_properties(self):
269          # init with no params          """Test Classification.SetDefaultLineColor and SetDefaultFill"""
         #  
270          c = Classification()          c = Classification()
         self.assertEqual(c.GetField(), None)  
         self.assertEqual(c.GetFieldType(), None)  
         self.assertEqual(c.GetGroup(-1), c.GetDefaultGroup())  
271    
272          c.SetDefaultLineColor(red)          c.SetDefaultLineColor(red)
273          self.assertEqual(c.GetDefaultLineColor(), red)          self.assertEqual(c.GetDefaultLineColor(), red)
274          self.assertEqual(c.GetDefaultFill(), Color.None)          self.assertEqual(c.GetDefaultFill(), Transparent)
275    
276          c.SetDefaultFill(green)          c.SetDefaultFill(green)
277          self.assertEqual(c.GetDefaultFill(), green)          self.assertEqual(c.GetDefaultFill(), green)
278          self.assertEqual(c.GetDefaultLineColor(), red)          self.assertEqual(c.GetDefaultLineColor(), red)
279    
280          c.SetField("hallo")      def test_add_singleton(self):
281          self.assertEqual(c.GetField(), "hallo")          """Test Classification.AppendGroup(ClassGroupSingleton())"""
282            c = Classification()
283            self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())
284    
285          c.SetFieldType(FIELDTYPE_STRING)          s = ClassGroupSingleton(5)
286          self.assertEqual(c.GetFieldType(), FIELDTYPE_STRING)          c.AppendGroup(s)
287            self.assertEquals(c.FindGroup(5), s)
288            self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())
289    
290          c.SetLayer(layer)      def test_add_range(self):
291          self.assertEqual(c.GetLayer(), layer)          """Test Classification.AppendGroup(ClassGroupRange())"""
292            c = Classification()
293            self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())
294    
295          c.SetField(None)          r = ClassGroupRange((-10, 10))
296          self.assertEquals(c.GetGroup(5), c.GetDefaultGroup())          c.AppendGroup(r)
297            self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())
298            self.assertEquals(c.FindGroup(-10), r)
299            self.assertEquals(c.FindGroup(9), r)
300            self.assertEquals(c.FindGroup(5), r)
301            self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())
302    
303        def test_multiple_groups(self):
304            """Test Classification with multiple groups"""
305            c = Classification()
306            s1 = ClassGroupSingleton(1)
307            s1a = ClassGroupSingleton(1)
308            s2 = ClassGroupSingleton(2)
309            r = ClassGroupRange((-10, 10))
310    
311            c.AppendGroup(s1)
312            c.AppendGroup(s2)
313            c.AppendGroup(s1a)
314            c.AppendGroup(r)
315    
316            self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())
317            self.assertEquals(c.FindGroup(-10), r)
318            self.assertEquals(c.FindGroup(1), s1)
319            self.assertEquals(c.FindGroup(2), s2)
320            self.assertEquals(c.FindGroup(3), r)
321            self.assertEquals(c.FindGroup(9), r)
322            self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())
323    
324        def test_deepcopy(self):
325            """Test deepcopy(Classification())"""
326            c = Classification()
327            c.AppendGroup(ClassGroupSingleton(5))
328            c.AppendGroup(ClassGroupRange((-10, 10)))
329    
330            clazz = copy.deepcopy(c)
331    
332            self.assertEquals(clazz.GetNumGroups(), c.GetNumGroups())
333    
334            for i in range(clazz.GetNumGroups()):
335                self.assertEquals(clazz.GetGroup(i), c.GetGroup(i))
336    
337    
338        def test_iterator(self):
339            """Test Classification iteration"""
340            groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),
341                      ClassGroupRange((-3, 3)), ClassGroupSingleton(-5),
342                      ClassGroupDefault()]
343    
344            clazz = Classification()
345    
346            for g in groups:
347                clazz.AppendGroup(g)
348    
349            def convert(clazz):
350                if isinstance(clazz, ClassGroupDefault):   return 0
351                if isinstance(clazz, ClassGroupSingleton): return 1
352                if isinstance(clazz, ClassGroupRange):     return 2
353    
354            list = []
355            for g in clazz:
356                list.append(convert(g))
357    
358            self.assertEquals(list, [0, 1, 1, 2, 1, 0])
359    
         c.SetField("hallo")  
         s = ClassGroupSingleton(5)  
         c.AddGroup(s)  
         self.assertEquals(c.GetGroup(5), s)  
         self.assertEquals(c.GetGroup(0), c.GetDefaultGroup())  
   
         r = ClassGroupRange(-10, 10)  
         c.AddGroup(r)  
         self.assertEquals(c.GetGroup(-11), c.GetDefaultGroup())  
         self.assertEquals(c.GetGroup(-10), r)  
         self.assertEquals(c.GetGroup(9), r)  
         self.assertEquals(c.GetGroup(5), s)  
         self.assertEquals(c.GetGroup(10), c.GetDefaultGroup())  
360    
361  if __name__ == "__main__":  if __name__ == "__main__":
362      unittest.main()      support.run_tests()

Legend:
Removed from v.482  
changed lines
  Added in v.1903

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26