def test_car_is_validating_position_with_road(): # On init road = Road() car1 = Car(road, position=2000) assert car1.position == 0 # In update_position car1 = Car(road, position=100, init_speed=10) car2 = Car(road, position=500) car1.position = 1000 car1.update_position(car2) assert car1.position == 10 # In brake_if_needed car1 = Car(road, position=1005, init_speed=10) car2 = Car(road, position=10) did_brake = car1.brake_if_needed(leading_car=car2) assert did_brake is True with mock.patch("random.random", return_value=1): car1 = Car(road, position=500, init_speed=10) car2 = Car(road, position=0) did_brake = car1.brake_if_needed(leading_car=car2) assert did_brake is False assert car1.distance_behind(car2) == 495
def test_car_slows_if_over_desired_speed(): road = Road() car1 = Car(road, init_speed=100, desired_speed=30) car2 = Car(road, position=900) with mock.patch("random.random", return_value=1): # disable random braking car1.brake_if_needed(leading_car=car2) assert car1.speed == 30 with mock.patch("random.random", return_value=0.05): # force random braking car1.brake_if_needed(leading_car=car2) assert car1.speed == 28 car1.speed = 100 car1.accelerate() assert car1.speed == 30
def test_brake_if_needed(): # Stop if collision imminent road = Road() car1 = Car(road, position=200, init_speed=20) car2 = Car(road, position=210) with mock.patch("random.random", return_value=1): did_brake = car1.brake_if_needed(leading_car=car2) assert did_brake is True assert car1.speed == 5