public void CalculateBalancedFieldLength_VariousConfigurationsWithIntersection_ReturnsExpectedIntersection(IEnumerable <AggregatedDistanceOutput> outputs, double expectedFailureSpeed, double expectedDistance) { // Call BalancedFieldLength output = Calculator.BalancedFieldLengthCalculator.BalancedFieldLengthCalculator.CalculateBalancedFieldLength(outputs); // Assert Assert.AreEqual(expectedFailureSpeed, output.Velocity); Assert.AreEqual(expectedDistance, output.Distance); }
public void CalculateBalancedFieldLength_VariousConfigurationsWithIntersectionInRandomOrder_ReturnsExpectedIntersection(IEnumerable <AggregatedDistanceOutput> outputs, double expectedFailureSpeed, double expectedDistance) { // Setup var random = new Random(21); IOrderedEnumerable <AggregatedDistanceOutput> randomSortedOutputs = outputs.OrderBy(x => random.Next()); // Call BalancedFieldLength output = Calculator.BalancedFieldLengthCalculator.BalancedFieldLengthCalculator.CalculateBalancedFieldLength(randomSortedOutputs); // Assert Assert.AreEqual(expectedFailureSpeed, output.Velocity); Assert.AreEqual(expectedDistance, output.Distance); }
public void CalculateBalancedFieldLength_OutputsNeverIntersect_ReturnsNaN() { // Setup AggregatedDistanceOutput[] outputs = { new AggregatedDistanceOutput(10, 10, 11), new AggregatedDistanceOutput(11, 5, 15), new AggregatedDistanceOutput(12, 0, 20) }; // Call BalancedFieldLength output = Calculator.BalancedFieldLengthCalculator.BalancedFieldLengthCalculator.CalculateBalancedFieldLength(outputs); // Assert Assert.IsNaN(output.Velocity); Assert.IsNaN(output.Distance); }
public void CalculateBalancedFieldLength_OutputsOnTop_ReturnsNaN() { // Setup AggregatedDistanceOutput[] outputs = { new AggregatedDistanceOutput(10, 10, 10), new AggregatedDistanceOutput(11, 10, 10), new AggregatedDistanceOutput(12, 10, 10) }; // Call BalancedFieldLength output = Calculator.BalancedFieldLengthCalculator.BalancedFieldLengthCalculator.CalculateBalancedFieldLength(outputs); // Assert Assert.IsNaN(output.Velocity); Assert.IsNaN(output.Distance); }
public void GivenKernel_WhenCalculationsAreMadeForVelocityRange_ThenReturnsExpectedOutputsAndBalancedFieldLength(AircraftData aircraftData, IntegrationReferenceData integrationReferenceData) { // Given var integrator = new EulerIntegrator(); var calculationKernel = new AggregatedDistanceCalculatorKernel(); // When var outputs = new List <AggregatedDistanceOutput>(); for (int i = 0; i < 90; i++) { var calculationSettings = new CalculationSettings(i, maximumTimeSteps, timeStep); AggregatedDistanceOutput result = calculationKernel.Calculate(aircraftData, integrator, 1, density, gravitationalAcceleration, calculationSettings); outputs.Add(result); } BalancedFieldLength balancedFieldLength = BalancedFieldLengthCalculator.CalculateBalancedFieldLength(outputs); // Then IEnumerable <ReferenceOutput> referenceOutputs = GetReferenceOutputs(integrationReferenceData.FileName); int expectedLength = referenceOutputs.Count(); Assert.AreEqual(expectedLength, outputs.Count, "Number of reference data entries do not match with actual number of entries"); int velocity = 0; foreach (ReferenceOutput referenceOutput in referenceOutputs) { Assert.AreEqual(referenceOutput.Velocity, outputs[velocity].FailureSpeed); Assert.AreEqual(referenceOutput.ContinuedTakeOffDistance, outputs[velocity].ContinuedTakeOffDistance, tolerance); Assert.AreEqual(referenceOutput.AbortedTakeOffDistance, outputs[velocity].AbortedTakeOffDistance, tolerance); velocity++; } Assert.AreEqual(integrationReferenceData.Velocity, balancedFieldLength.Velocity, tolerance); Assert.AreEqual(integrationReferenceData.Distance, balancedFieldLength.Distance, tolerance); }