Index: Core/Components/src/Core.Components.DotSpatial/Converter/FeatureBasedMapDataConverter.cs =================================================================== diff -u -r6a120e6618195c2c7b56d31f7c24637f5baa17e3 -rcfaf7a697ebd90c7929af22bd4b17126ae03e6c0 --- Core/Components/src/Core.Components.DotSpatial/Converter/FeatureBasedMapDataConverter.cs (.../FeatureBasedMapDataConverter.cs) (revision 6a120e6618195c2c7b56d31f7c24637f5baa17e3) +++ Core/Components/src/Core.Components.DotSpatial/Converter/FeatureBasedMapDataConverter.cs (.../FeatureBasedMapDataConverter.cs) (revision cfaf7a697ebd90c7929af22bd4b17126ae03e6c0) @@ -91,7 +91,7 @@ layer.IsVisible = data.IsVisible; layer.Name = data.Name; layer.ShowLabels = data.ShowLabels; - ((IMapFeatureLayer) layer).LabelLayer = GetLabelLayer(GetAttributeMapping(data), layer.DataSet, data.SelectedMetaDataAttribute); + layer.LabelLayer = GetLabelLayer(GetAttributeMapping(data), layer.DataSet, data.SelectedMetaDataAttribute); layer.Symbolizer = CreateSymbolizer(data); } @@ -111,8 +111,8 @@ protected abstract IFeatureSymbolizer CreateSymbolizer(TFeatureBasedMapData mapData); /// - /// Converts an of to an - /// of . + /// Converts an of to an + /// of . /// /// The of to convert. /// The converted of . Index: Core/Components/test/Core.Components.DotSpatial.Test/Converter/FeatureBasedMapDataConverterTest.cs =================================================================== diff -u -racf1c815d99af1ce78dfd0b04b1949203c731803 -rcfaf7a697ebd90c7929af22bd4b17126ae03e6c0 --- Core/Components/test/Core.Components.DotSpatial.Test/Converter/FeatureBasedMapDataConverterTest.cs (.../FeatureBasedMapDataConverterTest.cs) (revision acf1c815d99af1ce78dfd0b04b1949203c731803) +++ Core/Components/test/Core.Components.DotSpatial.Test/Converter/FeatureBasedMapDataConverterTest.cs (.../FeatureBasedMapDataConverterTest.cs) (revision cfaf7a697ebd90c7929af22bd4b17126ae03e6c0) @@ -331,7 +331,7 @@ protected override IEnumerable CreateFeatures(MapFeature mapFeature) { - throw new NotImplementedException(); + return Enumerable.Empty(); } } } Index: Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapLineDataLayerTest.cs =================================================================== diff -u -r2387671968c5d81cf86332ae9e6860c5f34eb707 -rcfaf7a697ebd90c7929af22bd4b17126ae03e6c0 --- Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapLineDataLayerTest.cs (.../MapLineDataLayerTest.cs) (revision 2387671968c5d81cf86332ae9e6860c5f34eb707) +++ Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapLineDataLayerTest.cs (.../MapLineDataLayerTest.cs) (revision cfaf7a697ebd90c7929af22bd4b17126ae03e6c0) @@ -22,6 +22,7 @@ using System; using System.Drawing; using System.Drawing.Drawing2D; +using System.Linq; using Core.Common.Base.Geometry; using Core.Components.DotSpatial.Layer; using Core.Components.Gis.Data; @@ -81,6 +82,54 @@ AssertMapLineDataLayerTestProperties(mapLineDataLayer); } + [Test] + public void GivenMapLineDataLayer_WhenUpdatedAfterMapLineDataFeaturesChanged_MapLineDataLayerFeaturesChanged() + { + // Given + var mapLineData = new MapLineData("Test name") + { + Features = new[] + { + CreateTestMapFeature() + } + }; + + var mapLineDataLayer = new MapLineDataLayer(mapLineData); + var drawnFeatures = mapLineDataLayer.DataSet.Features.ToArray(); + + // When + mapLineData.Features = new[] + { + CreateTestMapFeature() + }; + mapLineDataLayer.Update(); + + // Then + CollectionAssert.AreNotEqual(drawnFeatures, mapLineDataLayer.DataSet.Features); + } + + [Test] + public void GivenMapLineDataLayer_WhenUpdatedAndMapLineDataFeaturesNotChanged_PreviousMapLineDataLayerFeaturesPreserved() + { + // Given + var mapLineData = new MapLineData("Test name") + { + Features = new[] + { + CreateTestMapFeature() + } + }; + + var mapLineDataLayer = new MapLineDataLayer(mapLineData); + var drawnFeatures = mapLineDataLayer.DataSet.Features.ToArray(); + + // When + mapLineDataLayer.Update(); + + // Then + CollectionAssert.AreEqual(drawnFeatures, mapLineDataLayer.DataSet.Features); + } + private static void SetMapLineDataTestProperties(MapLineData mapLineData) { mapLineData.Name = "Another test name"; Index: Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapPointDataLayerTest.cs =================================================================== diff -u -rd7d912bee9f281aa37e4fb3a077fcbb9b75f2224 -rcfaf7a697ebd90c7929af22bd4b17126ae03e6c0 --- Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapPointDataLayerTest.cs (.../MapPointDataLayerTest.cs) (revision d7d912bee9f281aa37e4fb3a077fcbb9b75f2224) +++ Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapPointDataLayerTest.cs (.../MapPointDataLayerTest.cs) (revision cfaf7a697ebd90c7929af22bd4b17126ae03e6c0) @@ -21,6 +21,7 @@ using System; using System.Drawing; +using System.Linq; using Core.Common.Base.Geometry; using Core.Components.DotSpatial.Layer; using Core.Components.Gis.Data; @@ -80,6 +81,54 @@ AssertMapPointDataLayerTestProperties(mapPointDataLayer); } + [Test] + public void GivenMapPointDataLayer_WhenUpdatedAfterMapPointDataFeaturesChanged_MapPointDataLayerFeaturesChanged() + { + // Given + var mapPointData = new MapPointData("Test name") + { + Features = new[] + { + CreateTestMapFeature() + } + }; + + var mapPointDataLayer = new MapPointDataLayer(mapPointData); + var drawnFeatures = mapPointDataLayer.DataSet.Features.ToArray(); + + // When + mapPointData.Features = new[] + { + CreateTestMapFeature() + }; + mapPointDataLayer.Update(); + + // Then + CollectionAssert.AreNotEqual(drawnFeatures, mapPointDataLayer.DataSet.Features); + } + + [Test] + public void GivenMapPointDataLayer_WhenUpdatedAndMapPointDataFeaturesNotChanged_PreviousMapPointDataLayerFeaturesPreserved() + { + // Given + var mapPointData = new MapPointData("Test name") + { + Features = new[] + { + CreateTestMapFeature() + } + }; + + var mapPointDataLayer = new MapPointDataLayer(mapPointData); + var drawnFeatures = mapPointDataLayer.DataSet.Features.ToArray(); + + // When + mapPointDataLayer.Update(); + + // Then + CollectionAssert.AreEqual(drawnFeatures, mapPointDataLayer.DataSet.Features); + } + private static void SetMapPointDataTestProperties(MapPointData mapPointData) { mapPointData.Name = "Another test name"; Index: Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapPolygonDataLayerTest.cs =================================================================== diff -u -r2387671968c5d81cf86332ae9e6860c5f34eb707 -rcfaf7a697ebd90c7929af22bd4b17126ae03e6c0 --- Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapPolygonDataLayerTest.cs (.../MapPolygonDataLayerTest.cs) (revision 2387671968c5d81cf86332ae9e6860c5f34eb707) +++ Core/Components/test/Core.Components.DotSpatial.Test/Layer/MapPolygonDataLayerTest.cs (.../MapPolygonDataLayerTest.cs) (revision cfaf7a697ebd90c7929af22bd4b17126ae03e6c0) @@ -21,6 +21,7 @@ using System; using System.Drawing; +using System.Linq; using Core.Common.Base.Geometry; using Core.Components.DotSpatial.Layer; using Core.Components.Gis.Data; @@ -80,6 +81,54 @@ AssertMapPolygonDataLayerTestProperties(mapPolygonDataLayer); } + [Test] + public void GivenMapPolygonDataLayer_WhenUpdatedAfterMapPolygonDataFeaturesChanged_MapPolygonDataLayerFeaturesChanged() + { + // Given + var mapPolygonData = new MapPolygonData("Test name") + { + Features = new[] + { + CreateTestMapFeature() + } + }; + + var mapPolygonDataLayer = new MapPolygonDataLayer(mapPolygonData); + var drawnFeatures = mapPolygonDataLayer.DataSet.Features.ToArray(); + + // When + mapPolygonData.Features = new[] + { + CreateTestMapFeature() + }; + mapPolygonDataLayer.Update(); + + // Then + CollectionAssert.AreNotEqual(drawnFeatures, mapPolygonDataLayer.DataSet.Features); + } + + [Test] + public void GivenMapPolygonDataLayer_WhenUpdatedAndMapPolygonDataFeaturesNotChanged_PreviousMapPolygonDataLayerFeaturesPreserved() + { + // Given + var mapPolygonData = new MapPolygonData("Test name") + { + Features = new[] + { + CreateTestMapFeature() + } + }; + + var mapPolygonDataLayer = new MapPolygonDataLayer(mapPolygonData); + var drawnFeatures = mapPolygonDataLayer.DataSet.Features.ToArray(); + + // When + mapPolygonDataLayer.Update(); + + // Then + CollectionAssert.AreEqual(drawnFeatures, mapPolygonDataLayer.DataSet.Features); + } + private static void SetMapPolygonDataTestProperties(MapPolygonData mapPolygonData) { mapPolygonData.Name = "Another test name";