/[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 996 by bh, Thu May 22 18:21:10 2003 UTC revision 1174 by jonathan, Thu Jun 12 13:37:29 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  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
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):
# Line 181  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 204  class TestLayer(unittest.TestCase, suppo Line 210  class TestLayer(unittest.TestCase, suppo
210              store = derived = None              store = derived = None
211    
212    
213    class SetShapeStoreTests(unittest.TestCase, support.SubscriberMixin):
214    
215        def setUp(self):
216            """Create a layer with a classification as self.layer"""
217            self.clear_messages()
218            self.session = Session("Test session for %s" % self.__class__)
219            self.shapefilename = os.path.join("..", "Data", "iceland",
220                                              "cultural_landmark-point.dbf")
221            self.store = self.session.OpenShapefile(self.shapefilename)
222            self.layer = Layer("test layer", self.store)
223            self.classification = Classification(field = "CLPTLABEL")
224            self.classification.AppendGroup(ClassGroupSingleton("FARM"))
225            self.layer.SetClassification(self.classification)
226            self.layer.UnsetModified()
227            self.layer.Subscribe(LAYER_SHAPESTORE_REPLACED,
228                                 self.subscribe_with_params,
229                                 LAYER_SHAPESTORE_REPLACED)
230            self.layer.Subscribe(LAYER_CHANGED,
231                                 self.subscribe_with_params, LAYER_CHANGED)
232    
233        def tearDown(self):
234            self.clear_messages()
235            self.layer.Destroy()
236            self.session.Destroy()
237            self.session = self.layer = self.store = self.classification = None
238    
239        def test_sanity(self):
240            """SetShapeStoreTests sanity check
241    
242            Test the initial state of the test case instances after setUp.
243            """
244            cls = self.layer.GetClassification()
245            self.assert_(cls is self.classification)
246            self.assertEquals(cls.GetField(), "CLPTLABEL")
247            self.assertEquals(cls.GetFieldType(), FIELDTYPE_STRING)
248            self.assertEquals(self.layer.GetClassification().GetNumGroups(), 1)
249            self.failIf(self.layer.WasModified())
250    
251        def test_set_shape_store_modified_flag(self):
252            """Test whether Layer.SetShapeStore() sets the modified flag"""
253            memtable = MemoryTable([("FOO", FIELDTYPE_STRING)],
254                          [("bla",)] * self.layer.ShapeStore().Table().NumRows())
255            self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
256    
257            self.assert_(self.layer.WasModified())
258    
259        def test_set_shape_store_different_field_name(self):
260            """Test Layer.SetShapeStore() with different column name"""
261            memtable = MemoryTable([("FOO", FIELDTYPE_STRING)],
262                          [("bla",)] * self.layer.ShapeStore().Table().NumRows())
263            self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
264            # The classification should contain only the default group now.
265            self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)
266            self.check_messages([(self.layer, LAYER_CHANGED),
267                                 (self.layer, LAYER_SHAPESTORE_REPLACED)])
268    
269        def test_set_shape_store_same_field(self):
270            """Test Layer.SetShapeStore() with same column name and type"""
271            memtable = MemoryTable([("CLPTLABEL", FIELDTYPE_STRING)],
272                          [("bla",)] * self.layer.ShapeStore().Table().NumRows())
273            self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
274            # The classification should be the same as before
275            self.assert_(self.layer.GetClassification() is self.classification)
276            self.check_messages([(self.layer, LAYER_SHAPESTORE_REPLACED)])
277    
278        def test_set_shape_store_same_field_different_type(self):
279            """Test Layer.SetShapeStore() with same column name but different type
280            """
281            memtable = MemoryTable([("CLPTLABEL", FIELDTYPE_DOUBLE)],
282                          [(0.0,)] * self.layer.ShapeStore().Table().NumRows())
283            self.layer.SetShapeStore(DerivedShapeStore(self.store, memtable))
284            # The classification should contain only the default group now.
285            self.assertEquals(self.layer.GetClassification().GetNumGroups(), 0)
286            self.check_messages([(self.layer, LAYER_CHANGED),
287                                 (self.layer, LAYER_SHAPESTORE_REPLACED)])
288    
289    
290  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):  class TestLayerLegend(unittest.TestCase, support.SubscriberMixin):
291    
292      """Test cases for Layer method that modify the layer.      """Test cases for Layer method that modify the layer.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26