コード例 #1
0
        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"));
        }
コード例 #2
0
        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);
        }