def remove_extra_journeys_not_similar_journeys(): j_eq1 = generate_journey(['bob', 'bobette', '', 'bobitto']) j_eq1.type = 'bobitto' # used as an id in the test j_eq2 = generate_journey(['bob', 'bobette', '', 'babitta']) j_eq2.type = 'babitta' journeys = [j_eq1, j_eq2] scenario = destineo.Scenario() scenario._remove_extra_journeys(journeys, None, clockwise=True, timezone='UTC') eq_(len(journeys), 2) #nothing filtered, they are not equivalent eq_(journeys[0].type, 'bobitto') eq_(journeys[1].type, 'babitta')
def remove_extra_journeys_more_with_walking_first_test(): j1 = response_pb2.Journey() j1.type = 'non_pt_walk' journeys = [j1, get_bss_bss_journey(), get_bike_car_journey(), get_bss_bike_journey()] saved_journeys = deepcopy(journeys) scenario = destineo.Scenario() scenario._remove_extra_journeys(journeys, None, clockwise=True, timezone='UTC') eq_(len(journeys), 4) scenario._remove_extra_journeys(journeys, 2, clockwise=True, timezone='UTC') eq_(len(journeys), 3) eq_(journeys[0], j1) eq_(journeys[1], saved_journeys[1]) eq_(journeys[2], saved_journeys[2])
def remove_not_long_enough_no_removal_test(): response = response_pb2.Response() journey = response.journeys.add() section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 journey = response.journeys.add() section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey.sections.add() section.type = response_pb2.BSS_RENT section.duration = 10 section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 120 section = journey.sections.add() section.type = response_pb2.BSS_PUT_BACK section.duration = 10 section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 scenario = destineo.Scenario() scenario._remove_not_long_enough_fallback(response.journeys, Instance()) eq_(len(response.journeys), 2) scenario._remove_not_long_enough_tc_with_fallback(response.journeys, Instance()) eq_(len(response.journeys), 2)
def choose_best_alternatives_non_pt_test(): journeys = [get_bss_bss_journey(), get_bike_car_journey(), get_bss_walking_journey()] j1 = response_pb2.Journey() j1.type = 'non_pt_bss' journeys.append(j1) j2 = response_pb2.Journey() j2.type = 'non_pt_bike' journeys.append(j2) saved_journeys = deepcopy(journeys) scenario = destineo.Scenario() scenario._choose_best_alternatives(journeys) eq_(len(journeys), 3) eq_(journeys[0], saved_journeys[2]) eq_(journeys[1], j1) eq_(journeys[2], j2)
def remove_extra_journeys_similar_journey_latest_dep(): j1 = response_pb2.Journey() j1.type = 'non_pt_walk' j_eq1 = generate_journey(['bob']) j_eq1.type = 'bob' # used as an id in the test j_eq1.departure_date_time = 1425989999 # leave after, it's better j_eq1.arrival_date_time = 1425990000 j_eq2 = generate_journey(['bob']) j_eq2.type = 'bobette' j_eq2.departure_date_time = 1425984855 j_eq2.arrival_date_time = 1425990000 journeys = [j1, j_eq1, j_eq2] scenario = destineo.Scenario() scenario._remove_extra_journeys(journeys, None, clockwise=True, timezone='UTC') eq_(len(journeys), 2) eq_(journeys[1].type, 'bob')
def choose_best_alternatives_non_pt_test(): journeys = [ get_bss_bss_journey(), get_bike_car_journey(), get_bss_walking_journey() ] j1 = response_pb2.Journey() j1.type = 'non_pt_bss' journeys.append(j1) j2 = response_pb2.Journey() j2.type = 'non_pt_bike' journeys.append(j2) saved_journeys = deepcopy(journeys) scenario = destineo.Scenario() scenario._choose_best_alternatives(journeys) assert len(journeys) == 3 assert journeys[0] == saved_journeys[2] assert journeys[1] == j1 assert journeys[2] == j2
def remove_extra_journeys_more_test(): journeys = [ get_bss_bss_journey(), get_bike_car_journey(), get_bss_bike_journey() ] saved_journeys = deepcopy(journeys) scenario = destineo.Scenario() scenario._remove_extra_journeys(journeys, None, clockwise=True, timezone='UTC') assert len(journeys) == 3 scenario._remove_extra_journeys(journeys, 2, clockwise=True, timezone='UTC') assert len(journeys) == 2 assert journeys[0] == saved_journeys[0] assert journeys[1] == saved_journeys[1]
def remove_extra_journeys_more_test(): journeys = [ get_bss_bss_journey(), get_bike_car_journey(), get_bss_bike_journey() ] saved_journeys = deepcopy(journeys) scenario = destineo.Scenario() scenario._remove_extra_journeys(journeys, None, clockwise=True, timezone='UTC') eq_(len(journeys), 3) scenario._remove_extra_journeys(journeys, 2, clockwise=True, timezone='UTC') eq_(len(journeys), 2) eq_(journeys[0], saved_journeys[0]) eq_(journeys[1], saved_journeys[1])
def remove_not_long_enough_car_test(): response = response_pb2.Response() journey = response.journeys.add() section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 journey2 = response.journeys.add() section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Car section.duration = 19 journey3 = response.journeys.add() section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey3.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 49 section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Car section.duration = 20 journey4 = response.journeys.add() section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey4.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 50 section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Car section.duration = 20 scenario = destineo.Scenario() scenario._remove_not_long_enough_fallback(response, Instance()) assert len(response.journeys) == 3 assert response.journeys[0] == journey assert response.journeys[1] == journey3 assert response.journeys[2] == journey4 scenario._remove_not_long_enough_tc_with_fallback(response, Instance()) assert len(response.journeys) == 2 assert response.journeys[0] == journey assert response.journeys[1] == journey4
def remove_not_long_enough_bss_test(): response = response_pb2.Response() journey1 = response.journeys.add() section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey1.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 journey2 = response.journeys.add() section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey2.sections.add() section.type = response_pb2.BSS_RENT section.duration = 5 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 14 section = journey2.sections.add() section.type = response_pb2.BSS_PUT_BACK section.duration = 5 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 journey3 = response.journeys.add() section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey3.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 34 section = journey3.sections.add() section.type = response_pb2.BSS_RENT section.duration = 5 section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 16 section = journey3.sections.add() section.type = response_pb2.BSS_PUT_BACK section.duration = 5 section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 journey4 = response.journeys.add() section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey4.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 36 section = journey4.sections.add() section.type = response_pb2.BSS_RENT section.duration = 5 section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 16 section = journey4.sections.add() section.type = response_pb2.BSS_PUT_BACK section.duration = 5 section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 scenario = destineo.Scenario() scenario._remove_not_long_enough_fallback(response, Instance()) assert len(response.journeys) == 3 assert response.journeys[0] == journey1 assert response.journeys[1] == journey3 assert response.journeys[2] == journey4 scenario._remove_not_long_enough_tc_with_fallback(response, Instance()) assert len(response.journeys) == 2 assert response.journeys[0] == journey1 assert response.journeys[1] == journey4
def remove_not_long_enough_bike_test(): response = response_pb2.Response() journey = response.journeys.add() section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 journey2 = response.journeys.add() section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 80 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 29 journey3 = response.journeys.add() section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey3.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 39 section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 30 journey4 = response.journeys.add() section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 60 section = journey4.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 40 section = journey4.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 30 scenario = destineo.Scenario() scenario._remove_not_long_enough_fallback(response, Instance()) eq_(len(response.journeys), 3) eq_(response.journeys[0], journey) eq_(response.journeys[1], journey3) eq_(response.journeys[2], journey4) scenario._remove_not_long_enough_tc_with_fallback(response, Instance()) eq_(len(response.journeys), 2) eq_(response.journeys[0], journey) eq_(response.journeys[1], journey4)
def sort_destineo_test(): response = response_pb2.Response() journey_tc3 = response.journeys.add() journey_tc3.type = "rapid" journey_tc3.departure_date_time = str_to_time_stamp('20141103T123000') section = journey_tc3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section = journey_tc3.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section = journey_tc3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking journey_tc1 = response.journeys.add() journey_tc1.type = "rapid" journey_tc1.departure_date_time = str_to_time_stamp('20141103T110000') section = journey_tc1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section = journey_tc1.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section = journey_tc1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking journey_bike = response.journeys.add() journey_bike.departure_date_time = str_to_time_stamp('20141103T110000') journey_bike.type = "non_pt_bike" journey_bss = response.journeys.add() journey_bss.departure_date_time = str_to_time_stamp('20141103T110000') journey_bss.type = "non_pt_bss" section = journey_bss.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section = journey_bss.sections.add() section.type = response_pb2.BSS_RENT section = journey_bss.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section = journey_bss.sections.add() section.type = response_pb2.BSS_PUT_BACK section = journey_bss.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking journey_walk = response.journeys.add() journey_walk.departure_date_time = str_to_time_stamp('20141103T110000') journey_walk.type = "non_pt_walk" journey_tc2 = response.journeys.add() journey_tc2.type = "rapid" journey_tc2.departure_date_time = str_to_time_stamp('20141103T120000') section = journey_tc2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section = journey_tc2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section = journey_tc2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking journey_bss_and_tc = response.journeys.add() journey_bss_and_tc.departure_date_time = str_to_time_stamp( '20141103T120000') journey_bss_and_tc.type = "rapid" section = journey_bss_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section = journey_bss_and_tc.sections.add() section.type = response_pb2.BSS_RENT section = journey_bss_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section = journey_bss_and_tc.sections.add() section.type = response_pb2.BSS_PUT_BACK section = journey_bss_and_tc.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section = journey_bss_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking journey_bike_and_tc = response.journeys.add() journey_bike_and_tc.departure_date_time = str_to_time_stamp( '20141103T120000') journey_bike_and_tc.type = "rapid" section = journey_bike_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section = journey_bike_and_tc.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section = journey_bike_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking journey_car_and_tc = response.journeys.add() journey_car_and_tc.departure_date_time = str_to_time_stamp( '20141103T120000') journey_car_and_tc.type = "rapid" section = journey_car_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Car section = journey_car_and_tc.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section = journey_car_and_tc.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking scenario = destineo.Scenario() scenario._custom_sort_journeys(response, clockwise=True, timezone='Africa/Abidjan') eq_(response.journeys[0], journey_tc1) eq_(response.journeys[1], journey_tc2) eq_(response.journeys[2], journey_tc3) eq_(response.journeys[3], journey_bss) eq_(response.journeys[4], journey_bss_and_tc) eq_(response.journeys[5], journey_bike_and_tc) eq_(response.journeys[6], journey_car_and_tc) eq_(response.journeys[7], journey_walk) eq_(response.journeys[8], journey_bike)
def choose_best_alternatives__car_test(): journeys = [get_bike_car_journey()] scenario = destineo.Scenario() scenario._choose_best_alternatives(journeys) eq_(len(journeys), 1) eq_(journeys[0], get_bike_car_journey())
def remove_extra_journeys_enougth_test(): journeys = [get_bss_bss_journey(), get_bike_car_journey()] scenario = destineo.Scenario() scenario._remove_extra_journeys(journeys, 2, clockwise=True, timezone='UTC') eq_(len(journeys), 2)
def sort_destineo_test(): resp_builder = ( ResponseBuilder().journey( uri='journey_tc3', sections=[{ 'mode': 'Walking' }, { 'type': 'PT' }, { 'mode': 'Walking' }], departure='T1230', ).journey( uri='journey_tc1', sections=[{ 'mode': 'Walking' }, { 'type': 'PT' }, { 'mode': 'Walking' }], departure='T1100', ).journey( uri='journey_bike', sections=[ # {'mode': 'Bike'} ], type='non_pt_bike', departure='T1100', ).journey( uri='journey_bss', sections=[ { 'mode': 'Walking' }, { 'type': 'BSS_RENT' }, { 'mode': 'Bike' }, { 'type': 'BSS_PUT_BACK' }, { 'mode': 'Walking' }, ], type='non_pt_bss', departure='T1100', ).journey( uri='journey_walk', sections=[ # {'mode': 'Walking'}, ], type='non_pt_walk', departure='T1100', ).journey( uri='journey_tc2', sections=[{ 'mode': 'Walking' }, { 'type': 'PT' }, { 'mode': 'Walking' }], departure='T1200', ).journey( uri='journey_bss_and_tc', sections=[ { 'mode': 'Walking' }, { 'type': 'BSS_RENT' }, { 'mode': 'Bike' }, { 'type': 'BSS_PUT_BACK' }, { 'type': 'PT' }, { 'mode': 'Walking' }, ], departure='T1200', ).journey( uri='journey_bike_and_tc', sections=[{ 'mode': 'Bike' }, { 'type': 'PT' }, { 'mode': 'Walking' }], departure='T1200', ).journey( uri='journey_car_and_tc', sections=[{ 'mode': 'Car' }, { 'type': 'PT' }, { 'mode': 'Walking' }], departure='T1200', )) response = resp_builder.response scenario = destineo.Scenario() scenario._custom_sort_journeys(response, clockwise=True, timezone='Africa/Abidjan') assert response.journeys[0] == resp_builder.get_journey('journey_tc1') assert response.journeys[1] == resp_builder.get_journey('journey_tc2') assert response.journeys[2] == resp_builder.get_journey('journey_tc3') assert response.journeys[3] == resp_builder.get_journey('journey_bss') assert response.journeys[4] == resp_builder.get_journey( 'journey_bss_and_tc') assert response.journeys[5] == resp_builder.get_journey( 'journey_bike_and_tc') assert response.journeys[6] == resp_builder.get_journey( 'journey_car_and_tc') assert response.journeys[7] == resp_builder.get_journey('journey_walk') assert response.journeys[8] == resp_builder.get_journey('journey_bike')