/[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 1903 by bh, Fri Oct 31 16:52:33 2003 UTC revision 1910 by bh, Fri Oct 31 18:16:46 2003 UTC
# Line 13  __version__ = "$Revision$" Line 13  __version__ = "$Revision$"
13  # $Source$  # $Source$
14  # $Id$  # $Id$
15    
 from __future__ import nested_scopes  
   
16  import unittest  import unittest
17    
18  import support  import support
19  support.initthuban()  support.initthuban()
20    
 import os  
21  import copy  import copy
22    
23  from Thuban.Model.color import Color, Transparent, Black  from Thuban.Model.color import Color, Transparent, Black
 from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_STRING, FIELDTYPE_DOUBLE  
24  from Thuban.Model.classification import \  from Thuban.Model.classification import \
25      Classification, ClassGroup, \      Classification, ClassGroup, \
26      ClassGroupDefault, ClassGroupSingleton, ClassGroupRange,\      ClassGroupDefault, ClassGroupSingleton, ClassGroupRange,\
27      ClassGroupProperties      ClassGroupProperties
28    from Thuban.Model.messages import CLASS_CHANGED
29    
 from Thuban.Model.session import Session  
 from Thuban.Model.layer import Layer  
30  from Thuban.Model.range import Range  from Thuban.Model.range import Range
31    
32    
# Line 251  class TestClassGroupSingleton(unittest.T Line 246  class TestClassGroupSingleton(unittest.T
246          self.assertEqual(group, groupCopy)          self.assertEqual(group, groupCopy)
247    
248    
249  class TestClassification(unittest.TestCase):  class TestClassification(unittest.TestCase, support.SubscriberMixin):
250    
251      """Test cases for Classification"""      """Test cases for Classification"""
252    
253        def setUp(self):
254            self.clazz = Classification()
255            self.clazz.Subscribe(CLASS_CHANGED, self.subscribe_with_params,
256                                 CLASS_CHANGED)
257            self.clear_messages()
258    
259        def tearDown(self):
260            self.clear_messages()
261            self.clazz.Destroy()
262            del self.clazz
263    
264      def test_defaults(self):      def test_defaults(self):
265          """Test Classification default settings"""          """Test Classification default settings"""
266          c = Classification()          self.assertEqual(self.clazz.FindGroup(-1),
267          self.assertEqual(c.FindGroup(-1), c.GetDefaultGroup())                           self.clazz.GetDefaultGroup())
268          self.assertEqual(c.GetDefaultLineColor(), Black)          self.assertEqual(self.clazz.GetDefaultLineColor(), Black)
269          self.assertEqual(c.GetDefaultFill(), Transparent)          self.assertEqual(self.clazz.GetDefaultFill(), Transparent)
270            self.assertEqual(self.clazz.GetDefaultLineWidth(), 1)
271    
272          # The default group is not counted, hence 0 groups          # The default group is not counted, hence 0 groups
273          self.assertEqual(c.GetNumGroups(), 0)          self.assertEqual(self.clazz.GetNumGroups(), 0)
274    
275            # No messages should have been sent so far
276            self.check_messages([])
277    
278      def test_set_default_properties(self):      def test_set_default_properties(self):
279          """Test Classification.SetDefaultLineColor and SetDefaultFill"""          """Test Classification.SetDefaultLineColor and SetDefaultFill"""
280          c = Classification()          # No messages so far
281            self.check_messages([])
282    
283          c.SetDefaultLineColor(red)          # Change the default line color
284          self.assertEqual(c.GetDefaultLineColor(), red)          self.clazz.SetDefaultLineColor(red)
285          self.assertEqual(c.GetDefaultFill(), Transparent)          self.assertEqual(self.clazz.GetDefaultLineColor(), red)
286            self.assertEqual(self.clazz.GetDefaultFill(), Transparent)
287          c.SetDefaultFill(green)          self.assertEqual(self.clazz.GetDefaultLineWidth(), 1)
288          self.assertEqual(c.GetDefaultFill(), green)  
289          self.assertEqual(c.GetDefaultLineColor(), red)          self.check_messages([(CLASS_CHANGED,)])
290            self.clear_messages()
291    
292            self.clazz.SetDefaultFill(green)
293            self.assertEqual(self.clazz.GetDefaultFill(), green)
294            self.assertEqual(self.clazz.GetDefaultLineColor(), red)
295            self.assertEqual(self.clazz.GetDefaultLineWidth(), 1)
296            self.check_messages([(CLASS_CHANGED,)])
297    
298            self.check_messages([(CLASS_CHANGED,)])
299            self.clear_messages()
300    
301            self.clazz.SetDefaultLineWidth(10)
302            self.assertEqual(self.clazz.GetDefaultFill(), green)
303            self.assertEqual(self.clazz.GetDefaultLineColor(), red)
304            self.assertEqual(self.clazz.GetDefaultLineWidth(), 10)
305            self.check_messages([(CLASS_CHANGED,)])
306    
307        def test_set_default_group(self):
308            """Test Classification.SetDefaultGroup()"""
309            prop = ClassGroupProperties()
310            prop.SetLineColor(blue)
311            prop.SetLineWidth(5)
312            prop.SetFill(red)
313    
314            self.clazz.SetDefaultGroup(ClassGroupDefault(prop))
315            self.assertEqual(self.clazz.GetDefaultFill(), red)
316            self.assertEqual(self.clazz.GetDefaultLineColor(), blue)
317            self.assertEqual(self.clazz.GetDefaultLineWidth(), 5)
318            self.check_messages([(CLASS_CHANGED,)])
319    
320      def test_add_singleton(self):      def test_add_singleton(self):
321          """Test Classification.AppendGroup(ClassGroupSingleton())"""          """Test Classification.AppendGroup(ClassGroupSingleton())"""
322          c = Classification()          self.assertEquals(self.clazz.FindGroup(5),
323          self.assertEquals(c.FindGroup(5), c.GetDefaultGroup())                            self.clazz.GetDefaultGroup())
324    
325          s = ClassGroupSingleton(5)          s = ClassGroupSingleton(5)
326          c.AppendGroup(s)          self.clazz.AppendGroup(s)
327          self.assertEquals(c.FindGroup(5), s)          self.check_messages([(CLASS_CHANGED,)])
328          self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())          self.assertEquals(self.clazz.FindGroup(5), s)
329            self.assertEquals(self.clazz.FindGroup(0),
330                              self.clazz.GetDefaultGroup())
331    
332      def test_add_range(self):      def test_add_range(self):
333          """Test Classification.AppendGroup(ClassGroupRange())"""          """Test Classification.AppendGroup(ClassGroupRange())"""
334          c = Classification()          self.assertEquals(self.clazz.FindGroup(0),
335          self.assertEquals(c.FindGroup(0), c.GetDefaultGroup())                            self.clazz.GetDefaultGroup())
336    
337          r = ClassGroupRange((-10, 10))          r = ClassGroupRange((-10, 10))
338          c.AppendGroup(r)          self.clazz.AppendGroup(r)
339          self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())          self.check_messages([(CLASS_CHANGED,)])
340          self.assertEquals(c.FindGroup(-10), r)          self.assertEquals(self.clazz.FindGroup(-11),
341          self.assertEquals(c.FindGroup(9), r)                            self.clazz.GetDefaultGroup())
342          self.assertEquals(c.FindGroup(5), r)          self.assertEquals(self.clazz.FindGroup(-10), r)
343          self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())          self.assertEquals(self.clazz.FindGroup(9), r)
344            self.assertEquals(self.clazz.FindGroup(5), r)
345            self.assertEquals(self.clazz.FindGroup(10),
346                              self.clazz.GetDefaultGroup())
347    
348      def test_multiple_groups(self):      def test_multiple_groups(self):
349          """Test Classification with multiple groups"""          """Test Classification with multiple groups"""
350          c = Classification()          # two singletons matching 1 to test whether they're tested in
351            # the right order. Use a non default fill on the second to make
352            # it compare unequal to the first.
353          s1 = ClassGroupSingleton(1)          s1 = ClassGroupSingleton(1)
354          s1a = ClassGroupSingleton(1)          s1a = ClassGroupSingleton(1)
355            s1a.GetProperties().SetFill(blue)
356            # Sanity check: are they considered different?
357            self.assertNotEqual(s1, s1a)
358    
359          s2 = ClassGroupSingleton(2)          s2 = ClassGroupSingleton(2)
360          r = ClassGroupRange((-10, 10))          r = ClassGroupRange((-10, 10))
361    
362          c.AppendGroup(s1)          self.clazz.AppendGroup(s1)
363          c.AppendGroup(s2)          self.clazz.AppendGroup(s2)
364          c.AppendGroup(s1a)          self.clazz.AppendGroup(s1a)
365          c.AppendGroup(r)          self.clazz.AppendGroup(r)
366            self.check_messages([(CLASS_CHANGED,), (CLASS_CHANGED,),
367          self.assertEquals(c.FindGroup(-11), c.GetDefaultGroup())                               (CLASS_CHANGED,), (CLASS_CHANGED,)])
368          self.assertEquals(c.FindGroup(-10), r)  
369          self.assertEquals(c.FindGroup(1), s1)          self.assertEquals(self.clazz.FindGroup(-11),
370          self.assertEquals(c.FindGroup(2), s2)                            self.clazz.GetDefaultGroup())
371          self.assertEquals(c.FindGroup(3), r)          self.assertEquals(self.clazz.FindGroup(-10), r)
372          self.assertEquals(c.FindGroup(9), r)          self.assertEquals(self.clazz.FindGroup(1), s1)
373          self.assertEquals(c.FindGroup(10), c.GetDefaultGroup())          self.assertEquals(self.clazz.FindGroup(2), s2)
374            self.assertEquals(self.clazz.FindGroup(3), r)
375            self.assertEquals(self.clazz.FindGroup(9), r)
376            self.assertEquals(self.clazz.FindGroup(10),
377                              self.clazz.GetDefaultGroup())
378    
379        def test_insert_group(self):
380            """Test Classification.InsertGroup()"""
381            s1 = ClassGroupSingleton(1)
382            s2 = ClassGroupSingleton(2)
383            r = ClassGroupRange((0, 10))
384    
385            self.clazz.AppendGroup(s1)
386            self.clazz.AppendGroup(r)
387            self.assertEquals(self.clazz.FindGroup(2), r)
388            self.clear_messages()
389    
390            self.clazz.InsertGroup(1, s2)
391            self.assertEquals(self.clazz.FindGroup(2), s2)
392            self.check_messages([(CLASS_CHANGED,)])
393    
394        def test_remove_group(self):
395            """Test Classification.RemoveGroup()"""
396            s1 = ClassGroupSingleton(1)
397            s2 = ClassGroupSingleton(2)
398            r = ClassGroupRange((0, 10))
399    
400            self.clazz.AppendGroup(s1)
401            self.clazz.AppendGroup(s2)
402            self.clazz.AppendGroup(r)
403            self.assertEquals(self.clazz.FindGroup(2), s2)
404            self.clear_messages()
405    
406            self.clazz.RemoveGroup(1)
407            self.assertEquals(self.clazz.FindGroup(2), r)
408            self.check_messages([(CLASS_CHANGED,)])
409    
410        def test_replace_group(self):
411            """Test Classification.ReplaceGroup()"""
412            s1 = ClassGroupSingleton(1)
413            s2 = ClassGroupSingleton(2)
414            r = ClassGroupRange((0, 10))
415    
416            self.clazz.AppendGroup(s2)
417            self.clazz.AppendGroup(r)
418            self.assertEquals(self.clazz.FindGroup(2), s2)
419            self.assertEquals(self.clazz.FindGroup(1), r)
420            self.clear_messages()
421    
422            self.clazz.ReplaceGroup(0, s1)
423            self.assertEquals(self.clazz.FindGroup(2), r)
424            self.assertEquals(self.clazz.FindGroup(1), s1)
425            self.check_messages([(CLASS_CHANGED,)])
426    
427      def test_deepcopy(self):      def test_deepcopy(self):
428          """Test deepcopy(Classification())"""          """Test deepcopy(Classification())"""
429          c = Classification()          self.clazz.AppendGroup(ClassGroupSingleton(5))
430          c.AppendGroup(ClassGroupSingleton(5))          self.clazz.AppendGroup(ClassGroupRange((-10, 10)))
         c.AppendGroup(ClassGroupRange((-10, 10)))  
