def test__autopilot_engaged(self): determine_pilot = DeterminePilot() # No autopilots engaged: pilot = determine_pilot._autopilot_engaged(0, 0) self.assertEqual(pilot, None) # Autopilot 1 engaged: pilot = determine_pilot._autopilot_engaged(1, 0) self.assertEqual(pilot, 'Captain') # Autopilot 2 engaged: pilot = determine_pilot._autopilot_engaged(0, 1) self.assertEqual(pilot, 'First Officer') # Autopilots 1 & 2 engaged: pilot = determine_pilot._autopilot_engaged(1, 1) self.assertEqual(pilot, None)
def test__determine_pilot(self): determine_pilot = DeterminePilot() pitch_capt = Mock() pitch_fo = Mock() roll_capt = Mock() roll_fo = Mock() cc_capt = Mock() cc_fo = Mock() pitch_capt.array = Mock() pitch_fo.array = Mock() roll_capt.array = Mock() roll_fo.array = Mock() cc_capt.array = Mock() cc_fo.array = Mock() ap1 = Mock() ap2 = Mock() phase = Mock() determine_pilot._autopilot_engaged = Mock() determine_pilot._controls_in_use = Mock() determine_pilot._control_column_in_use = Mock() determine_pilot.set_flight_attr = Mock() def reset_all_mocks(): determine_pilot._autopilot_engaged.reset_mock() determine_pilot._controls_in_use.reset_mock() determine_pilot._control_column_in_use.reset_mock() determine_pilot.set_flight_attr.reset_mock() # Controls in use, no phase. reset_all_mocks() pilot = determine_pilot._determine_pilot( None, pitch_capt, pitch_fo, roll_capt, roll_fo, cc_capt, cc_fo, None, None, None) self.assertFalse(determine_pilot._autopilot_engaged.called) self.assertFalse(determine_pilot._controls_in_use.called) self.assertEqual(pilot, None) # Controls in use with phase. Pilot cannot be discerned. reset_all_mocks() determine_pilot._controls_in_use.return_value = None determine_pilot._control_column_in_use.return_value = None pilot = determine_pilot._determine_pilot( None, pitch_capt, pitch_fo, roll_capt, roll_fo, cc_capt, cc_fo, phase, None, None) self.assertFalse(determine_pilot._autopilot_engaged.called) determine_pilot._controls_in_use.assert_called_once_with( pitch_capt.array, pitch_fo.array, roll_capt.array, roll_fo.array, phase) determine_pilot._control_column_in_use.assert_called_once_with( cc_capt.array, cc_fo.array, phase) self.assertEqual(pilot, determine_pilot._controls_in_use.return_value) # Controls in use with phase. Pilot returned reset_all_mocks() determine_pilot._controls_in_use.return_value = 'Captain' pilot = determine_pilot._determine_pilot( None, pitch_capt, pitch_fo, roll_capt, roll_fo, cc_capt, cc_fo, phase, None, None) self.assertFalse(determine_pilot._autopilot_engaged.called) determine_pilot._controls_in_use.assert_called_once_with(pitch_capt.array, pitch_fo.array, roll_capt.array, roll_fo.array, phase) self.assertEqual(pilot, determine_pilot._controls_in_use.return_value) # Only Autopilot. reset_all_mocks() determine_pilot._autopilot_engaged.return_value = 'Captain' pilot = determine_pilot._determine_pilot(None, None, None, None, None, None, None, None, ap1, ap2) determine_pilot._autopilot_engaged.assert_called_once_with(ap1, ap2) self.assertFalse(determine_pilot._controls_in_use.called) self.assertEqual(pilot, determine_pilot._autopilot_engaged.return_value) # Controls in Use overrides Autopilot. reset_all_mocks() determine_pilot._controls_in_use.return_value = 'Captain' determine_pilot._autopilot_engaged.return_value = 'First Officer' pilot = determine_pilot._determine_pilot( None, pitch_capt, pitch_fo, roll_capt, roll_fo, cc_capt, cc_fo, phase, ap1, ap2) self.assertFalse(determine_pilot._autopilot_engaged.called) determine_pilot._controls_in_use.assert_called_once_with( pitch_capt.array, pitch_fo.array, roll_capt.array, roll_fo.array, phase) self.assertEqual(pilot, determine_pilot._controls_in_use.return_value) # Autopilot is used when Controls in Use does not provide an answer. reset_all_mocks() determine_pilot._autopilot_engaged.return_value = 'First Officer' determine_pilot._controls_in_use.return_value = None determine_pilot._control_column_in_use.return_value = None pilot = determine_pilot._determine_pilot( None, pitch_capt, pitch_fo, roll_capt, roll_fo, cc_capt, cc_fo, phase, ap1, ap2) determine_pilot._autopilot_engaged.assert_called_once_with(ap1, ap2) determine_pilot._controls_in_use.assert_called_once_with( pitch_capt.array, pitch_fo.array, roll_capt.array, roll_fo.array, phase) self.assertEqual(pilot, determine_pilot._autopilot_engaged.return_value)