Romasmi / cpp-practice

0 stars 0 forks source link

Замечания по программе Car #18

Open alexey-malov opened 5 years ago

alexey-malov commented 5 years ago
alexey-malov commented 5 years ago
        /*set possible speed just for current gear*/
        REQUIRE(true == car.SetGear(1));
        REQUIRE(true == car.SetSpeed(19));
        REQUIRE(false == car.SetGear(1));
        REQUIRE(false == car.SetGear(2));

        /*set impossible speed for current gear*/
        REQUIRE(false == car.SetSpeed(31));

        /*set impossible gear for current speed*/
        REQUIRE(false == car.SetGear(2));

        /*set speed to increase gear*/
        REQUIRE(true == car.SetSpeed(20));
        REQUIRE(true == car.SetGear(2));

        /*set possible speed just for current gear*/
        REQUIRE(true == car.SetSpeed(31));

        /*reach max speed*/
        REQUIRE(true == car.SetSpeed(50));
        REQUIRE(true == car.SetGear(5));
        REQUIRE(true == car.SetSpeed(150));
        REQUIRE(false == car.SetSpeed(155));

        /*decrease gear*/
        REQUIRE(false == car.SetGear(4));
        REQUIRE(true == car.SetSpeed(90));
        REQUIRE(true == car.SetGear(4));

        /*set negative speed*/
        REQUIRE(false == car.SetSpeed(-100));
void ExpectOperationSuccess(SomeObj & obj, const function<bool(SomeObj & obj)> & op, int expectedProperty1, const string & expectedProperty2, ...)
{
    BOOST_REQUIRE(op(obj)); // ожидаем, что операция вернет true (успех)
    // Сравниваем состояние свойства объект с ожидаемым
    BOOST_CHECK_EQUAL(obj.GetProperty1(), expectedProperty1);
    BOOST_CHECK_EQUAL(obj.GetProperty2(), expectedProperty2);
    ...
}

void ExpectOperationFailure(const SomeObj & obj, const function<bool(SomeObj & obj)> & op);
{
    auto clone(obj); // сделали клон объекта
    BOOST_REQUIRE(!op(clone)); // ожидаем, что операция завершится неуспешно (передаем клон)
    // проверяем, что после выполнения операции состояние клона не отличается от оригинала 
    // (операция в случае неудачи оставляет объект в состоянии, в котором он пребывал до операции)
    BOOST_CHECK_EQUAL(clone.GetProperty1(), obj.GetProperty1());
    BOOST_CHECK_EQUAL(clone.GetProperty2(), obj.GetProperty2());
    ...
}
alexey-malov commented 5 years ago
alexey-malov commented 5 years ago
Info
Engine state:ON, Gear:0, Speed:10, Direction:FORWARD
SetSpeed 9
Info
Engine state:ON, Gear:0, Speed:9, Direction:BACK
alexey-malov commented 5 years ago
bool Car::GearCorrespondsToSpeed(const int gear) const
{
    GearSpeed speedInterval = transmission.find(gear)->second;
    return speedInterval.minSpeed == speedInterval.maxSpeed || Between(m_speed, speedInterval.minSpeed, speedInterval.maxSpeed);
}
alexey-malov commented 5 years ago
alexey-malov commented 5 years ago
alexey-malov commented 5 years ago
alexey-malov commented 5 years ago
    std::string EngineStateToString(const EngineState state) const;
    std::string DirectionToString(const Direction direction) const;
alexey-malov commented 5 years ago
enum EngineState
{
    ON,
    OFF
};

enum Direction
{
    FORWARD,
    BACK,
    NONE
};
alexey-malov commented 5 years ago
Engine state:ON, Gear:0, Speed:0, Direction:NONE
EngineOff
Failed to turn on engine. Engine is already active
alexey-malov commented 5 years ago
Сценарий: Смена направления движения возможна только при полной остановке
 Дано: автомобиль движущийся задом на нейтральной скорости
 Когда: пытаемся включить переднюю передачу
 Тогда: автомобиль сообщает об ошибке
alexey-malov commented 5 years ago
alexey-malov commented 5 years ago