public void Calculate_NormalDynamicsCalculatorThrowsException_ThenExceptionRethrown() { // Setup var calculatorException = new CalculatorException(); var normalTakeOffDynamicsCalculator = Substitute.For <INormalTakeOffDynamicsCalculator>(); normalTakeOffDynamicsCalculator.Calculate(Arg.Any <AircraftState>()) .Throws(calculatorException); var failureTakeOffDynamicsCalculator = Substitute.For <IFailureTakeOffDynamicsCalculator>(); var integrator = Substitute.For <IIntegrator>(); var calculator = new DistanceCalculator(normalTakeOffDynamicsCalculator, failureTakeOffDynamicsCalculator, integrator, CalculationSettingsTestFactory.CreateDistanceCalculatorSettings()); // Call TestDelegate call = () => calculator.Calculate(); // Assert var exception = Assert.Throws <CalculatorException>(call); Assert.AreSame(calculatorException, exception); }
public static void Calculate_ContinuedTakeOffDistanceCalculatorThrowsCalculatorException_ThrowsCalculatorException() { // Setup var random = new Random(21); AircraftData aircraftData = AircraftDataTestFactory.CreateRandomAircraftData(); var integrator = Substitute.For <IIntegrator>(); int nrOfFailedEngines = random.Next(); double density = random.NextDouble(); double gravitationalAcceleration = random.NextDouble(); CalculationSettings calculationSettings = CalculationSettingsTestFactory.CreateDistanceCalculatorSettings(); var calculatorException = new CalculatorException(); var continuedTakeOffDistanceCalculator = Substitute.For <IDistanceCalculator>(); continuedTakeOffDistanceCalculator.Calculate().Throws(calculatorException); var distanceCalculatorFactory = Substitute.For <IDistanceCalculatorFactory>(); distanceCalculatorFactory.CreateAbortedTakeOffDistanceCalculator(null, null, 0, 0, null).ReturnsForAnyArgs(continuedTakeOffDistanceCalculator); var aggregatedCalculator = new Calculator.AggregatedDistanceCalculator.AggregatedDistanceCalculator(distanceCalculatorFactory); // Call TestDelegate call = () => aggregatedCalculator.Calculate(aircraftData, integrator, nrOfFailedEngines, density, gravitationalAcceleration, calculationSettings); // Assert var exception = Assert.Throws <CalculatorException>(call); Assert.AreSame(calculatorException, exception); }
public void Calculate_CalculatorThrowsCalculateException_ThrowsKernelCalculateException() { // Setup var calculation = new BalancedFieldLengthCalculation(); SetValidAircraftData(calculation.AircraftData); SetEngineData(calculation.EngineData); SetSimulationSettingsData(calculation.SimulationSettings); calculation.SimulationSettings.EndFailureVelocity = 1; var kernel = Substitute.For <IAggregatedDistanceCalculatorKernel>(); var calculatorException = new CalculatorException("Can't calculate this."); kernel.Calculate(Arg.Any <KernelAircraftData>(), Arg.Any <EulerIntegrator>(), Arg.Any <int>(), Arg.Any <double>(), Arg.Any <double>(), Arg.Any <CalculationSettings>()) .ThrowsForAnyArgs(calculatorException); var testFactory = new TestKernelFactory(kernel); using (new BalancedFieldLengthKernelFactoryConfig(testFactory)) { var module = new BalancedFieldLengthCalculationModule(); // Call TestDelegate call = () => module.Calculate(calculation); // Assert var exception = Assert.Throws <KernelCalculationException>(call); Assert.That(exception.InnerException, Is.SameAs(calculatorException)); Assert.That(exception.Message, Is.EqualTo(calculatorException.Message)); } }
public void Calculate_MaximumIterationsHit_ThrowsCalculatorException() { // Setup var random = new Random(21); int nrOfTimeSteps = random.Next(1, 10); double timeStep = random.NextDouble(); int failureSpeed = random.Next(); var normalTakeOffDynamicsCalculator = Substitute.For <INormalTakeOffDynamicsCalculator>(); var calculatorException = new CalculatorException(); var failureTakeOffDynamicsCalculator = Substitute.For <IFailureTakeOffDynamicsCalculator>(); failureTakeOffDynamicsCalculator.Calculate(Arg.Any <AircraftState>()) .Throws(calculatorException); var integrator = Substitute.For <IIntegrator>(); integrator.Integrate(Arg.Any <AircraftState>(), Arg.Any <AircraftAccelerations>(), timeStep) .Returns(CreateAircraftStateWithVelocity(failureSpeed)); var calculatorSettings = new CalculationSettings(failureSpeed, nrOfTimeSteps, timeStep); var calculator = new DistanceCalculator(normalTakeOffDynamicsCalculator, failureTakeOffDynamicsCalculator, integrator, calculatorSettings); // Call TestDelegate call = () => calculator.Calculate(); // Assert var exception = Assert.Throws <CalculatorException>(call); Assert.AreEqual("Calculation did not converge.", exception.Message); integrator.ReceivedWithAnyArgs(nrOfTimeSteps) .Integrate(Arg.Any <AircraftState>(), Arg.Any <AircraftAccelerations>(), timeStep); }
public void Calculate_FailureDynamicsCalculatorThrowsException_ThenExceptionRethrown() { // Setup var random = new Random(21); double timeStep = random.NextDouble(); int failureSpeed = random.Next(); var normalTakeOffDynamicsCalculator = Substitute.For <INormalTakeOffDynamicsCalculator>(); var calculatorException = new CalculatorException(); var failureTakeOffDynamicsCalculator = Substitute.For <IFailureTakeOffDynamicsCalculator>(); failureTakeOffDynamicsCalculator.Calculate(Arg.Any <AircraftState>()) .Throws(calculatorException); var integrator = Substitute.For <IIntegrator>(); integrator.Integrate(Arg.Any <AircraftState>(), Arg.Any <AircraftAccelerations>(), timeStep) .Returns(CreateAircraftStateWithVelocity(failureSpeed + 0.1)); var calculatorSettings = new CalculationSettings(failureSpeed, random.Next(), timeStep); var calculator = new DistanceCalculator(normalTakeOffDynamicsCalculator, failureTakeOffDynamicsCalculator, integrator, calculatorSettings); // Call TestDelegate call = () => calculator.Calculate(); // Assert var exception = Assert.Throws <CalculatorException>(call); Assert.AreSame(calculatorException, exception); }