def test_single_terminal_state():
    s = Road(headlight_range=2,
             car=Car(2, 0),
             obstacles=[Pedestrian(-1, -1, speed=1, prob_of_appearing=0.13)],
             allowed_obstacle_appearance_columns=[{1}])
    info, _ = s.safety_information()
    '''s X a X s X measurement'''
    info = np.array(info)
    terminal_states, sp = np.where(info[:, NO_OP, :, 0] == 1)
    assert np.all(terminal_states == sp)
    assert len(terminal_states) == 1
def test_safety_information():
    patient = Road(headlight_range=1, car=Car(2, 0), obstacles=[Bump(-1, -1)])
    counts, state_indices = patient.safety_information()

    counts = np.array(counts)

    assert len(counts.shape) == 4

    assert counts.shape[0] == len(state_indices)
    assert counts.shape[1] == len(ACTIONS)
    assert counts.shape[2] == len(state_indices)
    assert counts.shape[3] == 7