private static IEnumerable <TestCaseData> GetAircraftData() { var twoEngineReferenceData = new IntegrationReferenceData("Two Power Jet Engine.csv", 72.03, 2343.09); yield return(new TestCaseData(new AircraftData(2, 75, 500, Angle.FromDegrees(6), Angle.FromDegrees(16), 0.02, 0.2, new AerodynamicsData(15, 100, Angle.FromDegrees(-3), 4.85, 1.60, 0.021, 0.026, 0.85)), twoEngineReferenceData) .SetName("Two Jet Power Engine")); var threeEngineReferenceData = new IntegrationReferenceData("Three Power Jet Engine.csv", 78.10, 2779.96); yield return(new TestCaseData(new AircraftData(3, 120, 1200, Angle.FromDegrees(5), Angle.FromDegrees(15), 0.02, 0.2, new AerodynamicsData(14, 200, Angle.FromDegrees(-4), 4.32, 1.45, 0.024, 0.028, 0.80)), threeEngineReferenceData) .SetName("Three Jet Power Engine")); var fourEngineReferenceData = new IntegrationReferenceData("Four Power Jet Engine.csv", 81.40, 2865.53); yield return(new TestCaseData(new AircraftData(4, 300, 3500, Angle.FromDegrees(4), Angle.FromDegrees(14), 0.02, 0.2, new AerodynamicsData(12, 500, Angle.FromDegrees(-5), 3.95, 1.40, 0.026, 0.029, 0.82)), fourEngineReferenceData) .SetName("Four Jet Power Engine")); }
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); }