/[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 1262 by jonathan, Fri Jun 20 14:15:30 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 182  class TestLayer(unittest.TestCase, suppo Line 184  class TestLayer(unittest.TestCase, suppo
184          self.assertEquals(layer.GetFieldType("non existing"), None)          self.assertEquals(layer.GetFieldType("non existing"), None)
185    
186      def test_raster_layer(self):      def test_raster_layer(self):
187            if not Thuban.Model.resource.has_gdal_support():
188                return
189    
190          filename = self.build_path("island.tif")          filename = self.build_path("island.tif")
191          layer = RasterLayer("Test RasterLayer", filename)          layer = RasterLayer("Test RasterLayer", filename)
192          self.assertEquals(layer.GetImageFilename(), filename)          self.assertEquals(layer.GetImageFilename(), filename)
# Line 201  class TestLayer(unittest.TestCase, suppo Line 206  class TestLayer(unittest.TestCase, suppo
206              derived = DerivedShapeStore(store, store.Table())              derived = DerivedShapeStore(store, store.Table())
207              layer.SetShapeStore(derived)              layer.SetShapeStore(derived)
208              self.assert_(layer.ShapeStore() is derived)              self.assert_(layer.ShapeStore() is derived)
209    
210                # check that an exception is raised when the number
211                # of shapes differ from the number of rows in a table.
212                layer2 = Layer("Test Layer",
213                               self.open_shapefile("political.shp"))
214                store2 = layer2.ShapeStore()
215                self.assertRaises(ValueError,
216                                  DerivedShapeStore, store2, store.Table())
217    
218          finally:          finally:
219              store = derived = None              store = derived = None
220                layer2.Destroy()
221                store2 = None
222    
223    
224  class SetShapeStoreTests(unittest.TestCase):  class SetShapeStoreTests(unittest.TestCase, support.SubscriberMixin):
225    
226      def setUp(self):      def setUp(self):
227          """Create a layer with a classification as self.layer"""          """Create a layer with a classification as self.layer"""
228            self.clear_messages()
229          self.session = Session("Test session for %s" % self.__class__)          self.session = Session("Test session for %s" % self.__class__)
230          self.shapefilename = os.path.join("..", "Data", "iceland",          self.shapefilename = os.path.join("..", "Data", "iceland",
231                                            "cultural_landmark-point.dbf")                                            "cultural_landmark-point.dbf")
# Line 217  class SetShapeStoreTests(unittest.TestCa Line 234  class SetShapeStoreTests(unittest.TestCa
234          self.classification = Classification(field = "CLPTLABEL")          self.classification = Classification(field = "CLPTLABEL")
235          self.classification.AppendGroup(ClassGroupSingleton("FARM"))          self.classification.AppendGroup(ClassGroupSingleton("FARM"))
236          self.layer.SetClassification(self.classification)          self.layer.SetClassification(self.classification)
237            self.layer.UnsetModified()
238            self.layer.Subscribe(LAYER_SHAPESTORE_REPLACED,
239                                 self.subscribe_with_params,
240                                 LAYER_SHAPESTORE_REPLACED)
241            self.layer.Subscribe(LAYER_CHANGED,
242                                 self.subscribe_with_params, LAYER_CHANGED)
243    
244      def tearDown(self):      def tearDown(self):
245            self.clear_messages()
246          self.layer.Destroy()          self.layer.Destroy()
247          self.session.Destroy()          self.session.Destroy()
248          self.session = self.layer = self.store = self.classification = None          self.session = self.layer = self.store = self.classification = None
249    
250      def test_sanity(self):      def test_sanity(self):
251          """SetShapeStoreTests sanity check"""          """SetShapeStoreTests sanity check
252    
253            Test the initial state of the test case instances after setUp.
254            """
255          cls = self.layer.GetClassification()          cls = self.layer.GetClassification()
256          self.assert_(cls is self.classification)          self.assert_(cls is self.classification)
257          self.assertEquals(cls.GetField(), "CLPTLABEL")          self.assertEquals(cls.GetField(), "CLPTLABEL")
258          self.assertEquals(cls.GetFieldType(), FIELDTYPE_STRING)          self.assertEquals(cls.GetFieldType(), FIELDTYPE_STRING)
259          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 1)          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 1)
260            self.failIf(self.layer.WasModified())
261    
262        def test_set_shape_store_modified_flag(self):
263            """Test whether Layer.SetShapeStore() sets the modified flag"""
264            memtable = MemoryTable([("FOO", FIELDTYPE_STRING)],
265                          [("bla",)] * self.layer.ShapeStore().Table().NumRows())
266            self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
267    
268            self.assert_(self.layer.WasModified())
269    
270      def test_set_shape_store_different_field_name(self):      def test_set_shape_store_different_field_name(self):
271          """Test Layer.SetShapeStore() with different column name"""          """Test Layer.SetShapeStore() with different column name"""
# Line 238  class SetShapeStoreTests(unittest.TestCa Line 274  class SetShapeStoreTests(unittest.TestCa
274          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
275          # The classification should contain only the default group now.          # The classification should contain only the default group now.
276          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)
277            self.check_messages([(self.layer, LAYER_CHANGED),
278                                 (self.layer, LAYER_SHAPESTORE_REPLACED)])
279    
280      def test_set_shape_store_same_field(self):      def test_set_shape_store_same_field(self):
281          """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 284  class SetShapeStoreTests(unittest.TestCa
284          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
285          # The classification should be the same as before          # The classification should be the same as before
286          self.assert_(self.layer.GetClassification() is self.classification)          self.assert_(self.layer.GetClassification() is self.classification)
287            self.check_messages([(self.layer, LAYER_SHAPESTORE_REPLACED)])
288    
289      def test_set_shape_store_same_field_different_type(self):      def test_set_shape_store_same_field_different_type(self):
290          """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 294  class SetShapeStoreTests(unittest.TestCa
294          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))          self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
295          # The classification should contain only the default group now.          # The classification should contain only the default group now.
296          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)          self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)
297            self.check_messages([(self.layer, LAYER_CHANGED),
298                                 (self.layer, LAYER_SHAPESTORE_REPLACED)])
299    
300    
301  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26