/// <summary> /// Validates a <see cref="BalancedFieldLengthCalculation"/>. /// </summary> /// <param name="calculation">The calculation to validate.</param> /// <returns>A collection of validation messages if the validation failed, empty otherwise.</returns> /// <exception cref="ArgumentNullException">Thrown when <paramref name="calculation"/> /// is <c>null</c>.</exception> public IEnumerable <string> Validate(BalancedFieldLengthCalculation calculation) { if (calculation == null) { throw new ArgumentNullException(nameof(calculation)); } try { EngineData engineData = calculation.EngineData; GeneralSimulationSettingsData generalSimulationSettings = calculation.SimulationSettings; AircraftData aircraftData = AircraftDataFactory.Create(calculation.AircraftData, engineData); KernelValidationError validationResult = kernel.Validate(aircraftData, generalSimulationSettings.Density, generalSimulationSettings.GravitationalAcceleration, engineData.NrOfFailedEngines); var messages = new List <string>(); if (generalSimulationSettings.EndFailureVelocity < 1) { messages.Add(Resources.BalancedFieldLengthCalculationModule_ValidationMessage_End_failure_velocity_must_be_larger_than_Zero); } if (validationResult.HasFlag(KernelValidationError.InvalidDensity)) { messages.Add(Resources.BalancedFieldLengthCalculationModule_ValidationMessage_Invalid_Density); } if (validationResult.HasFlag(KernelValidationError.InvalidGravitationalAcceleration)) { messages.Add(Resources.BalancedFieldLengthCalculationModule_ValidationMessage_Invalid_GravitationalAcceleration); } if (validationResult.HasFlag(KernelValidationError.InvalidNrOfFailedEngines)) { messages.Add(Resources.BalancedFieldLengthCalculationModule_ValidationMessage_Invalid_NrOfFailedEngines); } return(messages); } catch (CreateKernelDataException e) { return(new[] { e.Message }); } }
public void Validate_DensityInvalid_ReturnsExpectedValidationResult(double density) { // Setup var random = new Random(21); AircraftData aircraftData = AircraftDataTestFactory.CreateRandomAircraftData(); double gravitationalAcceleration = random.NextDouble(); var kernel = new AggregatedDistanceCalculatorKernel(); // Call KernelValidationError result = kernel.Validate(aircraftData, density, gravitationalAcceleration, aircraftData.NrOfEngines - 1); // Assert Assert.IsTrue(result.HasFlag(KernelValidationError.InvalidDensity)); Assert.IsFalse(result.HasFlag(KernelValidationError.InvalidGravitationalAcceleration)); Assert.IsFalse(result.HasFlag(KernelValidationError.InvalidNrOfFailedEngines)); }