/[thuban]/branches/WIP-pyshapelib-bramz/test/test_layer.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/test_layer.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 336 by bh, Fri Sep 20 16:26:09 2002 UTC revision 723 by bh, Thu Apr 24 15:31:53 2003 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002 by Intevation GmbH  # Copyright (c) 2002, 2003 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 22  support.initthuban() Line 22  support.initthuban()
22  import shapelib  import shapelib
23  import dbflib  import dbflib
24    
25    from Thuban.Model.session import Session
26  from Thuban.Model.layer import Layer, SHAPETYPE_POLYGON, SHAPETYPE_ARC, \  from Thuban.Model.layer import Layer, SHAPETYPE_POLYGON, SHAPETYPE_ARC, \
27       SHAPETYPE_POINT       SHAPETYPE_POINT
28  from Thuban.Model.messages import LAYER_LEGEND_CHANGED, \  from Thuban.Model.messages import LAYER_LEGEND_CHANGED, \
# Line 38  class TestLayer(unittest.TestCase, suppo Line 39  class TestLayer(unittest.TestCase, suppo
39          for i in range(len(test)):          for i in range(len(test)):
40              self.assertFloatSeqEqual(test[i], value[i])              self.assertFloatSeqEqual(test[i], value[i])
41    
42        def setUp(self):
43            """Create a session"""
44            self.session = Session("Test session for %s" % self.__class__)
45    
46        def tearDown(self):
47            self.session = None
48    
49      def test_arc_layer(self):      def test_arc_layer(self):
50          """Test Layer with arc shapes"""          """Test Layer with arc shapes"""
51          layer = Layer("Test Layer",          filename = os.path.join("..", "Data", "iceland", "roads-line.shp")
52                        os.path.join("..", "Data", "iceland", "roads-line.shp"))          layer = Layer("Test Layer", self.session.OpenShapefile(filename))
53          self.assertEquals(layer.Title(), "Test Layer")          self.assertEquals(layer.Title(), "Test Layer")
54          self.assertEquals(layer.ShapeType(), SHAPETYPE_ARC)          self.assertEquals(layer.ShapeType(), SHAPETYPE_ARC)
55          self.assertEquals(layer.NumShapes(), 839)          self.assertEquals(layer.NumShapes(), 839)
# Line 54  class TestLayer(unittest.TestCase, suppo Line 62  class TestLayer(unittest.TestCase, suppo
62                                    -13.55668830871582, 66.520111083984375])                                    -13.55668830871582, 66.520111083984375])
63          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.75, 64.25)),          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.75, 64.25)),
64                            [613, 726, 838])                            [613, 726, 838])
65            layer.Destroy()
66    
67      def test_polygon_layer(self):      def test_polygon_layer(self):
68          """Test Layer with polygon shapes"""          """Test Layer with polygon shapes"""
69          layer = Layer("Test Layer",          filename = os.path.join("..", "Data", "iceland", "political.shp")
70                        os.path.join("..", "Data", "iceland", "political.shp"))          layer = Layer("Test Layer", self.session.OpenShapefile(filename))
71          self.assertEquals(layer.Title(), "Test Layer")          self.assertEquals(layer.Title(), "Test Layer")
72          self.assertEquals(layer.ShapeType(), SHAPETYPE_POLYGON)          self.assertEquals(layer.ShapeType(), SHAPETYPE_POLYGON)
73          self.assertEquals(layer.NumShapes(), 156)          self.assertEquals(layer.NumShapes(), 156)
# Line 73  class TestLayer(unittest.TestCase, suppo Line 82  class TestLayer(unittest.TestCase, suppo
82                                    -13.495815277099609, 66.563774108886719])                                    -13.495815277099609, 66.563774108886719])
83          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.9, 64.1)),          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.9, 64.1)),
84                            [91, 92, 144, 146, 148, 150, 152, 153])                            [91, 92, 144, 146, 148, 150, 152, 153])
85            layer.Destroy()
86    
87      def test_point_layer(self):      def test_point_layer(self):
88          """Test Layer with point shapes"""          """Test Layer with point shapes"""
89          layer = Layer("Test Layer",          filename = os.path.join("..", "Data", "iceland",
90                        os.path.join("..", "Data", "iceland",                                  "cultural_landmark-point.shp")
91                                     "cultural_landmark-point.shp"))          layer = Layer("Test Layer", self.session.OpenShapefile(filename))
92          self.assertEquals(layer.Title(), "Test Layer")          self.assertEquals(layer.Title(), "Test Layer")
93          self.assertEquals(layer.ShapeType(), SHAPETYPE_POINT)          self.assertEquals(layer.ShapeType(), SHAPETYPE_POINT)
94          self.assertEquals(layer.NumShapes(), 34)          self.assertEquals(layer.NumShapes(), 34)
# Line 90  class TestLayer(unittest.TestCase, suppo Line 100  class TestLayer(unittest.TestCase, suppo
100                                    -15.12291431427002, 66.36572265625])                                    -15.12291431427002, 66.36572265625])
101          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.80, 64.1)),          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.80, 64.1)),
102                            [0, 1, 2, 3, 4, 5, 27, 28, 29, 30, 31])                            [0, 1, 2, 3, 4, 5, 27, 28, 29, 30, 31])
103            layer.Destroy()
104    
105      def test_empty_layer(self):      def test_empty_layer(self):
106          """Test Layer with empty shape file"""          """Test Layer with empty shape file"""
# Line 104  class TestLayer(unittest.TestCase, suppo Line 115  class TestLayer(unittest.TestCase, suppo
115          dbf.add_field("NAME", dbflib.FTString, 20, 0)          dbf.add_field("NAME", dbflib.FTString, 20, 0)
116    
117          # Now try to open it.          # Now try to open it.
118          layer = Layer("Empty Layer", shapefilename)          layer = Layer("Empty Layer",
119                          self.session.OpenShapefile(shapefilename))
120          self.assertEquals(layer.BoundingBox(), None)          self.assertEquals(layer.BoundingBox(), None)
121          self.assertEquals(layer.LatLongBoundingBox(), None)          self.assertEquals(layer.LatLongBoundingBox(), None)
122          self.assertEquals(layer.NumShapes(), 0)          self.assertEquals(layer.NumShapes(), 0)
123            layer.Destroy()
124    
125    
126  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):
# Line 116  class TestLayerLegend(unittest.TestCase, Line 129  class TestLayerLegend(unittest.TestCase,
129      """      """
130    
131      def setUp(self):      def setUp(self):
132          """Clear the list of received messages and create a layer          """Clear the list of received messages and create a layer and a session
133    
134          The layer is bound to self.layer.          The layer is bound to self.layer and the session to self.session.
135          """          """
136          self.clear_messages()          self.clear_messages()
137            self.session = Session("Test session for %s" % self.__class__)
138            filename = os.path.join("..", "Data", "iceland", "political.shp")
139          self.layer = Layer("Test Layer",          self.layer = Layer("Test Layer",
140                             os.path.join("..", "Data", "iceland",                             self.session.OpenShapefile(filename))
                                         "political.shp"))  
