/[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 1898 by bh, Fri Oct 31 14:38:09 2003 UTC revision 1905 by bh, Fri Oct 31 17:09:58 2003 UTC
# Line 21  import support Line 21  import support
21  support.initthuban()  support.initthuban()
22    
23  import os  import os
24    import copy
25    
26  from Thuban.Model.color import Color, Transparent, Black  from Thuban.Model.color import Color, Transparent, Black
27  from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_STRING, FIELDTYPE_DOUBLE  from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_STRING, FIELDTYPE_DOUBLE
28  from Thuban.Model.classification import \  from Thuban.Model.classification import \
# Line 32  from Thuban.Model.session import Session Line 34  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  from Thuban.Model.range import Range
36    
37  import copy  
38    
39    # 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    
45  class TestClassGroupProperties(unittest.TestCase):  class TestClassGroupProperties(unittest.TestCase):
# Line 45  class TestClassGroupProperties(unittest. Line 52  class TestClassGroupProperties(unittest.
52          self.assertEqual(props.GetLineWidth(), 1)          self.assertEqual(props.GetLineWidth(), 1)
53          self.assertEqual(props.GetFill(), Transparent)          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 246  class TestClassGroupSingleton(unittest.T Line 251  class TestClassGroupSingleton(unittest.T
251          self.assertEqual(group, groupCopy)          self.assertEqual(group, groupCopy)
252    
253    
254  class TestClassIterator(unittest.TestCase):  class TestClassification(unittest.TestCase):
   
     def test(self):  
         """Test ClassIterator"""  
255    
256          groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),      """Test cases for Classification"""
                   ClassGroupRange((-3, 3)), ClassGroupSingleton(-5),  
                   ClassGroupDefault()]  
257    
258          clazz = Classification()      def setUp(self):
259            self.clazz = Classification()
260    
261          for g in groups:      def test_defaults(self):
262              clazz.AppendGroup(g)          """Test Classification default settings"""
263            c = Classification()
264            self.assertEqual(self.clazz.FindGroup(-1),
265                             self.clazz.GetDefaultGroup())
266            self.assertEqual(self.clazz.GetDefaultLineColor(), Black)
267            self.assertEqual(self.clazz.GetDefaultFill(), Transparent)
268    
269          def convert(clazz):          # The default group is not counted, hence 0 groups
270              if isinstance(clazz, ClassGroupDefault):   return 0          self.assertEqual(self.clazz.GetNumGroups(), 0)
             if isinstance(clazz, ClassGroupSingleton): return 1  
             if isinstance(clazz, ClassGroupRange):     return 2  
271    
272          list = []      def test_set_default_properties(self):
273          for g in clazz:          """Test Classification.SetDefaultLineColor and SetDefaultFill"""
274              list.append(convert(g))          c = Classification()
275    
276          self.assertEquals(list, [0, 1, 1, 2, 1, 0])          self.clazz.SetDefaultLineColor(red)
277            self.assertEqual(self.clazz.GetDefaultLineColor(), red)
278            self.assertEqual(self.clazz.GetDefaultFill(), Transparent)
279    
280            self.clazz.SetDefaultFill(green)
281            self.assertEqual(self.clazz.GetDefaultFill(), green)
282            self.assertEqual(self.clazz.GetDefaultLineColor(), red)
283    
284        def test_add_singleton(self):
285            """Test Classification.AppendGroup(ClassGroupSingleton())"""
286            c = Classification()
287            self.assertEquals(self.clazz.FindGroup(5),
288                              self.clazz.GetDefaultGroup())
289    
290  class TestClassification(unittest.TestCase):          s = ClassGroupSingleton(5)
291            self.clazz.AppendGroup(s)
292            self.assertEquals(self.clazz.FindGroup(5), s)
293            self.assertEquals(self.clazz.FindGroup(0),
294                              self.clazz.GetDefaultGroup())
295    
296      def test(self):      def test_add_range(self):
297          """Test Classification"""          """Test Classification.AppendGroup(ClassGroupRange())"""
298            c = Classification()
299            self.assertEquals(self.clazz.FindGroup(0),
300                              self.clazz.GetDefaultGroup())
301    
302          defProps = ClassGroupProperties()          r = ClassGroupRange((-10, 10))
303          red   = Color(1, 0, 0)          self.clazz.AppendGroup(r)
304          green = Color(0, 1, 0)          self.assertEquals(self.clazz.FindGroup(-11),
305          blue  = Color(0, 0, 1)                            self.clazz.GetDefaultGroup())
306            self.assertEquals(self.clazz.FindGroup(-10), r)
307          session = Session("Test session")          self.assertEquals(self.clazz.FindGroup(9), r)
308          filename = os.path.join("..", "Data", "iceland", "political.dbf")          self.assertEquals(self.clazz.FindGroup(5), r)
309          layer = Layer("asdf", session.OpenShapefile(filename))          self.assertEquals(self.clazz.FindGroup(10),
310                              self.clazz.GetDefaultGroup())
311    
312          #      def test_multiple_groups(self):
313          # init with no params          """Test Classification with multiple groups"""
         #  
314          c = Classification()          c = Classification()
         self.assertEqual(c.FindGroup(-1), c.GetDefaultGroup())  
315    
316          c.SetDefaultLineColor(red)          # two singletons matching 1 to test whether they're tested in
317          self.assertEqual(c.GetDefaultLineColor(), red)          # the right order. Use a non default fill on the second to make
318          self.assertEqual(c.GetDefaultFill(), Transparent)          # it compare unequal to the first.
319            s1 = ClassGroupSingleton(1)
320            s1a = ClassGroupSingleton(1)
321            s1a.GetProperties().SetFill(blue)
322            # Sanity check: are they considered different?
323            self.assertNotEqual(s1, s1a)
324    
325          c.SetDefaultFill(green)          s2 = ClassGroupSingleton(2)
326          self.assertEqual(c.GetDefaultFill(), green)          r = ClassGroupRange((-10, 10))
         self.assertEqual(c.GetDefaultLineColor(), red)  
327    
328          layer.SetClassification(c)          self.clazz.AppendGroup(s1)
329            self.clazz.AppendGroup(s2)
330            self.clazz.AppendGroup(s1a)
331            self.clazz.AppendGroup(r)
332    
333            self.assertEquals(self.clazz.FindGroup(-11),
334                              self.clazz.GetDefaultGroup())
335            self.assertEquals(self.clazz.FindGroup(-10), r)
336            self.assertEquals(self.clazz.FindGroup(1), s1)
337            self.assertEquals(self.clazz.FindGroup(2), s2)
338            self.assertEquals(self.clazz.FindGroup(3), r)
339            self.assertEquals(self.clazz.FindGroup(9), r)
340            self.assertEquals(self.clazz.FindGroup(10),
341                              self.clazz.GetDefaultGroup())
342    
343        def test_deepcopy(self):
344            """Test deepcopy(Classification())"""
345            self.clazz.AppendGroup(ClassGroupSingleton(5))
346            self.clazz.AppendGroup(ClassGroupRange((-10, 10)))
347    
348          self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())          clazz = copy.deepcopy(self.clazz)
349    
350          s = ClassGroupSingleton(5)          self.assertEquals(clazz.GetNumGroups(), self.clazz.GetNumGroups())
         c.AppendGroup(s)  
         self.assertEquals(c.FindGroup(5), s)  
         self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())  
