public void CreateDuneLocationFeatures_WithLocations_ReturnsLocationFeaturesCollection(bool withOutput) { // Setup DuneLocation[] duneLocations = { CreateDuneLocation(1), CreateDuneLocation(2) }; var failureMechanism = new DuneErosionFailureMechanism(); failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.AddRange(new[] { new DuneLocationCalculationsForTargetProbability(0.1), new DuneLocationCalculationsForTargetProbability(0.001) }); failureMechanism.SetDuneLocations(duneLocations); if (withOutput) { DuneLocationsTestHelper.SetDuneLocationCalculationOutput(failureMechanism); } IEnumerable <AggregatedDuneLocation> aggregatedLocations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations( failureMechanism.DuneLocations, failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities); // Call IEnumerable <MapFeature> features = DuneErosionMapDataFeaturesFactory.CreateDuneLocationFeatures(aggregatedLocations); // Assert DuneErosionMapFeaturesTestHelper.AssertDuneLocationFeaturesData(failureMechanism, features); }
public void CreateAggregatedDuneLocations_CalculationsForTargetProbabilitiesNull_ThrowsArgumentNullException() { // Call void Call() => AggregatedDuneLocationFactory.CreateAggregatedDuneLocations(Enumerable.Empty <DuneLocation>(), null); // Assert var exception = Assert.Throws <ArgumentNullException>(Call); Assert.AreEqual("calculationsForTargetProbabilities", exception.ParamName); }
private void SetFeatures() { DuneLocationCalculationsForTargetProbability[] orderedCalculationsForTargetProbabilities = failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities .OrderByDescending(tp => tp.TargetProbability) .ToArray(); IEnumerable <AggregatedDuneLocation> locations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations( failureMechanism.DuneLocations, orderedCalculationsForTargetProbabilities); MapData.Features = DuneErosionMapDataFeaturesFactory.CreateDuneLocationFeatures(locations); if (MapData.Features.Any()) { UpdateMetaData(orderedCalculationsForTargetProbabilities); } }
public void CreateAggregatedDuneLocations_WithAllData_ReturnAggregatedDuneLocations() { // Setup var random = new Random(21); var duneLocations = new[] { new DuneLocation(1, "location1", new Point2D(1, 1), new DuneLocation.ConstructionProperties()), new DuneLocation(2, "location2", new Point2D(2, 2), new DuneLocation.ConstructionProperties()) }; var targetProbabilities = new[] { new DuneLocationCalculationsForTargetProbability(0.1) { DuneLocationCalculations = { new DuneLocationCalculation(duneLocations[0]) { Output = new TestDuneLocationCalculationOutput(random.NextDouble(), random.NextDouble(), random.NextDouble()) }, new DuneLocationCalculation(duneLocations[1]) { Output = new TestDuneLocationCalculationOutput(random.NextDouble(), random.NextDouble(), random.NextDouble()) } } }, new DuneLocationCalculationsForTargetProbability(0.001) { DuneLocationCalculations = { new DuneLocationCalculation(duneLocations[0]) { Output = new TestDuneLocationCalculationOutput(random.NextDouble(), random.NextDouble(), random.NextDouble()) }, new DuneLocationCalculation(duneLocations[1]) } } }; // Call IEnumerable <AggregatedDuneLocation> aggregatedLocations = AggregatedDuneLocationFactory.CreateAggregatedDuneLocations(duneLocations, targetProbabilities); // Assert Assert.AreEqual(duneLocations.Length, aggregatedLocations.Count()); for (var i = 0; i < duneLocations.Length; i++) { DuneLocation duneLocation = duneLocations[i]; AggregatedDuneLocation aggregatedLocation = aggregatedLocations.ElementAt(i); Assert.AreEqual(duneLocation.Id, aggregatedLocation.Id); Assert.AreEqual(duneLocation.Name, aggregatedLocation.Name); Assert.AreEqual(duneLocation.Location, aggregatedLocation.Location); Assert.AreEqual(duneLocation.CoastalAreaId, aggregatedLocation.CoastalAreaId); Assert.AreEqual(duneLocation.Offset, aggregatedLocation.Offset); Assert.AreEqual(duneLocation.D50, aggregatedLocation.D50); for (var j = 0; j < targetProbabilities.Length; j++) { Assert.AreEqual(targetProbabilities[j].TargetProbability, aggregatedLocation.WaterLevelCalculationsForTargetProbabilities.ElementAt(j).Item1); Assert.AreEqual(targetProbabilities[j].TargetProbability, aggregatedLocation.WaveHeightCalculationsForTargetProbabilities.ElementAt(j).Item1); Assert.AreEqual(targetProbabilities[j].TargetProbability, aggregatedLocation.WavePeriodCalculationsForTargetProbabilities.ElementAt(j).Item1); DuneLocationCalculationOutput output = GetOutput(targetProbabilities[j].DuneLocationCalculations, duneLocations[i]); Assert.AreEqual(output?.WaterLevel ?? RoundedDouble.NaN, aggregatedLocation.WaterLevelCalculationsForTargetProbabilities.ElementAt(j).Item2); Assert.AreEqual(output?.WaveHeight ?? RoundedDouble.NaN, aggregatedLocation.WaveHeightCalculationsForTargetProbabilities.ElementAt(j).Item2); Assert.AreEqual(output?.WavePeriod ?? RoundedDouble.NaN, aggregatedLocation.WavePeriodCalculationsForTargetProbabilities.ElementAt(j).Item2); } } }