141          self.layer.Subscribe(LAYER_LEGEND_CHANGED, self.subscribe_with_params,          self.layer.Subscribe(LAYER_LEGEND_CHANGED, self.subscribe_with_params,
142                               LAYER_LEGEND_CHANGED)                               LAYER_LEGEND_CHANGED)
143          self.layer.Subscribe(LAYER_VISIBILITY_CHANGED,          self.layer.Subscribe(LAYER_VISIBILITY_CHANGED,
# Line 134  class TestLayerLegend(unittest.TestCase, Line 148  class TestLayerLegend(unittest.TestCase,
148          """Clear the list of received messages and explictly destroy self.layer          """Clear the list of received messages and explictly destroy self.layer
149          """          """
150          self.layer.Destroy()          self.layer.Destroy()
151            self.layer = None
152            self.session.Destroy()
153            self.session = None
154          self.clear_messages()          self.clear_messages()
155    
156      def test_initial_settings(self):      def test_initial_settings(self):
157          """Test Layer's initial legend attributes"""          """Test Layer's initial legend attributes"""
158          # test default settings          # test default settings
159          self.failIf(self.layer.WasModified())          self.failIf(self.layer.WasModified())
160          self.assertEquals(self.layer.fill, None)          #self.assertEquals(self.layer.fill, None)
161          self.assertEquals(self.layer.stroke.hex(), "#000000")          #self.assertEquals(self.layer.stroke.hex(), "#000000")
162          self.assertEquals(self.layer.stroke_width, 1)          #self.assertEquals(self.layer.stroke_width, 1)
163          self.assertEquals(self.layer.Visible(), 1)          self.assertEquals(self.layer.Visible(), 1)
164          # no messages should have been produced          # no messages should have been produced
165          self.check_messages([])          self.check_messages([])
166    
     def test_fill(self):  
         """Test Layer's fill attribute"""  
         # modify the fill  
         self.layer.SetFill(Color(0.5, 1.0, 0.75))  
         self.check_messages([(self.layer, LAYER_LEGEND_CHANGED)])  
         self.assertEquals(self.layer.fill.hex().lower(), "#7fffbf")  
         self.assert_(self.layer.WasModified())  
   
     def test_stroke(self):  
         """Test Layer's stroke attribute"""  
         self.layer.SetStroke(Color(0.5, 1.0, 0.75))  
         self.assertEquals(self.layer.stroke.hex().lower(), "#7fffbf")  
         self.check_messages([(self.layer, LAYER_LEGEND_CHANGED)])  
         self.assert_(self.layer.WasModified())  
   
     def test_stroke_width(self):  
         """Test Layer's stroke_width attribute"""  
         self.layer.SetStrokeWidth(3.0)  
         self.assertEquals(self.layer.stroke_width, 3.0)  
         self.check_messages([(self.layer, LAYER_LEGEND_CHANGED)])  
         self.assert_(self.layer.WasModified())  
   
167      def test_visibility(self):      def test_visibility(self):
168          """Test Layer visibility"""          """Test Layer visibility"""
169          self.layer.SetVisible(0)          self.layer.SetVisible(0)
# Line 179  class TestLayerLegend(unittest.TestCase, Line 174  class TestLayerLegend(unittest.TestCase,
174          # the layer.          # the layer.
175          self.failIf(self.layer.WasModified())          self.failIf(self.layer.WasModified())
176    
177      def test_tree_info(self):      
178          """Test Layer.TreeInfo"""  #
179          self.assertEquals(self.layer.TreeInfo(),  # the tree info now contains Color objects which are difficult to test
180                            ("Layer 'Test Layer'",  #
181                             ['Shown',  #   def test_tree_info(self):
182                              'Shapes: 156',  #       """Test Layer.TreeInfo"""
183                              ('Extent (lat-lon):'  #       self.assertEquals(self.layer.TreeInfo(),
184                               ' (-24.5465, 63.2868, -13.4958, 66.5638)'),  #                         ("Layer 'Test Layer'",
185                              'Shapetype: Polygon',  #                          ['Shown',
186                              'Fill: None',  #                           'Shapes: 156',
187                              'Outline: (0.000, 0.000, 0.000)']))  #                           ('Extent (lat-lon):'
188    #                            ' (-24.5465, 63.2868, -13.4958, 66.5638)'),
189    #                           'Shapetype: Polygon',
190    #                           'Fill: None',
191    #                           'Outline: (0.000, 0.000, 0.000)']))
192    
193    
194  if __name__ == "__main__":  if __name__ == "__main__":
195      unittest.main()      support.run_tests()

Legend:
Removed from v.336  
changed lines
  Added in v.723

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26