Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/PropertyClasses/DuneLocationCalculationsForUserDefinedTargetProbabilityProperties.cs =================================================================== diff -u -rfc993257e220986c72398ceb79ffc388881d72bc -r81b3fa7b45e8512447809a56a0e31a37ed67e652 --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/PropertyClasses/DuneLocationCalculationsForUserDefinedTargetProbabilityProperties.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityProperties.cs) (revision fc993257e220986c72398ceb79ffc388881d72bc) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/PropertyClasses/DuneLocationCalculationsForUserDefinedTargetProbabilityProperties.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityProperties.cs) (revision 81b3fa7b45e8512447809a56a0e31a37ed67e652) @@ -33,39 +33,39 @@ namespace Riskeer.DuneErosion.Forms.PropertyClasses { /// - /// ViewModel of a collection of for the properties panel. + /// ViewModel of a for the properties panel. /// - public class DuneLocationCalculationsForUserDefinedTargetProbabilityProperties : ObjectProperties>, IDisposable + public class DuneLocationCalculationsForUserDefinedTargetProbabilityProperties : ObjectProperties, IDisposable { private readonly IObservablePropertyChangeHandler targetProbabilityChangeHandler; private readonly RecursiveObserver, DuneLocationCalculation> calculationsObserver; - + /// /// Creates a new instance of . /// - /// The collection of dune location calculations to set as data. + /// The to show the properties for. /// The for when the target probability changes. /// Thrown when any parameter is null. - public DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(IObservableEnumerable calculations, + public DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(DuneLocationCalculationsForTargetProbability calculationsForTargetProbability, IObservablePropertyChangeHandler targetProbabilityChangeHandler) { - if (calculations == null) + if (calculationsForTargetProbability == null) { - throw new ArgumentNullException(nameof(calculations)); + throw new ArgumentNullException(nameof(calculationsForTargetProbability)); } - + if (targetProbabilityChangeHandler == null) { throw new ArgumentNullException(nameof(targetProbabilityChangeHandler)); } - Data = calculations; - + Data = calculationsForTargetProbability; + this.targetProbabilityChangeHandler = targetProbabilityChangeHandler; - + calculationsObserver = new RecursiveObserver, DuneLocationCalculation>(OnRefreshRequired, list => list) { - Observable = calculations + Observable = calculationsForTargetProbability.DuneLocationCalculations }; } @@ -90,7 +90,7 @@ private DuneLocationCalculationProperties[] GetDuneLocationCalculationProperties() { - return data.Select(calculation => new DuneLocationCalculationProperties(calculation)).ToArray(); + return data.DuneLocationCalculations.Select(calculation => new DuneLocationCalculationProperties(calculation)).ToArray(); } } } \ No newline at end of file Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs =================================================================== diff -u -rfc993257e220986c72398ceb79ffc388881d72bc -r81b3fa7b45e8512447809a56a0e31a37ed67e652 --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision fc993257e220986c72398ceb79ffc388881d72bc) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision 81b3fa7b45e8512447809a56a0e31a37ed67e652) @@ -80,7 +80,7 @@ yield return new PropertyInfo { CreateInstance = context => new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties( - context.WrappedData.DuneLocationCalculations, + context.WrappedData, new DuneLocationCalculationsForTargetProbabilityChangeHandler(context.WrappedData)) }; Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/PropertyClasses/DuneLocationCalculationsForUserDefinedTargetProbabilityPropertiesTest.cs =================================================================== diff -u -rc397fe309f6d1bc7ae91a04da0ba69bddc375123 -r81b3fa7b45e8512447809a56a0e31a37ed67e652 --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/PropertyClasses/DuneLocationCalculationsForUserDefinedTargetProbabilityPropertiesTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityPropertiesTest.cs) (revision c397fe309f6d1bc7ae91a04da0ba69bddc375123) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/PropertyClasses/DuneLocationCalculationsForUserDefinedTargetProbabilityPropertiesTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityPropertiesTest.cs) (revision 81b3fa7b45e8512447809a56a0e31a37ed67e652) @@ -21,11 +21,12 @@ using System; using System.ComponentModel; -using Core.Common.Base; using Core.Gui.Converters; using Core.Gui.PropertyBag; using Core.Gui.TestUtil; using NUnit.Framework; +using Rhino.Mocks; +using Riskeer.Common.Forms.PropertyClasses; using Riskeer.DuneErosion.Data; using Riskeer.DuneErosion.Data.TestUtil; using Riskeer.DuneErosion.Forms.PropertyClasses; @@ -38,52 +39,78 @@ private const int calculationsPropertyIndex = 0; [Test] - public void Constructor_CalculationsNull_ThrowsArgumentNullException() + public void Constructor_CalculationsForTargetProbabilityNull_ThrowsArgumentNullException() { + // Setup + var mocks = new MockRepository(); + var targetProbabilityChangeHandler = mocks.Stub(); + mocks.ReplayAll(); + // Call - void Call() => new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(null); + void Call() => new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(null, targetProbabilityChangeHandler); // Assert var exception = Assert.Throws(Call); - Assert.AreEqual("calculations", exception.ParamName); + Assert.AreEqual("calculationsForTargetProbability", exception.ParamName); + mocks.VerifyAll(); } [Test] + public void Constructor_TargetProbabilityChangeHandlerNull_ThrowsArgumentNullException() + { + // Call + void Call() => new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties( + new DuneLocationCalculationsForTargetProbability(), null); + + // Assert + string paramName = Assert.Throws(Call).ParamName; + Assert.AreEqual("targetProbabilityChangeHandler", paramName); + } + + [Test] public void Constructor_WithData_ReturnExpectedValues() { // Setup + var mocks = new MockRepository(); + var targetProbabilityChangeHandler = mocks.Stub(); + mocks.ReplayAll(); + var calculation = new DuneLocationCalculation(new TestDuneLocation()); - var duneLocationCalculations = new ObservableList + var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability { - calculation + DuneLocationCalculations = + { + calculation + } }; // Call - using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(duneLocationCalculations)) + using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(calculationsForTargetProbability, targetProbabilityChangeHandler)) { // Assert - Assert.IsInstanceOf>>(properties); + Assert.IsInstanceOf>(properties); Assert.IsInstanceOf(properties); - Assert.AreSame(duneLocationCalculations, properties.Data); + Assert.AreSame(calculationsForTargetProbability, properties.Data); Assert.AreEqual(1, properties.Calculations.Length); Assert.AreSame(calculation, properties.Calculations[0].Data); + + mocks.VerifyAll(); } } [Test] public void Constructor_Always_PropertiesHaveExpectedAttributesValues() { // Setup - var calculation = new DuneLocationCalculation(new TestDuneLocation()); - var duneLocationCalculations = new ObservableList - { - calculation - }; + var mocks = new MockRepository(); + var targetProbabilityChangeHandler = mocks.Stub(); + mocks.ReplayAll(); // Call - using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(duneLocationCalculations)) + using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties( + new DuneLocationCalculationsForTargetProbability(), targetProbabilityChangeHandler)) { // Assert PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); @@ -96,20 +123,29 @@ "Locaties", "Locaties uit de hydraulische belastingendatabase.", true); + + mocks.VerifyAll(); } } [Test] public void GivenPropertyControlWithData_WhenSingleCalculationUpdated_RefreshRequiredEventRaised() { // Given + var mocks = new MockRepository(); + var targetProbabilityChangeHandler = mocks.Stub(); + mocks.ReplayAll(); + var calculation = new DuneLocationCalculation(new TestDuneLocation()); - var duneLocationCalculations = new ObservableList + var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability { - calculation + DuneLocationCalculations = + { + calculation + } }; - using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(duneLocationCalculations)) + using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(calculationsForTargetProbability, targetProbabilityChangeHandler)) { var refreshRequiredRaised = 0; properties.RefreshRequired += (sender, args) => refreshRequiredRaised++; @@ -119,20 +155,29 @@ // Then Assert.AreEqual(1, refreshRequiredRaised); + + mocks.VerifyAll(); } } [Test] public void GivenDisposedPropertyControlWithData_WhenSingleCalculationUpdated_RefreshRequiredEventNotRaised() { // Given + var mocks = new MockRepository(); + var targetProbabilityChangeHandler = mocks.Stub(); + mocks.ReplayAll(); + var calculation = new DuneLocationCalculation(new TestDuneLocation()); - var duneLocationCalculations = new ObservableList + var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability { - calculation + DuneLocationCalculations = + { + calculation + } }; - using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(duneLocationCalculations)) + using (var properties = new DuneLocationCalculationsForUserDefinedTargetProbabilityProperties(calculationsForTargetProbability, targetProbabilityChangeHandler)) { var refreshRequiredRaised = 0; properties.RefreshRequired += (sender, args) => refreshRequiredRaised++; @@ -144,6 +189,8 @@ // Then Assert.AreEqual(0, refreshRequiredRaised); + + mocks.VerifyAll(); } } } Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/PropertyInfos/DuneLocationCalculationsForUserDefinedTargetProbabilityContextPropertyInfoTest.cs =================================================================== diff -u -r90f31177a15bf28c02bb3176529205e1bf3ded45 -r81b3fa7b45e8512447809a56a0e31a37ed67e652 --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/PropertyInfos/DuneLocationCalculationsForUserDefinedTargetProbabilityContextPropertyInfoTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContextPropertyInfoTest.cs) (revision 90f31177a15bf28c02bb3176529205e1bf3ded45) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/PropertyInfos/DuneLocationCalculationsForUserDefinedTargetProbabilityContextPropertyInfoTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContextPropertyInfoTest.cs) (revision 81b3fa7b45e8512447809a56a0e31a37ed67e652) @@ -49,7 +49,7 @@ } [Test] - public void CreateInstance_WithContext_SetsDuneLocationCalculationsAsData() + public void CreateInstance_WithContext_SetsDataCorrectly() { // Setup var mockRepository = new MockRepository(); @@ -69,7 +69,7 @@ // Assert Assert.IsInstanceOf(objectProperties); - Assert.AreSame(context.WrappedData.DuneLocationCalculations, objectProperties.Data); + Assert.AreSame(context.WrappedData, objectProperties.Data); } mockRepository.VerifyAll();