public void WaterVolumetricWeight_SetValidValue_SetsValueRoundedAndUpdatesObservers(double value)
        {
            // Setup
            var mocks      = new MockRepository();
            var observable = mocks.StrictMock <IObservable>();

            observable.Expect(o => o.NotifyObservers());
            mocks.ReplayAll();

            var failureMechanism = new PipingFailureMechanism();
            var roundedValue     = (RoundedDouble)value;

            var handler = new FailureMechanismSetPropertyValueAfterConfirmationParameterTester <PipingFailureMechanism, RoundedDouble>(
                failureMechanism,
                roundedValue,
                new[]
            {
                observable
            });

            var properties = new PipingFailureMechanismProperties(failureMechanism, handler);

            // Call
            properties.WaterVolumetricWeight = roundedValue;

            // Assert
            Assert.AreEqual(value, failureMechanism.GeneralInput.WaterVolumetricWeight,
                            failureMechanism.GeneralInput.WaterVolumetricWeight.GetAccuracy());
            Assert.IsTrue(handler.Called);

            mocks.VerifyAll();
        }
        public void WaterVolumetricWeight_SetInvalidValue_ThrowArgumentExceptionAndDoesNotUpdateObservers(double value)
        {
            // Setup
            var mocks      = new MockRepository();
            var observable = mocks.StrictMock <IObservable>();

            mocks.ReplayAll();

            var failureMechanism = new PipingFailureMechanism();
            var roundedValue     = (RoundedDouble)value;

            var handler = new FailureMechanismSetPropertyValueAfterConfirmationParameterTester <PipingFailureMechanism, RoundedDouble>(
                failureMechanism,
                roundedValue,
                new[]
            {
                observable
            });

            var properties = new PipingFailureMechanismProperties(failureMechanism, handler);

            // Call
            void Call() => properties.WaterVolumetricWeight = roundedValue;

            // Assert
            const string expectedMessage = "De waarde moet binnen het bereik [0,00, 20,00] liggen.";

            TestHelper.AssertThrowsArgumentExceptionAndTestMessage <ArgumentOutOfRangeException>(Call, expectedMessage);
            Assert.IsTrue(handler.Called);

            mocks.VerifyAll();
        }