def test_collision_if_car_drives_at_full_speed(): hr = 3 s = Road(headlight_range=hr, car=Car(2, hr), obstacles=[Bump(hr + 1, 2)]) s_p = Road(headlight_range=hr, car=Car(2, hr), obstacles=[Bump(hr, 2)]) num_collisions = s.count_obstacle_collisions( s_p, lambda obs: int(isinstance(obs, Bump))).pop() assert num_collisions == 1 num_collisions = s_p.count_obstacle_collisions( s, lambda obs: int(isinstance(obs, Bump))).pop() assert num_collisions == 0
def test_collision_if_car_changes_lanes_into_obstacle(): hr = 3 s = Road(headlight_range=hr, car=Car(2, 1), obstacles=[Bump(hr, 1)]) s_p = Road(headlight_range=hr, car=Car(1, 1), obstacles=[Bump(hr, 1)]) num_collisions = s.count_obstacle_collisions( s_p, lambda obs: int(isinstance(obs, Bump))).pop() assert num_collisions == 1 num_collisions = s_p.count_obstacle_collisions( s, lambda obs: int(isinstance(obs, Bump))).pop() assert num_collisions == 0
def test_no_collision_if_obstacle_is_under_car(): hr = 3 car = Car(2, 4) s = Road(headlight_range=hr, car=car, obstacles=[Bump(hr, 2)]) s_p = Road(headlight_range=hr, car=car, obstacles=[Bump(hr + 1, 2)]) num_collisions = s.count_obstacle_collisions( s_p, lambda obs: int(isinstance(obs, Bump))).pop() assert num_collisions == 0
def test_simple_collision(): hr = 3 car = Car(2, 4) s = Road(headlight_range=hr, car=car, obstacles=[Bump(-1, -1)]) s_p = Road(headlight_range=hr, car=car, obstacles=[Bump(hr, 2)]) num_collisions = s.count_obstacle_collisions( s_p, lambda obs: int(isinstance(obs, Bump))).pop() assert num_collisions == 1