/[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 832 by jonathan, Tue May 6 12:07:36 2003 UTC revision 996 by bh, Thu May 22 18:21:10 2003 UTC
# Line 23  import shapelib Line 23  import shapelib
23  import dbflib  import dbflib
24    
25  from Thuban.Model.session import Session  from Thuban.Model.session import Session
26  from Thuban.Model.layer import Layer, SHAPETYPE_POLYGON, SHAPETYPE_ARC, \  from Thuban.Model.layer import BaseLayer, Layer, RasterLayer, \
27       SHAPETYPE_POINT       SHAPETYPE_POLYGON, SHAPETYPE_ARC, SHAPETYPE_POINT
28  from Thuban.Model.messages import LAYER_LEGEND_CHANGED, \  from Thuban.Model.messages import LAYER_LEGEND_CHANGED, \
29       LAYER_VISIBILITY_CHANGED       LAYER_VISIBILITY_CHANGED
30  from Thuban.Model.color import Color  from Thuban.Model.color import Color
31    from Thuban.Model.table import FIELDTYPE_DOUBLE
32    from Thuban.Model.proj import Projection
33    from Thuban.Model.data import DerivedShapeStore
34    
35  class TestLayer(unittest.TestCase, support.FileTestMixin,  class TestLayer(unittest.TestCase, support.FileTestMixin,
36                  support.FloatComparisonMixin):                  support.FloatComparisonMixin):
# Line 40  class TestLayer(unittest.TestCase, suppo Line 43  class TestLayer(unittest.TestCase, suppo
43              self.assertFloatSeqEqual(test[i], value[i])              self.assertFloatSeqEqual(test[i], value[i])
44    
45      def setUp(self):      def setUp(self):
46          """Create a session"""          """Create a session self.session and initialize self.layer to None"""
47          self.session = Session("Test session for %s" % self.__class__)          self.session = Session("Test session for %s" % self.__class__)
48            self.layer = None
49    
50      def tearDown(self):      def tearDown(self):
51            """Call the layer's Destroy method and set session and layer to None"""
52          self.session = None          self.session = None
53            if self.layer is not None:
54                self.layer.Destroy()
55                self.layer = None
56    
57        def build_path(self, filename):
58            return os.path.join("..", "Data", "iceland", filename)
59    
60        def open_shapefile(self, filename):
61            """Open and return a shapestore for filename in the iceland data set"""
62            return self.session.OpenShapefile(self.build_path(filename))
63    
64        def test_base_layer(self):
65            layer = self.layer = BaseLayer("Test BaseLayer")
66            self.assertEquals(layer.Title(), "Test BaseLayer")
67            self.failUnless(layer.Visible())
68    
69            # toggle visibility
70            layer.SetVisible(False)
71            self.failIf(layer.Visible())
72    
73            layer.SetVisible(True)
74            self.failUnless(layer.Visible())
75    
76            self.failIf(layer.HasClassification())
77            self.assertEquals(layer.GetProjection(), None)
78    
79            # set/get projection
80            proj = Projection(["proj=utm", "zone=26"])
81    
82            layer.SetProjection(proj)
83            self.failUnless(layer.GetProjection() is proj)
84    
85            # __init__ with other arguments
86            layer = BaseLayer("Test BaseLayer", False, proj)
87            self.failIf(layer.Visible())
88            self.failUnless(layer.GetProjection() is proj)
89    
90      def test_arc_layer(self):      def test_arc_layer(self):
91          """Test Layer with arc shapes"""          """Test Layer with arc shapes"""
92          filename = os.path.join("..", "Data", "iceland", "roads-line.shp")          layer = self.layer = Layer("Test Layer",
93          layer = Layer("Test Layer", self.session.OpenShapefile(filename))                                     self.open_shapefile("roads-line.shp"))
         self.assertEquals(layer.Title(), "Test Layer")  
94          self.assertEquals(layer.ShapeType(), SHAPETYPE_ARC)          self.assertEquals(layer.ShapeType(), SHAPETYPE_ARC)
95          self.assertEquals(layer.NumShapes(), 839)          self.assertEquals(layer.NumShapes(), 839)
96          shape = layer.Shape(32)          shape = layer.Shape(32)
# Line 81  class TestLayer(unittest.TestCase, suppo Line 121  class TestLayer(unittest.TestCase, suppo
121          self.assertEquals(layer.ShapesBoundingBox([]), None)          self.assertEquals(layer.ShapesBoundingBox([]), None)
122          self.assertEquals(layer.ShapesBoundingBox(None), None)          self.assertEquals(layer.ShapesBoundingBox(None), None)
123    
         layer.Destroy()  
   
124      def test_polygon_layer(self):      def test_polygon_layer(self):
125          """Test Layer with polygon shapes"""          """Test Layer with polygon shapes"""
126          filename = os.path.join("..", "Data", "iceland", "political.shp")          layer = self.layer = Layer("Test Layer",
127          layer = Layer("Test Layer", self.session.OpenShapefile(filename))                                     self.open_shapefile("political.shp"))
         self.assertEquals(layer.Title(), "Test Layer")  
128          self.assertEquals(layer.ShapeType(), SHAPETYPE_POLYGON)          self.assertEquals(layer.ShapeType(), SHAPETYPE_POLYGON)
129          self.assertEquals(layer.NumShapes(), 156)          self.assertEquals(layer.NumShapes(), 156)
130          shape = layer.Shape(4)          shape = layer.Shape(4)
# Line 101  class TestLayer(unittest.TestCase, suppo Line 138  class TestLayer(unittest.TestCase, suppo
138                                    -13.495815277099609, 66.563774108886719])                                    -13.495815277099609, 66.563774108886719])
139          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.9, 64.1)),          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.9, 64.1)),
140                            [91, 92, 144, 146, 148, 150, 152, 153])                            [91, 92, 144, 146, 148, 150, 152, 153])
         layer.Destroy()  
