示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
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);
        }