351    
352          r = ClassGroupRange((-10, 10))          for i in range(clazz.GetNumGroups()):
353          c.AppendGroup(r)              self.assertEquals(clazz.GetGroup(i), self.clazz.GetGroup(i))
         self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())  
         self.assertEquals(c.FindGroup(-10), r)  
         self.assertEquals(c.FindGroup(9), r)  
         self.assertEquals(c.FindGroup(5), s)  
         self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())  
354    
         clazz = copy.deepcopy(c)  
355    
356          self.assertEquals(clazz.GetNumGroups(), c.GetNumGroups())      def test_iterator(self):
357            """Test Classification iteration"""
358            groups = [ClassGroupSingleton(5), ClassGroupSingleton(5),
359                      ClassGroupRange((-3, 3)), ClassGroupSingleton(-5),
360                      ClassGroupDefault()]
361    
362          for i in range(clazz.GetNumGroups()):          for g in groups:
363              self.assertEquals(clazz.GetGroup(i), c.GetGroup(i))              self.clazz.AppendGroup(g)
364    
365          session.Destroy()          def convert(group):
366          layer.Destroy()              if isinstance(group, ClassGroupDefault):   return 0
367                if isinstance(group, ClassGroupSingleton): return 1
368                if isinstance(group, ClassGroupRange):     return 2
369    
370            list = []
371            for g in self.clazz:
372                list.append(convert(g))
373    
374            self.assertEquals(list, [0, 1, 1, 2, 1, 0])
375    
376    
377  if __name__ == "__main__":  if __name__ == "__main__":

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26