Index: Core/Components/src/Core.Components.DotSpatial.Forms/BaseMap.cs =================================================================== diff -u -r880ce6f91c0318987639d8ebfb5356401a133ab1 -ra793fc9845a2b861d885170d22cd2353a7146403 --- Core/Components/src/Core.Components.DotSpatial.Forms/BaseMap.cs (.../BaseMap.cs) (revision 880ce6f91c0318987639d8ebfb5356401a133ab1) +++ Core/Components/src/Core.Components.DotSpatial.Forms/BaseMap.cs (.../BaseMap.cs) (revision a793fc9845a2b861d885170d22cd2353a7146403) @@ -24,7 +24,6 @@ using Core.Components.DotSpatial.Converter; using Core.Components.Gis.Data; using DotSpatial.Controls; -using DotSpatial.Extensions; using IMap = Core.Components.Gis.IMap; namespace Core.Components.DotSpatial.Forms @@ -39,7 +38,7 @@ private MapData data; private Map map; private IMapFunction mapFunctionSelectionZoom; - private IExtension mouseCoordinatesMapExtension; + private MouseCoordinatesMapExtension mouseCoordinatesMapExtension; /// /// Creates a new instance of . @@ -126,6 +125,13 @@ DrawFeatureSets(); } + protected override void Dispose(bool disposing) + {; + map.Dispose(); + mouseCoordinatesMapExtension.Dispose(); + base.Dispose(disposing); + } + private void ResetDefaultInteraction() { IsPanningEnabled = false; Index: Core/Components/src/Core.Components.DotSpatial/MouseCoordinatesMapExtension.cs =================================================================== diff -u -r111799e5d73ee730905b01286ccba855f352cae7 -ra793fc9845a2b861d885170d22cd2353a7146403 --- Core/Components/src/Core.Components.DotSpatial/MouseCoordinatesMapExtension.cs (.../MouseCoordinatesMapExtension.cs) (revision 111799e5d73ee730905b01286ccba855f352cae7) +++ Core/Components/src/Core.Components.DotSpatial/MouseCoordinatesMapExtension.cs (.../MouseCoordinatesMapExtension.cs) (revision a793fc9845a2b861d885170d22cd2353a7146403) @@ -28,7 +28,7 @@ /// /// An extension for the which shows the map coordinates of the mouse. /// - public class MouseCoordinatesMapExtension : Extension + public class MouseCoordinatesMapExtension : Extension, IDisposable { private readonly Map map; private readonly Label label; @@ -79,5 +79,10 @@ { label.Text = string.Format("X: {0:.#####} Y: {1:.#####}", e.GeographicLocation.X, e.GeographicLocation.Y); } + + public void Dispose() + { + label.Dispose(); + } } } \ No newline at end of file Index: Core/Components/test/Core.Components.DotSpatial.Forms.Test/BaseMapTest.cs =================================================================== diff -u -rc9f9c04e4fc62406231afd07d63cd7da11673ec6 -ra793fc9845a2b861d885170d22cd2353a7146403 --- Core/Components/test/Core.Components.DotSpatial.Forms.Test/BaseMapTest.cs (.../BaseMapTest.cs) (revision c9f9c04e4fc62406231afd07d63cd7da11673ec6) +++ Core/Components/test/Core.Components.DotSpatial.Forms.Test/BaseMapTest.cs (.../BaseMapTest.cs) (revision a793fc9845a2b861d885170d22cd2353a7146403) @@ -39,172 +39,189 @@ public void DefaultConstructor_DefaultValues() { // Call - var map = new BaseMap(); - - // Assert - Assert.IsInstanceOf(map); - Assert.IsInstanceOf(map); - Assert.IsNull(map.Data); - Assert.IsTrue(map.IsPanningEnabled); - Assert.IsFalse(map.IsRectangleZoomingEnabled); - Assert.IsTrue(map.IsMouseCoordinatesVisible); + using (var map = new BaseMap()) + { + // Assert + Assert.IsInstanceOf(map); + Assert.IsInstanceOf(map); + Assert.IsNull(map.Data); + Assert.IsTrue(map.IsPanningEnabled); + Assert.IsFalse(map.IsRectangleZoomingEnabled); + Assert.IsTrue(map.IsMouseCoordinatesVisible); + } } [Test] public void Data_UnknownMapData_ThrowsNotSupportedException() { // Setup - var map = new BaseMap(); - var testData = new TestMapData("test data"); + using (var map = new BaseMap()) + { + var testData = new TestMapData("test data"); - // Call - TestDelegate test = () => map.Data = testData; + // Call + TestDelegate test = () => map.Data = testData; - // Assert - Assert.Throws(test); + // Assert + Assert.Throws(test); + } } [Test] public void Data_Null_ReturnsNull() { // Setup - var map = new BaseMap(); + using (var map = new BaseMap()) + { + // Call + map.Data = null; - // Call - map.Data = null; - - // Assert - Assert.IsNull(map.Data); + // Assert + Assert.IsNull(map.Data); + } } [Test] public void Data_NotNull_ReturnsData() { // Setup - var map = new BaseMap(); - var testData = new MapPointData(Enumerable.Empty(), "test data"); + using (var map = new BaseMap()) + { + var testData = new MapPointData(Enumerable.Empty(), "test data"); - // Call - map.Data = testData; + // Call + map.Data = testData; - // Assert - Assert.AreSame(testData, map.Data); + // Assert + Assert.AreSame(testData, map.Data); + } } [Test] public void Data_SetPointData_MapPointLayerAdded() { // Setup - var map = new BaseMap(); - var testData = new MapPointData(Enumerable.Empty(), "test data"); - var mapView = map.Controls.OfType().First(); + using (var map = new BaseMap()) + { + var testData = new MapPointData(Enumerable.Empty(), "test data"); + var mapView = map.Controls.OfType().First(); - // Call - map.Data = testData; + // Call + map.Data = testData; - // Assert - Assert.IsInstanceOf(map.Data); - Assert.AreEqual(1, mapView.Layers.Count); - Assert.IsInstanceOf(mapView.Layers[0]); + // Assert + Assert.IsInstanceOf(map.Data); + Assert.AreEqual(1, mapView.Layers.Count); + Assert.IsInstanceOf(mapView.Layers[0]); + } } [Test] public void UpdateObserver_UpdateData_UpdateMap() { // Setup - var map = new BaseMap(); - var mapView = map.Controls.OfType().First(); - var testData = new MapDataCollection(new List + using (var map = new BaseMap()) { - new MapPointData(Enumerable.Empty(), "test data") - }, "test data"); + var mapView = map.Controls.OfType().First(); + var testData = new MapDataCollection(new List + { - map.Data = testData; + new MapPointData(Enumerable.Empty(), "test data") + }, "test data"); - // Precondition - Assert.AreEqual(1, mapView.Layers.Count); - Assert.IsInstanceOf(mapView.Layers[0]); + map.Data = testData; - testData.List.Add(new MapLineData(Enumerable.Empty(), "test data")); + // Precondition + Assert.AreEqual(1, mapView.Layers.Count); + Assert.IsInstanceOf(mapView.Layers[0]); - // Call - map.UpdateObserver(); + testData.List.Add(new MapLineData(Enumerable.Empty(), "test data")); - // Assert - Assert.AreEqual(2, mapView.Layers.Count); - Assert.IsInstanceOf(mapView.Layers[0]); - Assert.IsInstanceOf(mapView.Layers[1]); + // Call + map.UpdateObserver(); + + // Assert + Assert.AreEqual(2, mapView.Layers.Count); + Assert.IsInstanceOf(mapView.Layers[0]); + Assert.IsInstanceOf(mapView.Layers[1]); + } } [Test] public void Data_SetToNull_DetachObserver() { // Setup - var map = new BaseMap(); - var mapView = map.Controls.OfType().First(); - var testData = new MapDataCollection(new List + using (var map = new BaseMap()) { - new MapPointData(Enumerable.Empty(), "test data") - }, "test data"); + var mapView = map.Controls.OfType().First(); + var testData = new MapDataCollection(new List + { + new MapPointData(Enumerable.Empty(), "test data") + }, "test data"); - map.Data = testData; + map.Data = testData; - // Precondition - Assert.AreEqual(1, mapView.Layers.Count); - Assert.IsInstanceOf(mapView.Layers[0]); + // Precondition + Assert.AreEqual(1, mapView.Layers.Count); + Assert.IsInstanceOf(mapView.Layers[0]); - map.Data = null; + map.Data = null; - testData.List.Add(new MapPointData(Enumerable.Empty(), "test data")); + testData.List.Add(new MapPointData(Enumerable.Empty(), "test data")); - // Call - map.UpdateObserver(); + // Call + map.UpdateObserver(); - // Assert - Assert.IsNull(map.Data); - Assert.AreEqual(0, mapView.Layers.Count); + // Assert + Assert.IsNull(map.Data); + Assert.AreEqual(0, mapView.Layers.Count); + } } [Test] [RequiresSTA] public void ZoomToAll_MapInForm_ViewInvalidatedLayersSame() { // Setup - var form = new Form(); - var map = new BaseMap(); - var testData = new MapPointData(Enumerable.Empty(), "test data"); - var mapView = map.Controls.OfType().First(); - var invalidated = 0; + using (var form = new Form()) + { + var map = new BaseMap(); + var testData = new MapPointData(Enumerable.Empty(), "test data"); + var mapView = map.Controls.OfType().First(); + var invalidated = 0; - map.Data = testData; - form.Controls.Add(map); + map.Data = testData; + form.Controls.Add(map); - mapView.Invalidated += (sender, args) => { invalidated++; }; + mapView.Invalidated += (sender, args) => { invalidated++; }; - form.Show(); - Assert.AreEqual(0, invalidated, "Precondition failed: mapView.Invalidated > 0"); + form.Show(); + Assert.AreEqual(0, invalidated, "Precondition failed: mapView.Invalidated > 0"); - // Call - map.ZoomToAll(); + // Call + map.ZoomToAll(); - // Assert - Assert.AreEqual(2, invalidated); - Assert.AreEqual(mapView.GetMaxExtent(), mapView.ViewExtents); + // Assert + Assert.AreEqual(2, invalidated); + Assert.AreEqual(mapView.GetMaxExtent(), mapView.ViewExtents); + } } [Test] public void ToggleRectangleZooming_PanningIsEnabled_RectangleZoomingIsEnabled() { // Setup - var map = new BaseMap(); - Assert.IsFalse(map.IsRectangleZoomingEnabled, "Precondition failed: IsRectangleZoomingEnabled is true"); + using (var map = new BaseMap()) + { + Assert.IsFalse(map.IsRectangleZoomingEnabled, "Precondition failed: IsRectangleZoomingEnabled is true"); - // Call - map.ToggleRectangleZooming(); + // Call + map.ToggleRectangleZooming(); - // Assert - Assert.IsTrue(map.IsRectangleZoomingEnabled); - Assert.IsFalse(map.IsPanningEnabled); + // Assert + Assert.IsTrue(map.IsRectangleZoomingEnabled); + Assert.IsFalse(map.IsPanningEnabled); + } } [Test] @@ -213,23 +230,25 @@ public void ToggleRectangleZooming_Always_ChangesState(bool isRectangleZooming) { // Setup - var map = new BaseMap(); - if (isRectangleZooming) + using (var map = new BaseMap()) { - map.ToggleRectangleZooming(); - } + if (isRectangleZooming) + { + map.ToggleRectangleZooming(); + } - // Precondition - Assert.AreEqual(isRectangleZooming, map.IsRectangleZoomingEnabled, - String.Format("Precondition failed: IsRectangleZoomingEnabled is {0}", map.IsRectangleZoomingEnabled)); - Assert.AreEqual(!isRectangleZooming, map.IsPanningEnabled, - String.Format("Precondition failed: IsPanningEnabled is {0}", map.IsPanningEnabled)); + // Precondition + Assert.AreEqual(isRectangleZooming, map.IsRectangleZoomingEnabled, + String.Format("Precondition failed: IsRectangleZoomingEnabled is {0}", map.IsRectangleZoomingEnabled)); + Assert.AreEqual(!isRectangleZooming, map.IsPanningEnabled, + String.Format("Precondition failed: IsPanningEnabled is {0}", map.IsPanningEnabled)); - // Call - map.ToggleRectangleZooming(); + // Call + map.ToggleRectangleZooming(); - // Assert - Assert.IsTrue(map.IsRectangleZoomingEnabled); + // Assert + Assert.IsTrue(map.IsRectangleZoomingEnabled); + } } [Test] @@ -238,47 +257,50 @@ public void ToggleMouseCoordinatesVisibility_Always_ChangesState(bool isShowingCoordinates) { // Setup - var map = new BaseMap(); - - if (!isShowingCoordinates) + using (var map = new BaseMap()) { - // Make sure the state is correct - map.ToggleMouseCoordinatesVisibility(); + if (!isShowingCoordinates) + { + // Make sure the state is correct + map.ToggleMouseCoordinatesVisibility(); - // Precondition - Assert.IsFalse(map.IsMouseCoordinatesVisible); - } + // Precondition + Assert.IsFalse(map.IsMouseCoordinatesVisible); + } - // Call - map.ToggleMouseCoordinatesVisibility(); + // Call + map.ToggleMouseCoordinatesVisibility(); - // Assert - Assert.AreNotEqual(isShowingCoordinates, map.IsMouseCoordinatesVisible); + // Assert + Assert.AreNotEqual(isShowingCoordinates, map.IsMouseCoordinatesVisible); + } } [Test] [RequiresSTA] public void UpdateObserver_MapInForm_MapLayersRenewed() { // Setup - var form = new Form(); - var map = new BaseMap(); - var testData = new MapPointData(Enumerable.Empty(), "test data"); - var view = map.Controls.OfType().First(); + using (var form = new Form()) + { + var map = new BaseMap(); + var testData = new MapPointData(Enumerable.Empty(), "test data"); + var view = map.Controls.OfType().First(); - map.Data = testData; - var layers = view.Layers.ToList(); + map.Data = testData; + var layers = view.Layers.ToList(); - form.Controls.Add(map); + form.Controls.Add(map); - form.Show(); + form.Show(); - // Call - map.UpdateObserver(); + // Call + map.UpdateObserver(); - // Assert - Assert.AreEqual(1, view.Layers.Count); - Assert.AreNotSame(layers[0], view.Layers[0]); + // Assert + Assert.AreEqual(1, view.Layers.Count); + Assert.AreNotSame(layers[0], view.Layers[0]); + } } } } \ No newline at end of file Index: Core/Components/test/Core.Components.DotSpatial.Test/MouseCoordinatesMapExtensionTest.cs =================================================================== diff -u -r0ae90fc4b743f3808ba0d620682e8fde7417fa40 -ra793fc9845a2b861d885170d22cd2353a7146403 --- Core/Components/test/Core.Components.DotSpatial.Test/MouseCoordinatesMapExtensionTest.cs (.../MouseCoordinatesMapExtensionTest.cs) (revision 0ae90fc4b743f3808ba0d620682e8fde7417fa40) +++ Core/Components/test/Core.Components.DotSpatial.Test/MouseCoordinatesMapExtensionTest.cs (.../MouseCoordinatesMapExtensionTest.cs) (revision a793fc9845a2b861d885170d22cd2353a7146403) @@ -30,16 +30,17 @@ public class MouseCoordinatesMapExtensionTest { [Test] - public void Constructor_WithMap_DoesNotThrowException() + public void Constructor_WithMap_ExpectedValues() { // Setup var map = new Map(); // Call - TestDelegate call = () => new MouseCoordinatesMapExtension(map); - - // Assert - Assert.DoesNotThrow(call); + using (var extension = new MouseCoordinatesMapExtension(map)) + { + // Assert + Assert.IsInstanceOf(extension); + } } [Test] @@ -56,34 +57,36 @@ public void Activate_Always_AddsControlToMap() { // Setup - var map = new Map(); + using (var map = new Map()) + using (var extension = new MouseCoordinatesMapExtension(map)) + { - var extension = new MouseCoordinatesMapExtension(map); + // Call + extension.Activate(); - // Call - extension.Activate(); - - // Assert - Assert.AreEqual(1, map.Controls.Count); + // Assert + Assert.AreEqual(1, map.Controls.Count); + } } [Test] public void Deactivate_Always_RemovesControlFromMap() { // Setup - var map = new Map(); + using (var map = new Map()) + using (var extension = new MouseCoordinatesMapExtension(map)) + { + extension.Activate(); - var extension = new MouseCoordinatesMapExtension(map); - extension.Activate(); + // Precondition + Assert.AreEqual(1, map.Controls.Count); - // Precondition - Assert.AreEqual(1, map.Controls.Count); + // Call + extension.Deactivate(); - // Call - extension.Deactivate(); - - // Assert - Assert.AreEqual(0, map.Controls.Count); + // Assert + Assert.AreEqual(0, map.Controls.Count); + } } } } \ No newline at end of file Index: Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialGuiPluginTest.cs =================================================================== diff -u -rc9f9c04e4fc62406231afd07d63cd7da11673ec6 -ra793fc9845a2b861d885170d22cd2353a7146403 --- Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialGuiPluginTest.cs (.../DotSpatialGuiPluginTest.cs) (revision c9f9c04e4fc62406231afd07d63cd7da11673ec6) +++ Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialGuiPluginTest.cs (.../DotSpatialGuiPluginTest.cs) (revision a793fc9845a2b861d885170d22cd2353a7146403) @@ -104,9 +104,8 @@ { // Setup using (var plugin = new DotSpatialGuiPlugin()) + using (var view = new MapDataView()) { - var view = new MapDataView(); - // Call var views = plugin.GetViewInfos().ToArray(); Index: Core/Plugins/test/Core.Plugins.DotSpatial.Test/Forms/MapDataViewTest.cs =================================================================== diff -u -rc9f9c04e4fc62406231afd07d63cd7da11673ec6 -ra793fc9845a2b861d885170d22cd2353a7146403 --- Core/Plugins/test/Core.Plugins.DotSpatial.Test/Forms/MapDataViewTest.cs (.../MapDataViewTest.cs) (revision c9f9c04e4fc62406231afd07d63cd7da11673ec6) +++ Core/Plugins/test/Core.Plugins.DotSpatial.Test/Forms/MapDataViewTest.cs (.../MapDataViewTest.cs) (revision a793fc9845a2b861d885170d22cd2353a7146403) @@ -17,71 +17,78 @@ public void DefaultConstructor_DefaultValues() { // Call - var mapView = new MapDataView(); - - // Assert - Assert.IsInstanceOf(mapView); - Assert.IsInstanceOf(mapView); + using (var mapView = new MapDataView()) + { + // Assert + Assert.IsInstanceOf(mapView); + Assert.IsInstanceOf(mapView); + } } [Test] public void DefaultConstructor_Always_AddsBaseMap() { // Call - var mapView = new MapDataView(); + using (var mapView = new MapDataView()) + { + // Assert + Assert.AreEqual(1, mapView.Controls.Count); + object mapObject = mapView.Controls[0]; + Assert.IsInstanceOf(mapObject); - // Assert - Assert.AreEqual(1, mapView.Controls.Count); - object mapObject = mapView.Controls[0]; - Assert.IsInstanceOf(mapObject); - - var map = (BaseMap) mapObject; - Assert.AreEqual(DockStyle.Fill, map.Dock); - Assert.NotNull(mapView.Map); + var map = (BaseMap)mapObject; + Assert.AreEqual(DockStyle.Fill, map.Dock); + Assert.NotNull(mapView.Map); + } } [Test] public void Data_SetToNull_BaseMapNoFeatures() { // Setup - var mapView = new MapDataView(); - var map = (BaseMap) mapView.Controls[0]; + using (var mapView = new MapDataView()) + { + var map = (BaseMap)mapView.Controls[0]; - // Call - TestDelegate testDelegate = () => mapView.Data = null; + // Call + TestDelegate testDelegate = () => mapView.Data = null; - // Assert - Assert.DoesNotThrow(testDelegate); - Assert.IsNull(map.Data); + // Assert + Assert.DoesNotThrow(testDelegate); + Assert.IsNull(map.Data); + } } [Test] public void Data_SetToObject_ThrowsInvalidCastException() { // Setup - var mapView = new MapDataView(); + using (var mapView = new MapDataView()) + { + // Call + TestDelegate testDelegate = () => mapView.Data = new object(); - // Call - TestDelegate testDelegate = () => mapView.Data = new object(); - - // Assert - Assert.Throws(testDelegate); + // Assert + Assert.Throws(testDelegate); + } } [Test] public void Data_SetToMapPointData_MapDataSet() { // Setup - var mapView = new MapDataView(); - var map = (BaseMap) mapView.Controls[0]; - var pointData = new MapPointData(Enumerable.Empty(), "test data"); + using (var mapView = new MapDataView()) + { + var map = (BaseMap)mapView.Controls[0]; + var pointData = new MapPointData(Enumerable.Empty(), "test data"); - // Call - mapView.Data = pointData; + // Call + mapView.Data = pointData; - // Assert - Assert.AreSame(pointData, map.Data); - Assert.AreSame(pointData, mapView.Data); + // Assert + Assert.AreSame(pointData, map.Data); + Assert.AreSame(pointData, mapView.Data); + } } } } \ No newline at end of file