Beispiel #1
0
def test_conflict_between(aircraft_on_collision):
    pos, trk, gs, alt, vs, callsign, active, index, ac = copy.deepcopy(
        aircraft_on_collision)
    flow = Flow(pos, trk, gs, alt, vs, callsign, active)

    flow.deactivate('ac4')
    assert not conflict_between(
        flow.aircraft[2], flow.aircraft[3], t_lookahead=1)
    flow.activate('ac4')
    assert conflict_between(flow.aircraft[2], flow.aircraft[3], t_lookahead=1)

    assert not conflict_between(flow.aircraft[0], flow.aircraft[1])
    assert conflict_between(flow.aircraft[0],
                            flow.aircraft[1],
                            t_lookahead=.36)
    assert not conflict_between(flow.aircraft[2], flow.aircraft[3])
    flow.step(0.35)
    assert conflict_between(flow.aircraft[0], flow.aircraft[1])
    flow.step(0.10)
    assert conflict_between(flow.aircraft[2], flow.aircraft[3])
    flow.step(0.05)
    assert conflict_between(flow.aircraft[0], flow.aircraft[1])
    flow.step(0.16)
    assert not conflict_between(flow.aircraft[0], flow.aircraft[1])
Beispiel #2
0
def test_flow(caplog, aircraft_in_flow_list):
    pos, trk, gs, alt, vs, callsign, active, index, ac = aircraft_in_flow_list

    flow = Flow(pos, trk, gs, alt, vs, callsign, active)
    assert flow.position.shape == (3, 2)
    assert flow.v.shape == (3, 2)
    assert flow.alt.shape == (3, )
    assert flow.vs_fph.shape == (3, )
    assert flow.active.shape == (3, )

    assert flow.active == approx(np.array([True, True, False]))

    flow.step(1)
    v_expected = [[0, 100], [50, 0], [-150, 0]]
    pos_expected = [[0, 100], [51, 2], [10, 20]]
    alt_expected = [6000, 2000, 3000]
    for i in index:
        assert flow.v[i] == approx(v_expected[i])
        assert flow.alt[i] == approx(alt_expected[i])
        assert flow.position[i:i + 1] == approx(np.atleast_2d(pos_expected[i]))

        assert ac[i].position == approx(pos[i:i + 1])
        assert ac[i].trk == approx(trk[i])
        assert ac[i].gs == approx(gs[i])
        assert ac[i].alt == approx(alt[i])
        assert ac[i].vs == approx(vs[i])
        assert ac[i].callsign == callsign[i]
        assert ac[i].active == active[i]

    flow.activate('ac1')
    assert 'ac1 was already active' in caplog.text
    flow.activate('ac1', deactivate=True)

    flow.deactivate('ac3')
    assert 'ac3 was already inactive' in caplog.text
    flow.activate('ac3')

    flow.step(1)
    assert flow.position == approx(np.array([[0, 100], [101, 2], [-140, 20]]))