431    
432          clazz = copy.deepcopy(c)          clazz = copy.deepcopy(self.clazz)
433    
434          self.assertEquals(clazz.GetNumGroups(), c.GetNumGroups())          self.assertEquals(clazz.GetNumGroups(), self.clazz.GetNumGroups())
435    
436          for i in range(clazz.GetNumGroups()):          for i in range(clazz.GetNumGroups()):
437              self.assertEquals(clazz.GetGroup(i), c.GetGroup(i))              self.assertEquals(clazz.GetGroup(i), self.clazz.GetGroup(i))
438    
439    
440      def test_iterator(self):      def test_iterator(self):
# Line 341  class TestClassification(unittest.TestCa Line 443  class TestClassification(unittest.TestCa
443                    ClassGroupRange((-3, 3)), ClassGroupSingleton(-5),                    ClassGroupRange((-3, 3)), ClassGroupSingleton(-5),
444                    ClassGroupDefault()]                    ClassGroupDefault()]
445    
         clazz = Classification()  
   
446          for g in groups:          for g in groups:
447              clazz.AppendGroup(g)              self.clazz.AppendGroup(g)
448    
449          def convert(clazz):          def convert(group):
450              if isinstance(clazz, ClassGroupDefault):   return 0              if isinstance(group, ClassGroupDefault):   return 0
451              if isinstance(clazz, ClassGroupSingleton): return 1              if isinstance(group, ClassGroupSingleton): return 1
452              if isinstance(clazz, ClassGroupRange):     return 2              if isinstance(group, ClassGroupRange):     return 2
453    
454          list = []          list = []
455          for g in clazz:          for g in self.clazz:
456              list.append(convert(g))              list.append(convert(g))
457    
458          self.assertEquals(list, [0, 1, 1, 2, 1, 0])          self.assertEquals(list, [0, 1, 1, 2, 1, 0])

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26