Index: Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil.Test/CalculationInputSetPropertyValueAfterConfirmationParameterTesterTest.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil.Test/CalculationInputSetPropertyValueAfterConfirmationParameterTesterTest.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil.Test/CalculationInputSetPropertyValueAfterConfirmationParameterTesterTest.cs (revision b40918ecce110abdd8be9aef9ee156153bd412c3) @@ -0,0 +1,166 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Linq; +using Core.Common.Base; +using NUnit.Framework; +using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Forms.PropertyClasses; + +namespace Ringtoets.Common.Forms.TestUtil.Test +{ + [TestFixture] + public class CalculationInputSetPropertyValueAfterConfirmationParameterTesterTest + { + [Test] + public void Constructructed_Always_PropertiesSet() + { + // Setup + const double value = 3.0; + var testCalculationInput = new TestCalculationInput(); + var testCalculation = new TestCalculation(); + var returnedAffectedObjects = Enumerable.Empty(); + + // Call + var tester = new CalculationInputSetPropertyValueAfterConfirmationParameterTester( + testCalculationInput, testCalculation, value, returnedAffectedObjects); + + // Assert + Assert.IsInstanceOf>(tester); + Assert.AreSame(testCalculationInput, tester.ExpectedCalculationInput); + Assert.AreSame(testCalculation, tester.ExpectedCalculation); + Assert.AreEqual(value, tester.ExpectedValue); + Assert.AreSame(returnedAffectedObjects, tester.ReturnedAffectedObjects); + Assert.IsFalse(tester.Called); + } + + [Test] + public void SetPropertyValueAfterConfirmation_CalculationInputPassedNotSame_ThrowsAssertionException() + { + // Setup + const double value = 3.0; + var testCalculationInput = new TestCalculationInput(); + var passedCalculationInput = new TestCalculationInput(); + var testCalculation = new TestCalculation(); + var returnedAffectedObjects = Enumerable.Empty(); + + var tester = new CalculationInputSetPropertyValueAfterConfirmationParameterTester( + testCalculationInput, testCalculation, value, returnedAffectedObjects); + + // Call + TestDelegate test = () => tester.SetPropertyValueAfterConfirmation(passedCalculationInput, testCalculation, value, (input, v) => { }); + + // Assert + Assert.Throws(test); + Assert.IsTrue(tester.Called); + } + + [Test] + public void SetPropertyValueAfterConfirmation_CalculationPassedNotSame_ThrowsAssertionException() + { + // Setup + const double value = 3.0; + var testCalculationInput = new TestCalculationInput(); + var testCalculation = new TestCalculation(); + var passedCalculation = new TestCalculation(); + var returnedAffectedObjects = Enumerable.Empty(); + + var tester = new CalculationInputSetPropertyValueAfterConfirmationParameterTester( + testCalculationInput, testCalculation, value, returnedAffectedObjects); + + // Call + TestDelegate test = () => tester.SetPropertyValueAfterConfirmation(testCalculationInput, passedCalculation, value, (input, v) => { }); + + // Assert + Assert.Throws(test); + Assert.IsTrue(tester.Called); + } + + [Test] + public void SetPropertyValueAfterConfirmation_ValuePassedNotEqual_ThrowsAssertionException() + { + // Setup + const double expectedValue = 3.0; + const double passedValue = 2.0; + var testCalculationInput = new TestCalculationInput(); + var testCalculation = new TestCalculation(); + var returnedAffectedObjects = Enumerable.Empty(); + + var tester = new CalculationInputSetPropertyValueAfterConfirmationParameterTester( + testCalculationInput, testCalculation, expectedValue, returnedAffectedObjects); + + // Call + TestDelegate test = () => tester.SetPropertyValueAfterConfirmation(testCalculationInput, testCalculation, passedValue, (input, v) => { }); + + // Assert + Assert.Throws(test); + Assert.IsTrue(tester.Called); + } + + [Test] + public void SetPropertyValueAfterConfirmation_ParametersAreSameAndEqual_SetValueCalledReturnsGivenAffectedObjects() + { + // Setup + const double value = 3.0; + + var returnedAffectedObjects = Enumerable.Empty(); + var testCalculationInput = new TestCalculationInput(); + var testCalculation = new TestCalculation(); + var called = 0; + + var tester = new CalculationInputSetPropertyValueAfterConfirmationParameterTester( + testCalculationInput, testCalculation, value, returnedAffectedObjects); + + // Call + var affectedObjects = tester.SetPropertyValueAfterConfirmation(testCalculationInput, testCalculation, value, (m, v) => called++); + + // Assert + Assert.AreEqual(1, called); + Assert.AreSame(returnedAffectedObjects, affectedObjects); + Assert.IsTrue(tester.Called); + } + + [Test] + public void SetPropertyValueAfterConfirmation_SetValueThrowsException_BubblesException() + { + // Setup + const double value = 3.0; + + var returnedAffectedObjects = Enumerable.Empty(); + var testCalculationInput = new TestCalculationInput(); + var testCalculation = new TestCalculation(); + + var tester = new CalculationInputSetPropertyValueAfterConfirmationParameterTester( + testCalculationInput, testCalculation, value, returnedAffectedObjects); + + var expectedException = new Exception(); + + // Call + TestDelegate test = () => tester.SetPropertyValueAfterConfirmation(testCalculationInput, testCalculation, value, (input, v) => { throw expectedException; }); + + // Assert + var exception = Assert.Throws(test); + Assert.AreSame(expectedException, exception); + Assert.IsTrue(tester.Called); + } + } +} \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil.Test/Ringtoets.Common.Forms.TestUtil.Test.csproj =================================================================== diff -u -r50ddb1e22da777912b22e70497d1b67340ecaecd -rb40918ecce110abdd8be9aef9ee156153bd412c3 --- Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil.Test/Ringtoets.Common.Forms.TestUtil.Test.csproj (.../Ringtoets.Common.Forms.TestUtil.Test.csproj) (revision 50ddb1e22da777912b22e70497d1b67340ecaecd) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil.Test/Ringtoets.Common.Forms.TestUtil.Test.csproj (.../Ringtoets.Common.Forms.TestUtil.Test.csproj) (revision b40918ecce110abdd8be9aef9ee156153bd412c3) @@ -51,6 +51,7 @@ Properties\GlobalAssembly.cs + Index: Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/CalculationInputSetPropertyValueAfterConfirmationParameterTester.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/CalculationInputSetPropertyValueAfterConfirmationParameterTester.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/CalculationInputSetPropertyValueAfterConfirmationParameterTester.cs (revision b40918ecce110abdd8be9aef9ee156153bd412c3) @@ -0,0 +1,100 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using Core.Common.Base; +using NUnit.Framework; +using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Forms.PropertyClasses; + +namespace Ringtoets.Common.Forms.TestUtil +{ + /// + /// This class can be used in tests to verify that the correct arguments + /// are passed to the method. + /// + /// The type of the calculation input that is expected to be passed to the method. + /// The type of the calculation that is expected to be passed to the method. + /// The type of the value that is epected to be passed to the method. + public class CalculationInputSetPropertyValueAfterConfirmationParameterTester + : ICalculationInputPropertyChangeHandler + where TCalculationInput : ICalculationInput + where TCalculation : ICalculation + { + /// + /// Creates a new instance of . + /// + /// The calculation input that is expected to be passed to the . + /// The calculation that is expected to be passed to the . + /// The value that is expected to be passed to the . + /// The affected object that are returned by . + public CalculationInputSetPropertyValueAfterConfirmationParameterTester(TCalculationInput expectedCalculationInput, + TCalculation expectedCalculation, + TExpectedValue expectedValue, + IEnumerable returnedAffectedObjects) + { + ExpectedCalculationInput = expectedCalculationInput; + ExpectedCalculation = expectedCalculation; + ExpectedValue = expectedValue; + ReturnedAffectedObjects = returnedAffectedObjects; + } + + /// + /// Gets a value representing whether was called. + /// + public bool Called { get; private set; } + + /// + /// Gets the calculation input that is expected to be passed to the . + /// + public TCalculationInput ExpectedCalculationInput { get; } + + /// + /// Gets the calculation that is expected to be passed to the . + /// + public TCalculation ExpectedCalculation { get; } + + /// + /// Gets the value that is expected to be passed to the . + /// + public TExpectedValue ExpectedValue { get; } + + /// + /// Gets the affected object that are returned by . + /// + public IEnumerable ReturnedAffectedObjects { get; } + + public IEnumerable SetPropertyValueAfterConfirmation( + TCalculationInput calculationInput, + TCalculation calculation, + TValue value, + SetCalculationInputPropertyValueDelegate setValue) + { + Called = true; + Assert.AreSame(ExpectedCalculationInput, calculationInput); + Assert.AreSame(ExpectedCalculation, calculation); + Assert.AreEqual(ExpectedValue, value); + setValue(calculationInput, value); + return ReturnedAffectedObjects; + } + } +} \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/Ringtoets.Common.Forms.TestUtil.csproj =================================================================== diff -u -r50ddb1e22da777912b22e70497d1b67340ecaecd -rb40918ecce110abdd8be9aef9ee156153bd412c3 --- Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/Ringtoets.Common.Forms.TestUtil.csproj (.../Ringtoets.Common.Forms.TestUtil.csproj) (revision 50ddb1e22da777912b22e70497d1b67340ecaecd) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/Ringtoets.Common.Forms.TestUtil.csproj (.../Ringtoets.Common.Forms.TestUtil.csproj) (revision b40918ecce110abdd8be9aef9ee156153bd412c3) @@ -51,6 +51,7 @@ Properties\GlobalAssembly.cs +