141    
142      def test_point_layer(self):      def test_point_layer(self):
143          """Test Layer with point shapes"""          """Test Layer with point shapes"""
144          filename = os.path.join("..", "Data", "iceland",          layer = self.layer = Layer("Test Layer",
145                                  "cultural_landmark-point.shp")                             self.open_shapefile("cultural_landmark-point.shp"))
         layer = Layer("Test Layer", self.session.OpenShapefile(filename))  
         self.assertEquals(layer.Title(), "Test Layer")  
146          self.assertEquals(layer.ShapeType(), SHAPETYPE_POINT)          self.assertEquals(layer.ShapeType(), SHAPETYPE_POINT)
147          self.assertEquals(layer.NumShapes(), 34)          self.assertEquals(layer.NumShapes(), 34)
148          shape = layer.Shape(0)          shape = layer.Shape(0)
# Line 119  class TestLayer(unittest.TestCase, suppo Line 153  class TestLayer(unittest.TestCase, suppo
153                                    -15.12291431427002, 66.36572265625])                                    -15.12291431427002, 66.36572265625])
154          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.80, 64.1)),          self.assertEquals(layer.ShapesInRegion((-24.0, 64.0, -23.80, 64.1)),
155                            [0, 1, 2, 3, 4, 5, 27, 28, 29, 30, 31])                            [0, 1, 2, 3, 4, 5, 27, 28, 29, 30, 31])
         layer.Destroy()  
156    
157      def test_empty_layer(self):      def test_empty_layer(self):
158          """Test Layer with empty shape file"""          """Test Layer with empty shape file"""
# Line 134  class TestLayer(unittest.TestCase, suppo Line 167  class TestLayer(unittest.TestCase, suppo
167          dbf.add_field("NAME", dbflib.FTString, 20, 0)          dbf.add_field("NAME", dbflib.FTString, 20, 0)
168    
169          # Now try to open it.          # Now try to open it.
170          layer = Layer("Empty Layer",          layer = self.layer = Layer("Empty Layer",
171                        self.session.OpenShapefile(shapefilename))                                     self.session.OpenShapefile(shapefilename))
172          self.assertEquals(layer.BoundingBox(), None)          self.assertEquals(layer.BoundingBox(), None)
173          self.assertEquals(layer.LatLongBoundingBox(), None)          self.assertEquals(layer.LatLongBoundingBox(), None)
174          self.assertEquals(layer.NumShapes(), 0)          self.assertEquals(layer.NumShapes(), 0)
175          layer.Destroy()  
176        def test_get_field_type(self):
177            """Test Layer.GetFieldType()"""
178            layer = self.layer = Layer("Test Layer",
179                                       self.open_shapefile("roads-line.shp"))
180            self.assertEquals(layer.GetFieldType("LENGTH"), FIELDTYPE_DOUBLE)
181            self.assertEquals(layer.GetFieldType("non existing"), None)
182    
183        def test_raster_layer(self):
184            filename = self.build_path("island.tif")
185            layer = RasterLayer("Test RasterLayer", filename)
186            self.assertEquals(layer.GetImageFilename(), filename)
187            self.assertFloatSeqEqual(layer.BoundingBox(),
188                                     [-24.5500000, 63.2833330,
189                                      -13.4916670, 66.5666670])
190            self.assertFloatSeqEqual(layer.LatLongBoundingBox(),
191                                     [-24.5500000, 63.2833330,
192                                      -13.4916670, 66.5666670])
193    
194        def test_derived_store(self):
195            """Test layer with derived store"""
196            layer = self.layer = Layer("Test Layer",
197                                       self.open_shapefile("roads-line.shp"))
198            try:
199                store = layer.ShapeStore()
200                derived = DerivedShapeStore(store, store.Table())
201                layer.SetShapeStore(derived)
202                self.assert_(layer.ShapeStore() is derived)
203            finally:
204                store = derived = None
205    
206    
207  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):

Legend:
Removed from v.832  
changed lines
  Added in v.996

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26