Index: Core/Common/src/Core.Common.Gui/PropertyBag/ObjectProperties.cs =================================================================== diff -u -r1ab3d180b9a6ea55959a33564b11bea9a10db3c8 -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Core/Common/src/Core.Common.Gui/PropertyBag/ObjectProperties.cs (.../ObjectProperties.cs) (revision 1ab3d180b9a6ea55959a33564b11bea9a10db3c8) +++ Core/Common/src/Core.Common.Gui/PropertyBag/ObjectProperties.cs (.../ObjectProperties.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -29,21 +29,12 @@ /// Base class for object properties with data of type . /// /// Type of . - public class ObjectProperties : IObjectProperties, IDisposable + public class ObjectProperties : IObjectProperties { - private readonly Observer refreshRequiredObserver; - protected T data; public event EventHandler RefreshRequired; - /// - /// Creates a new instance of . - /// - public ObjectProperties() - { - refreshRequiredObserver = new Observer(OnRefreshRequired); - } [Browsable(false)] public object Data @@ -55,16 +46,9 @@ set { data = (T) value; - - refreshRequiredObserver.Observable = value as IObservable; } } - public virtual void Dispose() - { - refreshRequiredObserver?.Dispose(); - } - /// /// Method for raising . /// Index: Core/Common/test/Core.Common.Gui.Test/PropertyBag/ObjectPropertiesTest.cs =================================================================== diff -u -raf8fe0bbc3b765d4361edc18f3e1ebb79141f4b5 -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Core/Common/test/Core.Common.Gui.Test/PropertyBag/ObjectPropertiesTest.cs (.../ObjectPropertiesTest.cs) (revision af8fe0bbc3b765d4361edc18f3e1ebb79141f4b5) +++ Core/Common/test/Core.Common.Gui.Test/PropertyBag/ObjectPropertiesTest.cs (.../ObjectPropertiesTest.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -22,7 +22,6 @@ using System; using System.ComponentModel; using System.Reflection; -using Core.Common.Base; using Core.Common.Gui.PropertyBag; using NUnit.Framework; @@ -35,140 +34,42 @@ public void DefaultConstructor_ExpectedValues() { // Call - using (var properties = new ObjectProperties()) - { - // Assert - Assert.IsInstanceOf(properties); - Assert.IsNull(properties.Data); - } + var properties = new ObjectProperties(); + + // Assert + Assert.IsInstanceOf(properties); + Assert.IsNull(properties.Data); } [Test] public void Data_SetValue_GetNewlySetValue() { // Setup - using (var properties = new ObjectProperties()) - { - const string text = "text"; + var properties = new ObjectProperties(); + const string text = "text"; - // Call - properties.Data = text; + // Call + properties.Data = text; - // Assert - Assert.AreEqual(text, properties.Data); - } + // Assert + Assert.AreEqual(text, properties.Data); } [Test] public void Data_IsNotBrowsable() { // Setup - using (var properties = new ObjectProperties()) - { - const string dataPropertyName = nameof(ObjectProperties.Data); - PropertyInfo propertyInfo = properties.GetType().GetProperty(dataPropertyName); + var properties = new ObjectProperties(); + const string dataPropertyName = nameof(ObjectProperties.Data); + PropertyInfo propertyInfo = properties.GetType().GetProperty(dataPropertyName); - // Call - var browsableAttribute = (BrowsableAttribute) Attribute.GetCustomAttribute(propertyInfo, - typeof(BrowsableAttribute), - true); + // Call + var browsableAttribute = (BrowsableAttribute) Attribute.GetCustomAttribute(propertyInfo, + typeof(BrowsableAttribute), + true); - // Assert - Assert.AreEqual(BrowsableAttribute.No, browsableAttribute); - } + // Assert + Assert.AreEqual(BrowsableAttribute.No, browsableAttribute); } - - [Test] - public void GivenObjectPropertiesWithObservableDataSet_WhenNotifyingObserver_RefreshRequiredEventRaised() - { - // Given - var observable = new SimpleObservable(); - using (var properties = new ObjectProperties - { - Data = observable - }) - { - var refreshRequiredRaised = 0; - properties.RefreshRequired += (sender, args) => refreshRequiredRaised++; - - // When - observable.NotifyObservers(); - - // Then - Assert.AreEqual(1, refreshRequiredRaised); - } - } - - [Test] - public void GivenObjectPropertiesWithNewObservableDataSet_WhenNotifyingPreviouslySetObserver_RefreshRequiredEventNotRaised() - { - // Given - var observable1 = new SimpleObservable(); - var observable2 = new SimpleObservable(); - using (var properties = new ObjectProperties - { - Data = observable1 - }) - { - properties.Data = observable2; - - var refreshRequiredRaised = 0; - properties.RefreshRequired += (sender, args) => refreshRequiredRaised++; - - // When - observable1.NotifyObservers(); - - // Then - Assert.AreEqual(0, refreshRequiredRaised); - } - } - - [Test] - public void GivenObjectPropertiesWithNewObservableDataSet_WhenNotifyingNewlySetObserver_RefreshRequiredEventRaised() - { - // Given - var observable1 = new SimpleObservable(); - var observable2 = new SimpleObservable(); - using (var properties = new ObjectProperties - { - Data = observable1 - }) - { - properties.Data = observable2; - - var refreshRequiredRaised = 0; - properties.RefreshRequired += (sender, args) => refreshRequiredRaised++; - - // When - observable2.NotifyObservers(); - - // Then - Assert.AreEqual(1, refreshRequiredRaised); - } - } - - [Test] - public void GivenDisposedObjectPropertiesWithObservableDataSet_WhenNotifyingObserver_RefreshRequiredEventNotRaised() - { - // Given - var observable = new SimpleObservable(); - var properties = new ObjectProperties - { - Data = observable - }; - - var refreshRequiredRaised = 0; - properties.RefreshRequired += (sender, args) => refreshRequiredRaised++; - - properties.Dispose(); - - // When - observable.NotifyObservers(); - - // Then - Assert.AreEqual(0, refreshRequiredRaised); - } - - private class SimpleObservable : Observable {} } } \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/FailureMechanismSectionsProbabilityAssessmentProperties.cs =================================================================== diff -u -r7111575120feef926652228c88b963ae1c18287e -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/FailureMechanismSectionsProbabilityAssessmentProperties.cs (.../FailureMechanismSectionsProbabilityAssessmentProperties.cs) (revision 7111575120feef926652228c88b963ae1c18287e) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/FailureMechanismSectionsProbabilityAssessmentProperties.cs (.../FailureMechanismSectionsProbabilityAssessmentProperties.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -37,7 +37,7 @@ /// /// ViewModel of of for properties panel. /// - public class FailureMechanismSectionsProbabilityAssessmentProperties : ObjectProperties> + public class FailureMechanismSectionsProbabilityAssessmentProperties : ObjectProperties>, IDisposable { private readonly Observer failureMechanismObserver; private readonly IProbabilityAssessmentInput probabilityAssessmentInput; @@ -91,11 +91,9 @@ } } - public override void Dispose() + public void Dispose() { failureMechanismObserver.Dispose(); - - base.Dispose(); } } } \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/FailureMechanismSectionsProperties.cs =================================================================== diff -u -r4858139553103583b5dafc0d3a3c85e72d126a0b -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/FailureMechanismSectionsProperties.cs (.../FailureMechanismSectionsProperties.cs) (revision 4858139553103583b5dafc0d3a3c85e72d126a0b) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/FailureMechanismSectionsProperties.cs (.../FailureMechanismSectionsProperties.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -37,7 +37,7 @@ /// ViewModel of of /// with a section specific N for the properties panel. /// - public class FailureMechanismSectionsProperties : ObjectProperties> + public class FailureMechanismSectionsProperties : ObjectProperties>, IDisposable { private readonly Observer failureMechanismObserver; @@ -80,11 +80,9 @@ } } - public override void Dispose() + public void Dispose() { failureMechanismObserver.Dispose(); - - base.Dispose(); } } } \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationsProperties.cs =================================================================== diff -u -r9a4eded3d7de675594c149438dbc9512674cc5c2 -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationsProperties.cs (.../HydraulicBoundaryLocationsProperties.cs) (revision 9a4eded3d7de675594c149438dbc9512674cc5c2) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationsProperties.cs (.../HydraulicBoundaryLocationsProperties.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -29,7 +29,7 @@ /// /// ViewModel of an enumeration of for properties panel. /// - public abstract class HydraulicBoundaryLocationsProperties : ObjectProperties> + public abstract class HydraulicBoundaryLocationsProperties : ObjectProperties>, IDisposable { private readonly RecursiveObserver, HydraulicBoundaryLocation> hydraulicBoundaryLocationObserver; @@ -53,11 +53,9 @@ Data = hydraulicBoundaryLocations; } - public override void Dispose() + public void Dispose() { hydraulicBoundaryLocationObserver.Dispose(); - - base.Dispose(); } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/FailureMechanismSectionsProbabilityAssessmentPropertiesTest.cs =================================================================== diff -u -r7111575120feef926652228c88b963ae1c18287e -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/FailureMechanismSectionsProbabilityAssessmentPropertiesTest.cs (.../FailureMechanismSectionsProbabilityAssessmentPropertiesTest.cs) (revision 7111575120feef926652228c88b963ae1c18287e) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/FailureMechanismSectionsProbabilityAssessmentPropertiesTest.cs (.../FailureMechanismSectionsProbabilityAssessmentPropertiesTest.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -120,6 +120,7 @@ { // Assert Assert.IsInstanceOf>>(properties); + Assert.IsInstanceOf(properties); Assert.AreSame(sections, properties.Data); TestHelper.AssertTypeConverter( Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/FailureMechanismSectionsPropertiesTest.cs =================================================================== diff -u -r7111575120feef926652228c88b963ae1c18287e -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/FailureMechanismSectionsPropertiesTest.cs (.../FailureMechanismSectionsPropertiesTest.cs) (revision 7111575120feef926652228c88b963ae1c18287e) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/FailureMechanismSectionsPropertiesTest.cs (.../FailureMechanismSectionsPropertiesTest.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -86,6 +86,7 @@ { // Assert Assert.IsInstanceOf>>(properties); + Assert.IsInstanceOf(properties); Assert.AreSame(sections, properties.Data); TestHelper.AssertTypeConverter( Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationsPropertiesTest.cs =================================================================== diff -u -r9a4eded3d7de675594c149438dbc9512674cc5c2 -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationsPropertiesTest.cs (.../HydraulicBoundaryLocationsPropertiesTest.cs) (revision 9a4eded3d7de675594c149438dbc9512674cc5c2) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationsPropertiesTest.cs (.../HydraulicBoundaryLocationsPropertiesTest.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -21,6 +21,7 @@ using System; using Core.Common.Base; +using Core.Common.Gui.PropertyBag; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; @@ -43,6 +44,21 @@ } [Test] + public void Constructor_ValidData_ExpectedValues() + { + // Setup + var locations = new ObservableList(); + + // Call + var properties = new TestHydraulicBoundaryLocationsProperties(locations); + + // Assert + Assert.IsInstanceOf>>(properties); + Assert.IsInstanceOf(properties); + Assert.AreSame(locations, properties.Data); + } + + [Test] public void GivenPropertyControlWithData_WhenSingleLocationUpdated_RefreshRequiredEventRaised() { // Given Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/PropertyClasses/DuneLocationsProperties.cs =================================================================== diff -u -r9a4eded3d7de675594c149438dbc9512674cc5c2 -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/PropertyClasses/DuneLocationsProperties.cs (.../DuneLocationsProperties.cs) (revision 9a4eded3d7de675594c149438dbc9512674cc5c2) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/PropertyClasses/DuneLocationsProperties.cs (.../DuneLocationsProperties.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -34,7 +34,7 @@ /// /// ViewModel of an enumeration of for the properties panel. /// - public class DuneLocationsProperties : ObjectProperties> + public class DuneLocationsProperties : ObjectProperties>, IDisposable { private readonly Func getCalculationFunc; private readonly RecursiveObserver, DuneLocation> locationObserver; @@ -81,11 +81,9 @@ } } - public override void Dispose() + public void Dispose() { locationObserver.Dispose(); - - base.Dispose(); } } } \ No newline at end of file Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Forms.Test/PropertyClasses/DuneLocationsPropertiesTest.cs =================================================================== diff -u -r9a4eded3d7de675594c149438dbc9512674cc5c2 -r2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Forms.Test/PropertyClasses/DuneLocationsPropertiesTest.cs (.../DuneLocationsPropertiesTest.cs) (revision 9a4eded3d7de675594c149438dbc9512674cc5c2) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Forms.Test/PropertyClasses/DuneLocationsPropertiesTest.cs (.../DuneLocationsPropertiesTest.cs) (revision 2bca78cdfd4e336f16bf2abfffb3f5ba4d46277d) @@ -23,6 +23,7 @@ using System.ComponentModel; using Core.Common.Base; using Core.Common.Gui.Converters; +using Core.Common.Gui.PropertyBag; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.DuneErosion.Data; @@ -59,7 +60,7 @@ } [Test] - public void GetProperties_WithData_ReturnExpectedValues() + public void Constructor_WithData_ReturnExpectedValues() { // Setup var location = new TestDuneLocation(); @@ -72,6 +73,9 @@ var properties = new DuneLocationsProperties(locations, l => new DuneLocationCalculation()); // Assert + Assert.IsInstanceOf>>(properties); + Assert.IsInstanceOf(properties); + Assert.AreEqual(1, properties.Locations.Length); Assert.AreSame(location, properties.Locations[0].Data); }