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])
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]]))