Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingScenarioRowTest.cs
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingScenarioRowTest.cs (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingScenarioRowTest.cs (revision 687380451d612712c189e04e02da6103c0152d03)
@@ -0,0 +1,155 @@
+// 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 Core.Common.Base;
+using Core.Common.Base.Data;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.Common.Forms.Helpers;
+using Ringtoets.Piping.Data;
+using Ringtoets.Piping.Data.TestUtil;
+using Ringtoets.Piping.Forms.Views;
+
+using RingtoetsPipingDataResources = Ringtoets.Piping.Data.Properties.Resources;
+
+namespace Ringtoets.Piping.Forms.Test.Views
+{
+ [TestFixture]
+ public class PipingScenarioRowTest
+ {
+ [Test]
+ public void Constructor_WithoutPipingCalculation_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate test = () => new PipingScenarioRow(null);
+
+ // Assert
+ var paramName = Assert.Throws(test).ParamName;
+ Assert.AreEqual("pipingCalculation", paramName);
+ }
+
+ [Test]
+ public void Constructor_WithPipingCalculationWithSemiProbabilisticOutput_PropertiesFromPipingCalculation()
+ {
+ // Setup
+ var random = new Random(21);
+ var calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+ calculation.SemiProbabilisticOutput = new PipingSemiProbabilisticOutput(
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble(),
+ random.NextDouble());
+
+ // Call
+ var row = new PipingScenarioRow(calculation);
+
+ // Assert
+ Assert.AreSame(calculation, row.PipingCalculation);
+ Assert.AreEqual(calculation.Name, row.Name);
+ Assert.AreEqual(calculation.IsRelevant, row.IsRelevant);
+ Assert.AreEqual(calculation.Contribution * 100, row.Contribution);
+ Assert.AreEqual(ProbabilityFormattingHelper.Format(calculation.SemiProbabilisticOutput.PipingProbability), row.FailureProbabilityPiping);
+ Assert.AreEqual(ProbabilityFormattingHelper.Format(calculation.SemiProbabilisticOutput.UpliftProbability), row.FailureProbabilityUplift);
+ Assert.AreEqual(ProbabilityFormattingHelper.Format(calculation.SemiProbabilisticOutput.HeaveProbability), row.FailureProbabilityHeave);
+ Assert.AreEqual(ProbabilityFormattingHelper.Format(calculation.SemiProbabilisticOutput.SellmeijerProbability), row.FailureProbabilitySellmeijer);
+ }
+
+ [Test]
+ public void Constructor_WithPipingCalculationWithoutSemiProbabilisticOutput_PropertiesFromPipingCalculation()
+ {
+ // Setup
+ var calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+
+ // Call
+ var row = new PipingScenarioRow(calculation);
+
+ // Assert
+ Assert.AreSame(calculation, row.PipingCalculation);
+ Assert.AreEqual(calculation.Name, row.Name);
+ Assert.AreEqual(calculation.IsRelevant, row.IsRelevant);
+ Assert.AreEqual(calculation.Contribution * 100, row.Contribution);
+ Assert.AreEqual("-", row.FailureProbabilityPiping);
+ Assert.AreEqual("-", row.FailureProbabilityUplift);
+ Assert.AreEqual("-", row.FailureProbabilityHeave);
+ Assert.AreEqual("-", row.FailureProbabilitySellmeijer);
+ }
+
+ [Test]
+ [TestCase(false)]
+ [TestCase(true)]
+ public void IsRelevant_AlwaysOnChange_NotifyObserversAndCalculationPropertyChanged(bool newValue)
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observer = mocks.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ var calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+ calculation.Attach(observer);
+
+ var row = new PipingScenarioRow(calculation);
+
+ // Call
+ row.IsRelevant = newValue;
+
+ // Assert
+ Assert.AreEqual(newValue, calculation.IsRelevant);
+
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void Contribution_AlwaysOnChange_NotifyObserverAndCalculationPropertyChanged()
+ {
+ // Setup
+ var newValue = new Random().Next(0, 100);
+
+ var calculation = PipingCalculationFactory.CreateCalculationWithValidInput();
+ var row = new PipingScenarioRow(calculation);
+
+ int counter = 0;
+ using (new Observer(() => counter++)
+ {
+ Observable = calculation
+ })
+ {
+ // Call
+ row.Contribution = (RoundedDouble) newValue;
+
+ // Assert
+ Assert.AreEqual(1, counter);
+ Assert.AreEqual(new RoundedDouble(2, newValue), calculation.Contribution * 100);
+ }
+ }
+ }
+}
\ No newline at end of file