public void Integrate_Always_PerformsExpectedIntegration() { // Setup var random = new Random(21); AircraftState state = CreateAircraftState(); AircraftAccelerations accelerations = CreateAircraftAccelerations(); double timeStep = random.NextDouble(); // Call AircraftState resultingState = new EulerIntegrator().Integrate(state, accelerations, timeStep); // Assert Assert.AreEqual(ExpectedIntegratedValue(state.Height, accelerations.ClimbRate, timeStep), resultingState.Height); Assert.AreEqual(ExpectedIntegratedValue(state.TrueAirspeed, accelerations.TrueAirSpeedRate, timeStep), resultingState.TrueAirspeed); Assert.AreEqual(ExpectedIntegratedValue(state.Distance, state.TrueAirspeed, timeStep), resultingState.Distance); Assert.AreEqual(ExpectedIntegratedValue(state.FlightPathAngle, accelerations.FlightPathRate, timeStep), resultingState.FlightPathAngle); Assert.AreEqual(ExpectedIntegratedValue(state.PitchAngle, accelerations.PitchRate, timeStep), resultingState.PitchAngle); }