// 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 System.Windows.Forms;
using Core.Common.Base;
using Core.Common.Base.Data;
using Core.Common.TestUtil;
using NUnit.Extensions.Forms;
using NUnit.Framework;
using Rhino.Mocks;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.Contribution;
using Ringtoets.Common.Data.Probability;
using Ringtoets.Common.Data.TestUtil;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.GrassCoverErosionOutwards.Data;
using Ringtoets.HeightStructures.Data;
using Ringtoets.HydraRing.Data;
using Ringtoets.Integration.Data;
using Ringtoets.Integration.Forms.Properties;
using Ringtoets.Integration.Forms.Views;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.KernelWrapper.TestUtil;
namespace Ringtoets.Integration.Forms.Test
{
[TestFixture]
public class FailureMechanismContributionViewIntegrationTest
{
[Test]
public void NormTextBox_ValueChanged_ClearsDependentDataAndNotifiesObserversAndLogsMessages()
{
// Setup
const int normValue = 200;
const int numberOfCalculations = 3;
var waveHeight = (RoundedDouble) 3.0;
var designWaterLevel = (RoundedDouble) 4.2;
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 0.0, 0.0)
{
WaveHeight = waveHeight,
DesignWaterLevel = designWaterLevel
};
var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
{
Locations =
{
hydraulicBoundaryLocation
}
};
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
{
HydraulicBoundaryDatabase = hydraulicBoundaryDatabase
};
var emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput());
var pipingCalculation = new PipingCalculation(new GeneralPipingInput())
{
Output = new TestPipingOutput()
};
var emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation();
var grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation
{
Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), 0)
};
var emptyHeightStructuresCalculation = new HeightStructuresCalculation();
var heightStructuresCalculation = new HeightStructuresCalculation
{
Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0)
};
var grassCoverErosionOutwardsHydraulicBoundaryLocation = new GrassCoverErosionOutwardsHydraulicBoundaryLocation(hydraulicBoundaryLocation)
{
WaveHeight = waveHeight,
DesignWaterLevel = designWaterLevel
};
assessmentSection.GrassCoverErosionOutwards.GrassCoverErosionOutwardsHydraulicBoundaryLocations.Add(grassCoverErosionOutwardsHydraulicBoundaryLocation);
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation);
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation);
FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;
MockRepository mockRepository = new MockRepository();
IObserver observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
IObserver calculationObserver = mockRepository.StrictMock();
calculationObserver.Expect(co => co.UpdateObserver()).Repeat.Times(numberOfCalculations);
IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock();
hydraulicBoundaryDatabaseObserver.Expect(hbdo => hbdo.UpdateObserver());
IObserver grassCoverErosionOutwardsObserver = mockRepository.StrictMock();
grassCoverErosionOutwardsObserver.Expect(o => o.UpdateObserver());
mockRepository.ReplayAll();
failureMechanismContribution.Attach(observerMock);
hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver);
emptyPipingCalculation.Attach(calculationObserver);
emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver);
emptyHeightStructuresCalculation.Attach(calculationObserver);
pipingCalculation.Attach(calculationObserver);
grassCoverErosionInwardsCalculation.Attach(calculationObserver);
heightStructuresCalculation.Attach(calculationObserver);
assessmentSection.GrassCoverErosionOutwards.GrassCoverErosionOutwardsHydraulicBoundaryLocations.Attach(grassCoverErosionOutwardsObserver);
using (var form = new Form())
using (var distributionView = new FailureMechanismContributionView
{
Data = failureMechanismContribution,
AssessmentSection = assessmentSection
})
{
form.Controls.Add(distributionView);
form.Show();
var normTester = new ControlTester("normInput");
// Precondition
Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text);
Assert.AreEqual(waveHeight, hydraulicBoundaryLocation.WaveHeight, hydraulicBoundaryLocation.WaveHeight.GetAccuracy());
Assert.AreEqual(designWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy());
Assert.AreEqual(waveHeight, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight.GetAccuracy());
Assert.AreEqual(designWaterLevel, grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel, grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy());
Assert.IsNotNull(pipingCalculation.Output);
Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output);
Assert.IsNotNull(heightStructuresCalculation.Output);
// Call
Action call = () => normTester.Properties.Text = normValue.ToString();
// Assert
TestHelper.AssertLogMessages(call, msgs =>
{
string[] messages = msgs.ToArray();
Assert.AreEqual(string.Format(Resources.FailureMechanismContributionView_NormValueChanged_Results_of_NumberOfCalculations_0_calculations_cleared, numberOfCalculations), messages[0]);
Assert.AreEqual(Resources.FailureMechanismContributionView_NormValueChanged_Waveheight_and_design_water_level_results_cleared, messages[1]);
});
Assert.AreEqual(normValue, failureMechanismContribution.Norm);
Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight);
Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel);
Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight);
Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel);
Assert.IsNull(pipingCalculation.Output);
Assert.IsNull(grassCoverErosionInwardsCalculation.Output);
Assert.IsNull(heightStructuresCalculation.Output);
}
mockRepository.VerifyAll();
}
[Test]
public void NormTextBox_HydraulicBoundarySetAndCalculationsNoOutput_HydraulicBoundaryDatabaseObserversNotifiedAndMessagesLogged()
{
// Setup
const int normValue = 200;
var waveHeight = (RoundedDouble) 3.0;
var designWaterLevel = (RoundedDouble) 4.2;
HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
hydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(1, "test", 0.0, 0.0)
{
WaveHeight = waveHeight,
DesignWaterLevel = designWaterLevel
});
AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
{
HydraulicBoundaryDatabase = hydraulicBoundaryDatabase
};
PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput());
GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation();
HeightStructuresCalculation emptyHeightStructuresCalculation = new HeightStructuresCalculation();
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation);
FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;
MockRepository mockRepository = new MockRepository();
IObserver observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
IObserver calculationObserver = mockRepository.StrictMock(); // No update observers expected.
IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock();
hydraulicBoundaryDatabaseObserver.Expect(hbdo => hbdo.UpdateObserver());
mockRepository.ReplayAll();
failureMechanismContribution.Attach(observerMock);
hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver);
emptyPipingCalculation.Attach(calculationObserver);
emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver);
emptyHeightStructuresCalculation.Attach(calculationObserver);
using (Form form = new Form())
using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView
{
Data = failureMechanismContribution,
AssessmentSection = assessmentSection
})
{
form.Controls.Add(distributionView);
form.Show();
ControlTester normTester = new ControlTester("normInput");
HydraulicBoundaryLocation hydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations[0];
// Precondition
Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text);
Assert.AreEqual(waveHeight, hydraulicBoundaryLocation.WaveHeight, hydraulicBoundaryLocation.WaveHeight.GetAccuracy());
Assert.AreEqual(designWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy());
// Call
Action call = () => normTester.Properties.Text = normValue.ToString();
// Assert
TestHelper.AssertLogMessageIsGenerated(call, Resources.FailureMechanismContributionView_NormValueChanged_Waveheight_and_design_water_level_results_cleared, 1);
Assert.AreEqual(normValue, failureMechanismContribution.Norm);
Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight);
Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel);
}
mockRepository.VerifyAll();
}
[Test]
public void NormTextBox_HydraulicBoundaryLocationNoOutputAndCalculationWithOutputAndValueChanged_CalculationObserverNotifiedAndMessageLogged()
{
// Setup
const int normValue = 200;
const int numberOfCalculations = 3;
HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
hydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(1, "test", 0.0, 0.0));
AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
{
HydraulicBoundaryDatabase = hydraulicBoundaryDatabase
};
PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput());
PipingCalculation pipingCalculation = new PipingCalculation(new GeneralPipingInput())
{
Output = new TestPipingOutput()
};
GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation();
GrassCoverErosionInwardsCalculation grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation
{
Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), 0)
};
HeightStructuresCalculation emptyHeightStructuresCalculation = new HeightStructuresCalculation();
HeightStructuresCalculation heightStructuresCalculation = new HeightStructuresCalculation
{
Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0)
};
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation);
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation);
FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;
MockRepository mockRepository = new MockRepository();
IObserver observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
IObserver calculationObserver = mockRepository.StrictMock();
calculationObserver.Expect(co => co.UpdateObserver()).Repeat.Times(numberOfCalculations);
IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); // No update observer expected.
mockRepository.ReplayAll();
failureMechanismContribution.Attach(observerMock);
hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver);
emptyPipingCalculation.Attach(calculationObserver);
emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver);
emptyHeightStructuresCalculation.Attach(calculationObserver);
pipingCalculation.Attach(calculationObserver);
grassCoverErosionInwardsCalculation.Attach(calculationObserver);
heightStructuresCalculation.Attach(calculationObserver);
using (Form form = new Form())
using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView
{
Data = failureMechanismContribution,
AssessmentSection = assessmentSection
})
{
form.Controls.Add(distributionView);
form.Show();
ControlTester normTester = new ControlTester("normInput");
// Precondition
Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text);
Assert.IsNotNull(pipingCalculation.Output);
Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output);
Assert.IsNotNull(heightStructuresCalculation.Output);
// Call
Action call = () => normTester.Properties.Text = normValue.ToString();
// Assert
string expectedMessage = string.Format(Resources.FailureMechanismContributionView_NormValueChanged_Results_of_NumberOfCalculations_0_calculations_cleared,
numberOfCalculations);
TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1);
Assert.AreEqual(normValue, failureMechanismContribution.Norm);
Assert.IsNull(pipingCalculation.Output);
Assert.IsNull(grassCoverErosionInwardsCalculation.Output);
Assert.IsNull(heightStructuresCalculation.Output);
}
mockRepository.VerifyAll();
}
[Test]
public void NormTextBox_NoHydraulicBoundaryLocationNoOutputAndCalcultionWithOutputAndValueChanged_CalculationObserverNotifiedAndMessageLogged()
{
// Setup
const int normValue = 200;
const int numberOfCalculations = 3;
AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput());
PipingCalculation pipingCalculation = new PipingCalculation(new GeneralPipingInput())
{
Output = new TestPipingOutput()
};
GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation();
GrassCoverErosionInwardsCalculation grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation
{
Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), 0)
};
HeightStructuresCalculation emptyHeightStructuresCalculation = new HeightStructuresCalculation();
HeightStructuresCalculation heightStructuresCalculation = new HeightStructuresCalculation
{
Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0)
};
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation);
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation);
FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;
MockRepository mockRepository = new MockRepository();
IObserver observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
IObserver calculationObserver = mockRepository.StrictMock();
calculationObserver.Expect(co => co.UpdateObserver()).Repeat.Times(numberOfCalculations);
mockRepository.ReplayAll();
failureMechanismContribution.Attach(observerMock);
emptyPipingCalculation.Attach(calculationObserver);
emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver);
emptyHeightStructuresCalculation.Attach(calculationObserver);
pipingCalculation.Attach(calculationObserver);
grassCoverErosionInwardsCalculation.Attach(calculationObserver);
heightStructuresCalculation.Attach(calculationObserver);
using (Form form = new Form())
using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView
{
Data = failureMechanismContribution,
AssessmentSection = assessmentSection
})
{
form.Controls.Add(distributionView);
form.Show();
ControlTester normTester = new ControlTester("normInput");
// Precondition
Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text);
Assert.IsNotNull(pipingCalculation.Output);
Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output);
Assert.IsNotNull(heightStructuresCalculation.Output);
// Call
Action call = () => normTester.Properties.Text = normValue.ToString();
// Assert
string expectedMessage = string.Format(Resources.FailureMechanismContributionView_NormValueChanged_Results_of_NumberOfCalculations_0_calculations_cleared,
numberOfCalculations);
TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1);
Assert.AreEqual(normValue, failureMechanismContribution.Norm);
Assert.IsNull(pipingCalculation.Output);
Assert.IsNull(grassCoverErosionInwardsCalculation.Output);
Assert.IsNull(heightStructuresCalculation.Output);
}
mockRepository.VerifyAll();
}
[Test]
public void NormTextBox_HydraulicBoundaryLocationNoOutputAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged()
{
// Setup
const int normValue = 200;
HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
hydraulicBoundaryDatabase.Locations.Add(new HydraulicBoundaryLocation(1, "test", 0.0, 0.0));
AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
{
HydraulicBoundaryDatabase = hydraulicBoundaryDatabase
};
PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput());
GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation();
HeightStructuresCalculation emptyHeightStructuresCalculation = new HeightStructuresCalculation();
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation);
FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;
MockRepository mockRepository = new MockRepository();
IObserver observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
IObserver calculationObserver = mockRepository.StrictMock();
IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock();
mockRepository.ReplayAll();
failureMechanismContribution.Attach(observerMock);
emptyPipingCalculation.Attach(calculationObserver);
emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver);
emptyHeightStructuresCalculation.Attach(calculationObserver);
hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver);
using (Form form = new Form())
using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView
{
Data = failureMechanismContribution,
AssessmentSection = assessmentSection
})
{
form.Controls.Add(distributionView);
form.Show();
ControlTester normTester = new ControlTester("normInput");
// Precondition
Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text);
// Call
Action call = () => normTester.Properties.Text = normValue.ToString();
// Assert
TestHelper.AssertLogMessagesCount(call, 0);
Assert.AreEqual(normValue, failureMechanismContribution.Norm);
}
mockRepository.VerifyAll(); // No update observer expected.
}
[Test]
public void NormTextBox_NoHydraulicBoundaryDatabaseAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged()
{
// Setup
const int normValue = 200;
AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput());
GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation();
HeightStructuresCalculation emptyHeightStructuresCalculation = new HeightStructuresCalculation();
assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation);
assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation);
assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation);
FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution;
MockRepository mockRepository = new MockRepository();
IObserver observerMock = mockRepository.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
IObserver calculationObserver = mockRepository.StrictMock();
mockRepository.ReplayAll();
failureMechanismContribution.Attach(observerMock);
emptyPipingCalculation.Attach(calculationObserver);
emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver);
emptyHeightStructuresCalculation.Attach(calculationObserver);
using (Form form = new Form())
using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView
{
Data = failureMechanismContribution,
AssessmentSection = assessmentSection
})
{
form.Controls.Add(distributionView);
form.Show();
ControlTester normTester = new ControlTester("normInput");
// Precondition
Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text);
// Call
Action call = () => normTester.Properties.Text = normValue.ToString();
// Assert
TestHelper.AssertLogMessagesCount(call, 0);
Assert.AreEqual(normValue, failureMechanismContribution.Norm);
}
mockRepository.VerifyAll(); // No update observer expected.
}
}
}