예제 #1
0
class EngineUnitTest(unittest.TestCase):
    def setUp(self):
        self.settings = MagicMock()

    def test_shouldReadMotorSettingsFromSettings(self):
        # given

        # when
        self.engine = Engine(self.settings)

        # then
        self.settings.getMotor1Address.assert_called_once()
        self.settings.getMotor2Address.assert_called_once()
        self.assertIsNotNone(self.engine.motor_1)
        self.assertIsNotNone(self.engine.motor_2)

    def test_shouldReadMotorSpeedFactorFromSettings(self):
        # given

        # when
        self.engine = Engine(self.settings)

        # then
        self.settings.getMotorSpeedFactor.assert_called_once()

    def test_shouldMotorsSpeedUsingSpeedFactor(self):
        # given
        self.settings.getMotor1Address.return_value = 'a_motor'
        self.settings.getMotor2Address.return_value = 'another_motor'
        self.settings.getMotorSpeedFactor.return_value = 123
        self.engine = Engine(self.settings)
        self.engine.motor_1 = MagicMock()
        self.engine.motor_2 = MagicMock()

        # when
        self.engine.setSpeed(65)

        # then
        _expected_speed = 65 * 123
        self.engine.motor_1.run_forever.assert_called_once_with(
            speed_sp=_expected_speed)
        self.engine.motor_2.run_forever.assert_called_once_with(
            speed_sp=_expected_speed)

    def test_should_stop_motors_with_coast_when_stop_called(self):
        # given
        self.settings.getMotor1Address.return_value = 'a_motor'
        self.settings.getMotor2Address.return_value = 'another_motor'
        self.settings.getMotorSpeedFactor.return_value = 123
        self.engine = Engine(self.settings)
        self.engine.motor_1 = MagicMock()
        self.engine.motor_2 = MagicMock()

        # when
        self.engine.stop()

        # then
        self.engine.motor_1.stop.assert_called_once_with(stop_action='coast')
        self.engine.motor_2.stop.assert_called_once_with(stop_action='coast')

    def test_should_stop_motors_with_brake_when_brake_called(self):
        # given
        self.settings.getMotor1Address.return_value = 'a_motor'
        self.settings.getMotor2Address.return_value = 'another_motor'
        self.settings.getMotorSpeedFactor.return_value = 123
        self.engine = Engine(self.settings)
        self.engine.motor_1 = MagicMock()
        self.engine.motor_2 = MagicMock()

        # when
        self.engine.brake()

        # then
        self.engine.motor_1.stop.assert_called_once_with(stop_action='brake')
        self.engine.motor_2.stop.assert_called_once_with(stop_action='brake')
예제 #2
0
from car import Car
from carModel import CarModel
from gearBox import GearBox
from engine import Engine
from suspension import Suspension
from body import Body
from brake import Brake

carModel = CarModel("Tesla")
gearBox = GearBox(5, 3, "auto")
engine = Engine(1.9, 6)
suspension = Suspension(3, "Chrome Coated")
body = Body(4)
brake = Brake("Disc", suspension.wheel)

whiteOpel = Car(232424324, 2020, "23434234", gearBox, suspension, brake, body,
                engine)
whiteOpel.turnLeft()
whiteOpel.moveBackward()
whiteOpel.stop()
gearBox.shifDown()
gearBox.shiftUp()
engine.start()
engine.brake()