/[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 1088 by bh, Wed May 28 12:42:23 2003 UTC revision 1278 by jonathan, Fri Jun 20 17:46:58 2003 UTC
# Line 26  from Thuban.Model.session import Session Line 26  from Thuban.Model.session import Session
26  from Thuban.Model.layer import BaseLayer, Layer, RasterLayer, \  from Thuban.Model.layer import BaseLayer, Layer, RasterLayer, \
27       SHAPETYPE_POLYGON, SHAPETYPE_ARC, 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, LAYER_SHAPESTORE_REPLACED, LAYER_CHANGED
30  from Thuban.Model.color import Color  from Thuban.Model.color import Color
31  from Thuban.Model.table import FIELDTYPE_DOUBLE, FIELDTYPE_STRING, MemoryTable  from Thuban.Model.table import FIELDTYPE_DOUBLE, FIELDTYPE_STRING, MemoryTable
32  from Thuban.Model.proj import Projection  from Thuban.Model.proj import Projection
33  from Thuban.Model.data import DerivedShapeStore  from Thuban.Model.data import DerivedShapeStore
34  from Thuban.Model.classification import Classification, ClassGroupSingleton  from Thuban.Model.classification import Classification, ClassGroupSingleton
35    
36    import Thuban.Model.resource
37    
38  class TestLayer(unittest.TestCase, support.FileTestMixin,  class TestLayer(unittest.TestCase, support.FileTestMixin,
39                  support.FloatComparisonMixin):                  support.FloatComparisonMixin):
40    
# Line 75  class TestLayer(unittest.TestCase, suppo Line 77  class TestLayer(unittest.TestCase, suppo
77          self.failUnless(layer.Visible())          self.failUnless(layer.Visible())
78    
79          self.failIf(layer.HasClassification())          self.failIf(layer.HasClassification())
80            self.failIf(layer.HasShapes())
81    
82          self.assertEquals(layer.GetProjection(), None)          self.assertEquals(layer.GetProjection(), None)
83    
84          # set/get projection          # set/get projection
# Line 92  class TestLayer(unittest.TestCase, suppo Line 96  class TestLayer(unittest.TestCase, suppo
96          """Test Layer with arc shapes"""          """Test Layer with arc shapes"""
97          layer = self.layer = Layer("Test Layer",          layer = self.layer = Layer("Test Layer",
98                                     self.open_shapefile("roads-line.shp"))                                     self.open_shapefile("roads-line.shp"))
99            self.failUnless(layer.HasClassification())
100            self.failUnless(layer.HasShapes())
101          self.assertEquals(layer.ShapeType(), SHAPETYPE_ARC)          self.assertEquals(layer.ShapeType(), SHAPETYPE_ARC)
102          self.assertEquals(layer.NumShapes(), 839)          self.assertEquals(layer.NumShapes(), 839)
103          shape = layer.Shape(32)          shape = layer.Shape(32)
# Line 126  class TestLayer(unittest.TestCase, suppo Line 132  class TestLayer(unittest.TestCase, suppo
132          """Test Layer with polygon shapes"""          """Test Layer with polygon shapes"""
133          layer = self.layer = Layer("Test Layer",          layer = self.layer = Layer("Test Layer",
134                                     self.open_shapefile("political.shp"))                                     self.open_shapefile("political.shp"))
135            self.failUnless(layer.HasClassification())
136            self.failUnless(layer.HasShapes())
137          self.assertEquals(layer.ShapeType(), SHAPETYPE_POLYGON)          self.assertEquals(layer.ShapeType(), SHAPETYPE_POLYGON)
138          self.assertEquals(layer.NumShapes(), 156)          self.assertEquals(layer.NumShapes(), 156)
139          shape = layer.Shape(4)          shape = layer.Shape(4)
# Line 144  class TestLayer(unittest.TestCase, suppo Line 152  class TestLayer(unittest.TestCase, suppo
152          """Test Layer with point shapes"""          """Test Layer with point shapes"""
153          layer = self.layer = Layer("Test Layer",          layer = self.layer = Layer("Test Layer",
154                             self.open_shapefile("cultural_landmark-point.shp"))                             self.open_shapefile("cultural_landmark-point.shp"))
155            self.failUnless(layer.HasClassification())
156            self.failUnless(layer.HasShapes())
157          self.assertEquals(layer.ShapeType(), SHAPETYPE_POINT)          self.assertEquals(layer.ShapeType(), SHAPETYPE_POINT)
158          self.assertEquals(layer.NumShapes(), 34)          self.assertEquals(layer.NumShapes(), 34)
159          shape = layer.Shape(0)          shape = layer.Shape(0)
# Line 182  class TestLayer(unittest.TestCase, suppo Line 192  class TestLayer(unittest.TestCase, suppo
192          self.assertEquals(layer.GetFieldType("non existing"), None)          self.assertEquals(layer.GetFieldType("non existing"), None)
193    
194      def test_raster_layer(self):      def test_raster_layer(self):
195            if not Thuban.Model.resource.has_gdal_support():
196                return
197    
198          filename = self.build_path("island.tif")          filename = self.build_path("island.tif")
199          layer = RasterLayer("Test RasterLayer", filename)          layer = RasterLayer("Test RasterLayer", filename)
200            self.failIf(layer.HasClassification())
201            self.failIf(layer.HasShapes())
202          self.assertEquals(layer.GetImageFilename(), filename)          self.assertEquals(layer.GetImageFilename(), filename)
203          self.assertFloatSeqEqual(layer.BoundingBox(),          self.assertFloatSeqEqual(layer.BoundingBox(),
204                                   [-24.5500000, 63.2833330,                                   [-24.5500000, 63.2833330,
# Line 201  class TestLayer(unittest.TestCase, suppo Line 216  class TestLayer(unittest.TestCase, suppo
216              derived = DerivedShapeStore(store, store.Table())              derived = DerivedShapeStore(store, store.Table())
217              layer.SetShapeStore(derived)              layer.SetShapeStore(derived)
218              self.assert_(layer.ShapeStore() is derived)              self.assert_(layer.ShapeStore() is derived)
219    
220                # check that an exception is raised when the number
221                # of shapes differ from the number of rows in a table.
222                layer2 = Layer("Test Layer",
223                               self.open_shapefile("political.shp"))
224                store2 = layer2.ShapeStore()
225                self.assertRaises(ValueError,
226                                  DerivedShapeStore, store2, store.Table())
227    
228          finally:          finally:
229              store = derived = None              store = derived = None
230                layer2.Destroy()
231                store2 = None
232    
233    
234  class SetShapeStoreTests(unittest.TestCase):  class SetShapeStoreTests(unittest.TestCase, support.SubscriberMixin):
235    
236      def setUp(self):      def setUp(self):
237          """Create a layer with a classification as self.layer"""          """Create a layer with a classification as self.layer"""
238            self.clear_messages()
239          self.session = Session("Test session for %s" % self.__class__)          self.session = Session("Test session for %s" % self.__class__)
240          self.shapefilename = os.path.join("..", "Data", "iceland",          self.shapefilename = os.path.join("..", "Data", "iceland",
241                                            "cultural_landmark-point.dbf")                                            "cultural_landmark-point.dbf")
# Line 217  class SetShapeStoreTests(unittest.TestCa Line 244  class SetShapeStoreTests(unittest.TestCa
244          self.classification = Classification(field = "CLPTLABEL")          self.classification = Classification(field = "CLPTLABEL")
245          self.classification.AppendGroup(ClassGroupSingleton("FARM"))          self.classification.AppendGroup(ClassGroupSingleton("FARM"))
246          self.layer.SetClassification(self.classification)          self.layer.SetClassification(self.classification)
247            self.layer.UnsetModified()
248            self.layer.Subscribe(LAYER_SHAPESTORE_REPLACED,
249                                 self.subscribe_with_params,
250                                 LAYER_SHAPESTORE_REPLACED)
251            self.layer.Subscribe(LAYER_CHANGED,
252                                 self.subscribe_with_params, LAYER_CHANGED)
253    
254      def tearDown(self):      def tearDown(self):
255            self.clear_messages()
256          self.layer.Destroy()          self.layer.Destroy()
257          self.session.Destroy()          self.session.Destroy()
258          self.session = self.layer = self.store = self.classification = None          self.session = self.layer = self.store = self.classification = None
259    
260      def test_sanity(self):      def test_sanity(self):
261          """SetShapeStoreTests sanity check"""          """SetShapeStoreTests sanity check
262    
263            Test the initial state of the test case instances after setUp.
264            """
265          cls = self.layer.GetClassification()          cls = self.layer.GetClassification()
266          self.assert_(cls is self.classification)          self.assert_(cls is self.classification)
267          self.assertEquals(cls.GetField(), "CLPTLABEL")          self.assertEquals(cls.GetField(), "CLPTLABEL")
268          self.assertEquals(cls.GetFieldType(), FIELDTYPE_STRING)          self.assertEquals(cls.GetFieldType(), FIELDTYPE_STRING)
269          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 1)          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 1)
270            self.failIf(self.layer.WasModified())
271    
272        def test_set_shape_store_modified_flag(self):
273            """Test whether Layer.SetShapeStore() sets the modified flag"""
274            memtable = MemoryTable([("FOO", FIELDTYPE_STRING)],
275                          [("bla",)] * self.layer.ShapeStore().Table().NumRows())
276            self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
277    
278            self.assert_(self.layer.WasModified())
279    
280      def test_set_shape_store_different_field_name(self):      def test_set_shape_store_different_field_name(self):
281          """Test Layer.SetShapeStore() with different column name"""          """Test Layer.SetShapeStore() with different column name"""
# Line 238  class SetShapeStoreTests(unittest.TestCa Line 284  class SetShapeStoreTests(unittest.TestCa
284          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
285          # The classification should contain only the default group now.          # The classification should contain only the default group now.
286          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)
287            self.check_messages([(self.layer, LAYER_CHANGED),
288                                 (self.layer, LAYER_SHAPESTORE_REPLACED)])
289    
290      def test_set_shape_store_same_field(self):      def test_set_shape_store_same_field(self):
291          """Test Layer.SetShapeStore() with same column name and type"""          """Test Layer.SetShapeStore() with same column name and type"""
# Line 246  class SetShapeStoreTests(unittest.TestCa Line 294  class SetShapeStoreTests(unittest.TestCa
294          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
295          # The classification should be the same as before          # The classification should be the same as before
296          self.assert_(self.layer.GetClassification() is self.classification)          self.assert_(self.layer.GetClassification() is self.classification)
297            self.check_messages([(self.layer, LAYER_SHAPESTORE_REPLACED)])
298    
299      def test_set_shape_store_same_field_different_type(self):      def test_set_shape_store_same_field_different_type(self):
300          """Test Layer.SetShapeStore() with same column name but different type          """Test Layer.SetShapeStore() with same column name but different type
# Line 255  class SetShapeStoreTests(unittest.TestCa Line 304  class SetShapeStoreTests(unittest.TestCa
304          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
305          # The classification should contain only the default group now.          # The classification should contain only the default group now.
306          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)
307            self.check_messages([(self.layer, LAYER_CHANGED),
308                                 (self.layer, LAYER_SHAPESTORE_REPLACED)])
309    
310    
311  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):

Legend:
Removed from v.1088  
changed lines
  Added in v.1278

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26