def handle_gas( self, curr_gear: Gear, curr_rpm: EngineRPMS, pressure: GasPressure ) -> Gear: if pressure.is_kickdown(): return curr_gear.previous() if curr_rpm.is_above(self._rpsm_range): return curr_gear.next() if curr_rpm.is_below(self._rpsm_range): return curr_gear.previous() return curr_gear
def test_strategy_sets_previous_gear_when_rpms_below_range(mode): strategy = DrivingModeStrategy.create(driving_mode=mode, aggressive_mode=AggressiveMode.Mode1) curr_gear = Gear(gear=2) gear_to_set = strategy.handle_gas(curr_gear=curr_gear, curr_rpm=EngineRPMS(value=200), pressure=GENTLE_PRESSURE) assert gear_to_set == curr_gear.previous()
def test_strategy_sets_previous_gear_on_kickdown_no_matter_what_are_current_rpms( mode, curr_rpms): strategy = DrivingModeStrategy.create(driving_mode=mode, aggressive_mode=AggressiveMode.Mode1) curr_gear = Gear(gear=2) gear_to_set = strategy.handle_gas(curr_gear=curr_gear, curr_rpm=EngineRPMS(value=curr_rpms), pressure=KICKDOWN) assert gear_to_set == curr_gear.previous()
def assert_gear_was_reduced_twice(gearbox, initial_gear: Gear): assert gearbox.current_gear == initial_gear.previous().previous()