/[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 1593 by bh, Fri Aug 15 14:10:27 2003 UTC revision 2351 by bh, Sat Sep 25 18:49:20 2004 UTC
# Line 1  Line 1 
1  # Copyright (c) 2002, 2003 by Intevation GmbH  # Copyright (c) 2002, 2003, 2004 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 48  class TestLayer(unittest.TestCase, suppo Line 48  class TestLayer(unittest.TestCase, suppo
48    
49      def tearDown(self):      def tearDown(self):
50          """Call the layer's Destroy method and set session and layer to None"""          """Call the layer's Destroy method and set session and layer to None"""
51            self.session.Destroy()
52          self.session = None          self.session = None
53          if self.layer is not None:          if self.layer is not None:
54              self.layer.Destroy()              self.layer.Destroy()
# Line 78  class TestLayer(unittest.TestCase, suppo Line 79  class TestLayer(unittest.TestCase, suppo
79          self.assertEquals(layer.GetProjection(), None)          self.assertEquals(layer.GetProjection(), None)
80    
81          # set/get projection          # set/get projection
82          proj = Projection(["proj=utm", "zone=26"])          proj = Projection(["proj=utm", "zone=26", "ellps=clrk66"])
83    
84          layer.SetProjection(proj)          layer.SetProjection(proj)
85          self.failUnless(layer.GetProjection() is proj)          self.failUnless(layer.GetProjection() is proj)
# Line 164  class TestLayer(unittest.TestCase, suppo Line 165  class TestLayer(unittest.TestCase, suppo
165          self.assertEquals([s.ShapeID() for s in shapes],          self.assertEquals([s.ShapeID() for s in shapes],
166                            [0, 1, 2, 3, 4, 5, 27, 28, 29, 30, 31])                            [0, 1, 2, 3, 4, 5, 27, 28, 29, 30, 31])
167    
168      def test_point_layer_with_projection(self):      def test_arc_layer_with_projection(self):
169          """Test Layer with point shapes and a projection"""          """Test Layer with point shapes and a projection"""
170          # We use mock data here so that we have precise control over the          # We use mock data here so that we have precise control over the
171          # values          # values
172          table = MemoryTable([("FOO", FIELDTYPE_STRING)], [("bla",)])          table = MemoryTable([("FOO", FIELDTYPE_STRING)], [("bla",)])
173          store = mockgeo.SimpleShapeStore(SHAPETYPE_POINT, [[[(10,10)]]], table)          store = mockgeo.SimpleShapeStore(SHAPETYPE_ARC,
174                                  [[[(9884828.7209840547, 5607720.9774499247),
175                                     (11298336.04640449, 9287823.2044059951)]]],
176                                             table)
177          layer = self.layer = Layer("Test Layer", store)          layer = self.layer = Layer("Test Layer", store)
178    
179          # Rotation by 45 degrees counter clockwise. This detects a bug          proj = Projection(["proj=lcc", "lon_0=0", "lat_1=20n", "lat_2=60n",
180          # in the ShapesInRegion method which transforms the bounding box                             "ellps=clrk66"])
         # by only transforming two opposite corners because they have  
         # the same x or y coordinates after application of the  
         # projection or its inverse.  
         proj = mockgeo.AffineProjection((1, 1, -1, 1, 0, 0))  
181          layer.SetProjection(proj)          layer.SetProjection(proj)
182    
183          self.assertEquals(layer.BoundingBox(), (10, 10, 10, 10))          self.assertFloatSeqEqual(layer.BoundingBox(),
184          self.assertEquals(layer.LatLongBoundingBox(), (10.0, 0.0, 10.0, 0.0))                                   (9884828.7209840547, 5607720.9774499247,
185          shapes = layer.ShapesInRegion((0, 0, 20, 20))                                    11298336.04640449, 9287823.2044059951))
186            self.assertFloatSeqEqual(layer.LatLongBoundingBox(),
187                                     (90.0, -8.90043373, 120, 11.1616263))
188            shapes = layer.ShapesInRegion((100, -10, 150, +10))
189          self.assertEquals([s.ShapeID() for s in shapes], [0])          self.assertEquals([s.ShapeID() for s in shapes], [0])
190            self.assertFloatSeqEqual(layer.ShapesBoundingBox([0]),
191                                     (90.0, -8.90043373, 120, 11.1616263))
192    
193            self.assertFloatSeqEqual(layer.ClipBoundingBox((-180, -6, 100, +120)),
194                                     (90.0, -6, 100, 11.1616263))
195            shapes = layer.ShapesInRegion((-180, -170, 200, +120))
196            self.assertEquals([s.ShapeID() for s in shapes],[0])
197    
198      def test_empty_layer(self):      def test_empty_layer(self):
199          """Test Layer with empty shape file"""          """Test Layer with empty shape file"""
# Line 196  class TestLayer(unittest.TestCase, suppo Line 206  class TestLayer(unittest.TestCase, suppo
206          dbffilename = self.temp_file_name("layer_empty.dbf")          dbffilename = self.temp_file_name("layer_empty.dbf")
207          dbf = dbflib.create(dbffilename)          dbf = dbflib.create(dbffilename)
208          dbf.add_field("NAME", dbflib.FTString, 20, 0)          dbf.add_field("NAME", dbflib.FTString, 20, 0)
209            dbf.close()
210    
211          # Now try to open it.          # Now try to open it.
212          layer = self.layer = Layer("Empty Layer",          layer = self.layer = Layer("Empty Layer",
# Line 219  class TestLayer(unittest.TestCase, suppo Line 230  class TestLayer(unittest.TestCase, suppo
230          layer = RasterLayer("Test RasterLayer", filename)          layer = RasterLayer("Test RasterLayer", filename)
231          self.failIf(layer.HasClassification())          self.failIf(layer.HasClassification())
232          self.failIf(layer.HasShapes())          self.failIf(layer.HasShapes())
233          self.assertEquals(layer.GetImageFilename(), filename)          self.assertEquals(layer.GetImageFilename(), os.path.abspath(filename))
234          self.assertFloatSeqEqual(layer.BoundingBox(),          self.assertFloatSeqEqual(layer.BoundingBox(),
235                                   [-24.5500000, 63.2833330,                                   [-24.5500000, 63.2833330,
236                                    -13.4916670, 66.5666670])                                    -13.4916670, 66.5666670])
# Line 349  class TestLayerModification(unittest.Tes Line 360  class TestLayerModification(unittest.Tes
360          """          """
361          self.clear_messages()          self.clear_messages()
362          self.session = Session("Test session for %s" % self.__class__)          self.session = Session("Test session for %s" % self.__class__)
363          filename = os.path.join("..", "Data", "iceland", "political.shp")          self.filename = os.path.join("..", "Data", "iceland", "political.shp")
364          self.layer = Layer("Test Layer",          self.layer = Layer("Test Layer",
365                             self.session.OpenShapefile(filename))                             self.session.OpenShapefile(self.filename))
366          self.layer.Subscribe(LAYER_LEGEND_CHANGED, self.subscribe_with_params,          self.layer.Subscribe(LAYER_LEGEND_CHANGED, self.subscribe_with_params,
367                               LAYER_LEGEND_CHANGED)                               LAYER_LEGEND_CHANGED)
368          self.layer.Subscribe(LAYER_VISIBILITY_CHANGED,          self.layer.Subscribe(LAYER_VISIBILITY_CHANGED,
# Line 410  class TestLayerModification(unittest.Tes Line 421  class TestLayerModification(unittest.Tes
421          self.failUnless(self.layer.WasModified())          self.failUnless(self.layer.WasModified())
422    
423    
424  #      def test_tree_info(self):
425  # the tree info now contains Color objects which are difficult to test          """Test Layer.TreeInfo"""
426  #          self.assertEquals(self.layer.TreeInfo(),
427  #   def test_tree_info(self):                            ("Layer 'Test Layer'",
428  #       """Test Layer.TreeInfo"""                             ['Filename: %s' % os.path.abspath(self.filename),
429  #       self.assertEquals(self.layer.TreeInfo(),                              'Shown',
430  #                         ("Layer 'Test Layer'",                              'Shapes: 156',
431  #                          ['Shown',                     'Extent (lat-lon): (-24.5465, 63.2868, -13.4958, 66.5638)',
432  #                           'Shapes: 156',                              'Shapetype: Polygon',
433  #                           ('Extent (lat-lon):'                              self.layer.GetClassification()]))
 #                            ' (-24.5465, 63.2868, -13.4958, 66.5638)'),  
 #                           'Shapetype: Polygon',  
 #                           'Fill: None',  
 #                           'Outline: (0.000, 0.000, 0.000)']))  
434    
435    
436  if __name__ == "__main__":  if __name__ == "__main__":

Legend:
Removed from v.1593  
changed lines
  Added in v.2351

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26