// Copyright (C) Stichting Deltares 2021. All rights reserved.
//
// This file is part of Riskeer.
//
// Riskeer 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 System.Linq;
using Core.Common.Base;
using Core.Common.TestUtil;
using NUnit.Framework;
using Rhino.Mocks;
using Riskeer.Common.Data.AssessmentSection;
using Riskeer.Common.Data.Contribution;
using Riskeer.Common.Data.Hydraulics;
using Riskeer.Common.Data.TestUtil;
using Riskeer.Common.Forms.Helpers;
using Riskeer.Common.Forms.MapLayers;
using Riskeer.Common.Forms.TestUtil;
namespace Riskeer.Common.Forms.Test.MapLayers
{
[TestFixture]
public class HydraulicBoundaryLocationsMapLayerTest
{
private const string waterLevelDisplayNameFormat = "h - {0}";
private const string waveHeightDisplayNameFormat = "Hs - {0}";
[Test]
public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException()
{
// Call
void Call() => new HydraulicBoundaryLocationsMapLayer(null);
// Assert
var exception = Assert.Throws(Call);
Assert.AreEqual("assessmentSection", exception.ParamName);
}
[Test]
public void Constructor_ExpectedValues()
{
// Setup
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
new HydraulicBoundaryLocation(1, "test", 1.0, 2.0)
});
// Call
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
// Assert
Assert.IsInstanceOf(mapLayer);
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
}
[Test]
public void GivenMapLayerWithHydraulicBoundaryLocations_WhenChangingHydraulicBoundaryLocationsDataAndObserversNotified_ThenMapDataUpdated()
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0)
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
new HydraulicBoundaryLocation(2, "test2", 2.0, 3.0)
});
assessmentSection.HydraulicBoundaryDatabase.Locations.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenFailureMechanismContributionUpdatedAndNotified_ThenMapDataUpdated()
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0)
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
var random = new Random(21);
FailureMechanismContribution contribution = assessmentSection.FailureMechanismContribution;
contribution.MaximumAllowableFloodingProbability = random.NextDouble(0.000001, 0.1);
contribution.SignalFloodingProbability = contribution.MaximumAllowableFloodingProbability - 0.000001;
contribution.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetCalculationFuncs))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenHydraulicBoundaryLocationCalculationUpdatedAndNotified_ThenMapDataUpdated(
Func getCalculationFunc)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
HydraulicBoundaryLocationCalculation calculation = getCalculationFunc(assessmentSection);
calculation.Output = new TestHydraulicBoundaryLocationCalculationOutput(new Random(21).NextDouble());
calculation.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncs))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenUserDefinedTargetProbabilitiesCollectionUpdatedAndNotified_ThenMapDataUpdated(
Func> getTargetProbabilitiesFunc)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
ObservableList targetProbabilities = getTargetProbabilitiesFunc(assessmentSection);
var newTargetProbability = new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1);
newTargetProbability.HydraulicBoundaryLocationCalculations.AddRange(assessmentSection.HydraulicBoundaryDatabase.Locations
.Select(l => new HydraulicBoundaryLocationCalculation(l)));
targetProbabilities.Add(newTargetProbability);
targetProbabilities.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncs))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenTargetProbabilityUpdatedAndNotified_ThenMapDataUpdated(
Func> getTargetProbabilitiesFunc)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
ObservableList targetProbabilities = getTargetProbabilitiesFunc(assessmentSection);
targetProbabilities.First().TargetProbability = 0.01;
targetProbabilities.First().NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncs))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenCalculationsForUserDefinedTargetProbabilitiesUpdatedAndNotified_ThenMapDataUpdated(
Func> getTargetProbabilitiesFunc)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
ObservableList targetProbabilities = getTargetProbabilitiesFunc(assessmentSection);
var newTargetProbability = new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1);
newTargetProbability.HydraulicBoundaryLocationCalculations.AddRange(assessmentSection.HydraulicBoundaryDatabase.Locations
.Select(l => new HydraulicBoundaryLocationCalculation(l))
.ToArray());
targetProbabilities.Add(newTargetProbability);
targetProbabilities.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
HydraulicBoundaryLocationCalculation calculation = newTargetProbability.HydraulicBoundaryLocationCalculations.First();
calculation.Output = new TestHydraulicBoundaryLocationCalculationOutput(new Random(21).NextDouble());
calculation.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncs))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenCalculationsForRemovedUserDefinedTargetProbabilitiesUpdatedAndNotified_ThenMapDataNotUpdated(
Func> getTargetProbabilitiesFunc)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
ObservableList targetProbabilities = getTargetProbabilitiesFunc(assessmentSection);
HydraulicBoundaryLocationCalculationsForTargetProbability targetProbability = targetProbabilities.First();
targetProbabilities.Remove(targetProbability);
targetProbabilities.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
HydraulicBoundaryLocationCalculation calculation = targetProbability.HydraulicBoundaryLocationCalculations.First();
calculation.Output = new TestHydraulicBoundaryLocationCalculationOutput(new Random(21).NextDouble());
calculation.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncsWithDisplayNameFormat))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenSelectedTargetProbabilityRemovedAndNotified_ThenMapDataUpdatedSelectedMetaDataAttributeResetToDefault(
Func> getTargetProbabilitiesFunc, string displayName)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
ObservableList targetProbabilities = getTargetProbabilitiesFunc(assessmentSection);
HydraulicBoundaryLocationCalculationsForTargetProbability calculationsForTargetProbability = targetProbabilities.First();
mapLayer.MapData.SelectedMetaDataAttribute = string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability));
mapLayer.MapData.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
targetProbabilities.Remove(calculationsForTargetProbability);
targetProbabilities.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
Assert.AreEqual("Naam", mapLayer.MapData.SelectedMetaDataAttribute);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncsWithDisplayNameFormat))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenNotSelectedTargetProbabilityRemovedAndNotified_ThenMapDataUpdated(
Func> getTargetProbabilitiesFunc, string displayName)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
ObservableList targetProbabilities = getTargetProbabilitiesFunc(assessmentSection);
HydraulicBoundaryLocationCalculationsForTargetProbability calculationsForTargetProbabilityToRemove = targetProbabilities.First();
HydraulicBoundaryLocationCalculationsForTargetProbability calculationsForTargetProbability = targetProbabilities.Last();
mapLayer.MapData.SelectedMetaDataAttribute = string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability));
mapLayer.MapData.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
targetProbabilities.Remove(calculationsForTargetProbabilityToRemove);
targetProbabilities.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
Assert.AreEqual(string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability)),
mapLayer.MapData.SelectedMetaDataAttribute);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilitiesFuncsWithDisplayNameFormat))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenSelectedTargetProbabilityChangedAndNotified_ThenMapDataAndSelectedMetaDataAttributeUpdated(
Func> getTargetProbabilitiesFunc, string displayName)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
var assessmentSection = new AssessmentSectionStub();
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
HydraulicBoundaryLocationCalculationsForTargetProbability calculationsForTargetProbability = getTargetProbabilitiesFunc(assessmentSection).First();
mapLayer.MapData.SelectedMetaDataAttribute = string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability));
mapLayer.MapData.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
calculationsForTargetProbability.TargetProbability = 0.0004;
calculationsForTargetProbability.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
Assert.AreEqual(string.Format(displayName, ProbabilityFormattingHelper.Format(calculationsForTargetProbability.TargetProbability)),
mapLayer.MapData.SelectedMetaDataAttribute);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilityItemShiftActions))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenSelectedWaterLevelTargetProbabilityIndexUpdatedAndCollectionNotified_ThenMapDataAndSelectedMetaDataAttributeUpdated(
Action> shiftItemAction,
string selectedTargetProbabilityFormat, string expectedSelectedTargetProbabilityFormat)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
const double targetProbability = 0.001;
var assessmentSection = new AssessmentSectionStub();
assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities.Clear();
assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities.AddRange(new[]
{
new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability),
new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability),
new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability)
});
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
string targetProbabilityString = ProbabilityFormattingHelper.Format(targetProbability);
string selectedProbabilityString = string.Format(selectedTargetProbabilityFormat, targetProbabilityString);
mapLayer.MapData.SelectedMetaDataAttribute = string.Format(waterLevelDisplayNameFormat, selectedProbabilityString);
mapLayer.MapData.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
ObservableList waterLevelCalculationsForUserDefinedTargetProbabilities =
assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities;
shiftItemAction(waterLevelCalculationsForUserDefinedTargetProbabilities);
waterLevelCalculationsForUserDefinedTargetProbabilities.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
string expectedSelectedProbabilityString = string.Format(expectedSelectedTargetProbabilityFormat, targetProbabilityString);
Assert.AreEqual(string.Format(waterLevelDisplayNameFormat, expectedSelectedProbabilityString),
mapLayer.MapData.SelectedMetaDataAttribute);
}
mocks.VerifyAll();
}
[Test]
[TestCaseSource(nameof(GetTargetProbabilityItemShiftActions))]
public void GivenMapLayerWithHydraulicBoundaryLocationsData_WhenSelectedWaveHeightTargetProbabilityIndexUpdatedAndCollectionNotified_ThenMapDataAndSelectedMetaDataAttributeUpdated(
Action> shiftItemAction,
string selectedTargetProbabilityFormat, string expectedSelectedTargetProbabilityFormat)
{
// Given
var mocks = new MockRepository();
var observer = mocks.StrictMock();
observer.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
const double targetProbability = 0.001;
var assessmentSection = new AssessmentSectionStub();
assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities.Clear();
assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities.AddRange(new[]
{
new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability),
new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability),
new HydraulicBoundaryLocationCalculationsForTargetProbability(targetProbability)
});
var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test1", 1.0, 2.0);
assessmentSection.SetHydraulicBoundaryLocationCalculations(new[]
{
hydraulicBoundaryLocation
});
using (var mapLayer = new HydraulicBoundaryLocationsMapLayer(assessmentSection))
{
string targetProbabilityString = ProbabilityFormattingHelper.Format(targetProbability);
string selectedProbabilityString = string.Format(selectedTargetProbabilityFormat, targetProbabilityString);
mapLayer.MapData.SelectedMetaDataAttribute = string.Format(waveHeightDisplayNameFormat, selectedProbabilityString);
mapLayer.MapData.NotifyObservers();
mapLayer.MapData.Attach(observer);
// Precondition
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
// When
ObservableList waveHeightCalculationsForUserDefinedTargetProbabilities =
assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities;
shiftItemAction(waveHeightCalculationsForUserDefinedTargetProbabilities);
waveHeightCalculationsForUserDefinedTargetProbabilities.NotifyObservers();
// Then
MapDataTestHelper.AssertHydraulicBoundaryLocationsMapData(assessmentSection, mapLayer.MapData);
string expectedSelectedProbabilityString = string.Format(expectedSelectedTargetProbabilityFormat, targetProbabilityString);
Assert.AreEqual(string.Format(waveHeightDisplayNameFormat, expectedSelectedProbabilityString),
mapLayer.MapData.SelectedMetaDataAttribute);
}
mocks.VerifyAll();
}
private static IEnumerable GetCalculationFuncs()
{
yield return new TestCaseData(new Func(
assessmentSection => assessmentSection.WaterLevelCalculationsForSignalFloodingProbability.First()));
yield return new TestCaseData(new Func(
assessmentSection => assessmentSection.WaterLevelCalculationsForMaximumAllowableFloodingProbability.First()));
yield return new TestCaseData(new Func(
assessmentSection => assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities.First()
.HydraulicBoundaryLocationCalculations.First()));
yield return new TestCaseData(new Func(
assessmentSection => assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities.First()
.HydraulicBoundaryLocationCalculations.First()));
}
private static IEnumerable GetTargetProbabilitiesFuncs()
{
yield return new TestCaseData(new Func>(
assessmentSection => assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities));
yield return new TestCaseData(new Func>(
assessmentSection => assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities));
}
private static IEnumerable GetTargetProbabilitiesFuncsWithDisplayNameFormat()
{
yield return new TestCaseData(new Func>(
assessmentSection => assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities),
waterLevelDisplayNameFormat);
yield return new TestCaseData(new Func>(
assessmentSection => assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities),
waveHeightDisplayNameFormat);
}
private static IEnumerable GetTargetProbabilityItemShiftActions()
{
yield return new TestCaseData(
new Action>(col =>
{
HydraulicBoundaryLocationCalculationsForTargetProbability itemToMove = col.First();
col.Remove(itemToMove);
col.Add(itemToMove);
}),
"{0}", "{0} (2)")
.SetName("MoveItemDown");
yield return new TestCaseData(
new Action>(col =>
{
HydraulicBoundaryLocationCalculationsForTargetProbability itemToMove = col.Last();
col.Remove(itemToMove);
col.Insert(0, itemToMove);
}),
"{0} (2)", "{0}")
.SetName("MoveItemUp");
}
}
}