public void Create_WithArguments_ReturnsExpectedAircraftData() { // Setup var random = new Random(21); var aircraftData = new AircraftData { WingSurfaceArea = random.NextDouble(), AspectRatio = random.NextDouble(), OswaldFactor = random.NextDouble(), MaximumLiftCoefficient = random.NextDouble(), LiftCoefficientGradient = random.NextDouble(), ZeroLiftAngleOfAttack = random.NextAngle(), RestDragCoefficient = random.NextDouble(), RestDragCoefficientWithEngineFailure = random.NextDouble(), MaximumPitchAngle = random.NextAngle(), PitchGradient = random.NextAngle(), RollResistanceCoefficient = random.NextDouble(), RollResistanceWithBrakesCoefficient = random.NextDouble(), TakeOffWeight = random.NextDouble() }; var engineData = new EngineData { NrOfEngines = random.Next(), ThrustPerEngine = random.NextDouble() }; // Call KernelAircraftData data = AircraftDataFactory.Create(aircraftData, engineData); // Assert AircraftDataTestHelper.AssertAircraftData(aircraftData, engineData, data); }
/// <summary> /// Calculates the <see cref="BalancedFieldLengthOutput"/> based on <paramref name="calculation"/>. /// </summary> /// <param name="calculation">The <see cref="BalancedFieldLengthCalculation"/> to calculate for.</param> /// <returns>A <see cref="BalancedFieldLengthOutput"/>.</returns> /// <exception cref="ArgumentNullException">Thrown when <paramref name="calculation"/> is <c>null</c>.</exception> /// <exception cref="CreateKernelDataException">Thrown when the calculation input /// could not be created for the kernel.</exception> /// <exception cref="KernelCalculationException">Thrown when <see cref="AggregatedDistanceOutput"/> /// could not be calculated.</exception> public BalancedFieldLengthOutput Calculate(BalancedFieldLengthCalculation calculation) { if (calculation == null) { throw new ArgumentNullException(nameof(calculation)); } GeneralSimulationSettingsData generalSimulationSettings = calculation.SimulationSettings; double density = generalSimulationSettings.Density; int endVelocity = generalSimulationSettings.EndFailureVelocity; double gravitationalAcceleration = generalSimulationSettings.GravitationalAcceleration; EngineData engineData = calculation.EngineData; int nrOfFailedEngines = engineData.NrOfFailedEngines; AircraftData aircraftData = AircraftDataFactory.Create(calculation.AircraftData, engineData); var integrator = new EulerIntegrator(); var outputs = new List <AggregatedDistanceOutput>(); for (int i = 0; i < endVelocity; i++) { var calculationInput = new CalculationInput(generalSimulationSettings, i, aircraftData, integrator, nrOfFailedEngines, density, gravitationalAcceleration); AggregatedDistanceOutput output = CalculateDistances(calculationInput); outputs.Add(output); } return(BalancedFieldLengthOutputFactory.Create(outputs)); }
public void Create_EngineDataNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => AircraftDataFactory.Create(new AircraftData(), null); // Assert Assert.That(call, Throws.ArgumentNullException .With.Property(nameof(ArgumentNullException.ParamName)) .EqualTo("engineData")); }
/// <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 Create_WithDataResultingInArgumentOutOfRangeException_ThrowsKernelCreateException() { // Setup var random = new Random(21); var aircraftData = new AircraftData { WingSurfaceArea = random.NextDouble(), AspectRatio = random.NextDouble(), OswaldFactor = random.NextDouble(), MaximumLiftCoefficient = random.NextDouble(), LiftCoefficientGradient = random.NextDouble(), ZeroLiftAngleOfAttack = random.NextAngle(), RestDragCoefficient = random.NextDouble(), RestDragCoefficientWithEngineFailure = random.NextDouble(), MaximumPitchAngle = random.NextAngle(), PitchGradient = random.NextAngle(), RollResistanceCoefficient = random.NextDouble(), RollResistanceWithBrakesCoefficient = random.NextDouble(), TakeOffWeight = random.NextDouble() }; var engineData = new EngineData { NrOfEngines = random.Next(), ThrustPerEngine = -random.NextDouble() }; // Call TestDelegate call = () => AircraftDataFactory.Create(aircraftData, engineData); // Assert var exception = Assert.Throws <CreateKernelDataException>(call); Exception innerException = exception.InnerException; Assert.That(innerException, Is.TypeOf <ArgumentOutOfRangeException>()); Assert.That(exception.Message, Is.EqualTo(exception.Message)); }