def find_max_duration__counterclockwise_test(): resp_builder = ResponseBuilder()\ .journey(sections=[ {'mode': 'Walking', 'duration': 240}, {'type': 'PT', 'duration': 300}, {'mode': 'Walking', 'duration': 120}, ], type='best', arrival='T1231')\ .journey(uri='rapid', sections=[ {'mode': 'Walking', 'duration': 120}, {'type': 'PT', 'duration': 300}, {'mode': 'Walking', 'duration': 120}, ], type='rapid', arrival='T1501')\ .journey(uri='non pt', sections=[ {'mode': 'Walking', 'duration': 130}, ], type='non_pt_walk', arrival='T1534') response = resp_builder.response scenario = default.Scenario() assert scenario._find_max_duration(response.journeys, Instance(), False) == 580 scenario._delete_too_long_journey(response, Instance(), False) assert len(response.journeys) == 2 assert response.journeys[0] == resp_builder.get_journey('rapid') assert response.journeys[1] == resp_builder.get_journey('non pt')
def find_max_duration__counterclockwise_test(): response = response_pb2.Response() journey1 = response.journeys.add() journey1.type = "best" section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 240 section = journey1.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 journey1.duration = sum( [section.duration for section in journey1.sections]) journey1.arrival_date_time = 1418211071 journey1.departure_date_time = journey1.arrival_date_time - journey1.duration journey2 = response.journeys.add() journey2.type = "rapid" section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 journey2.duration = sum( [section.duration for section in journey2.sections]) journey2.arrival_date_time = 1418220071 journey2.departure_date_time = journey2.arrival_date_time - journey2.duration journey3 = response.journeys.add() journey3.type = "non_pt_walk" section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 130 journey3.duration = sum( [section.duration for section in journey3.sections]) journey3.arrival_date_time = 1418222071 journey3.departure_date_time = journey3.arrival_date_time - journey3.duration scenario = default.Scenario() eq_(scenario._find_max_duration(response.journeys, Instance(), False), 580) scenario._delete_too_long_journey(response.journeys, Instance(), False) eq_(len(response.journeys), 2) eq_(response.journeys[0], journey2) eq_(response.journeys[1], journey3)
def previous_journey_test(): """ In the default scenario, the previous journey is one minute before the first 'rapid' if we get one""" builder = ResponseBuilder(default_date=datetime.date(2016, 10, 10))\ .journey(type='rapid', departure='T1200', arrival='T1500')\ .journey(type='fastest', departure='T1100', arrival='T1700')\ .journey(type='non_pt_walk', departure='T1000', arrival='T1534')\ .journey(type='car', departure='T1300', arrival='T1534') scenario = default.Scenario() eq_(scenario.previous_journey_datetime(builder.get_journeys()), str_to_time_stamp('20161010T145900'))
def previous_journey_test_no_rapid(): """ In the default scenario, if we don't get a rapid, the previous journey is one minute before the tardiest journey """ builder = ResponseBuilder(default_date=datetime.date(2016, 10, 10))\ .journey(type='fastest', departure='T1100', arrival='T1700')\ .journey(type='non_pt_walk', departure='T1000', arrival='T1534')\ .journey(type='car', departure='T2000', arrival='T1534') scenario = default.Scenario() eq_(scenario.previous_journey_datetime(builder.get_journeys()), str_to_time_stamp('20161010T165900'))
def next_journey_test(): """ In the default scenario, the next journey is one minute after the first 'rapid' if we get one""" builder = ResponseBuilder(default_date=datetime.date(2016, 10, 10))\ .journey(type='rapid', departure='T1200', arrival='T1500')\ .journey(type='fastest', departure='T1100', arrival='T1700')\ .journey(type='non_pt_walk', departure='T1000', arrival='T1534')\ .journey(type='car', departure='T1300', arrival='T1534') scenario = default.Scenario() assert scenario.next_journey_datetime( builder.get_journeys(), clockwise=True) == str_to_time_stamp('20161010T120100')
def find_max_duration_clockwise_no_walk_test(): """ we don't have a journey with walking so max_duration is None, and we keep all journeys """ resp_builder = (ResponseBuilder().journey( uri='best', sections=[ { 'mode': 'Bike', 'duration': 240 }, { 'type': 'PT', 'duration': 300 }, { 'mode': 'Walking', 'duration': 120 }, ], type='best', arrival='T1534', ).journey( uri='rapid', sections=[ { 'mode': 'Walking', 'duration': 120 }, { 'type': 'PT', 'duration': 300 }, { 'mode': 'Bike', 'duration': 120 }, ], type='rapid', arrival='T1534', )) response = resp_builder.response scenario = default.Scenario() assert scenario._find_max_duration(response.journeys, Instance(), True) == None scenario._delete_too_long_journey(response, Instance(), True) assert len(response.journeys) == 2 assert response.journeys[0] == resp_builder.get_journey('best') assert response.journeys[1] == resp_builder.get_journey('rapid')
def delete_non_optimal_journey_simple_test(): response = response_pb2.Response() journey1 = response.journeys.add() journey1.type = "best" section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 section = journey1.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 journey1.duration = sum( [section.duration for section in journey1.sections]) journey2 = response.journeys.add() journey2.type = "rapid" section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 180 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 220 journey2.duration = sum( [section.duration for section in journey2.sections]) journey3 = response.journeys.add() journey3.type = "non_pt_walk" section = journey3.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 250 journey3.duration = sum( [section.duration for section in journey3.sections]) scenario = default.Scenario() scenario._delete_non_optimal_journey(response.journeys) eq_(len(response.journeys), 2) eq_(response.journeys[0], journey1) eq_(response.journeys[1], journey3)
def find_max_duration_clockwise_test(): """ we don't have a journey with walking so max_duration is None, and we keep all journeys """ response = response_pb2.Response() journey1 = response.journeys.add() journey1.type = "best" section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 240 section = journey1.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey1.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 journey1.duration = sum( [section.duration for section in journey1.sections]) journey1.arrival_date_time = 1418222071 journey1.departure_date_time = journey1.arrival_date_time - journey1.duration journey2 = response.journeys.add() journey2.type = "rapid" section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Bike section.duration = 120 journey2.duration = sum( [section.duration for section in journey2.sections]) journey2.arrival_date_time = 1418220071 journey2.departure_date_time = journey2.arrival_date_time - journey2.duration scenario = default.Scenario() eq_(scenario._find_max_duration(response.journeys, Instance(), True), None) scenario._delete_too_long_journey(response.journeys, Instance(), True) eq_(len(response.journeys), 2) eq_(response.journeys[0], journey1) eq_(response.journeys[1], journey2)
def next_journey_test_no_rapid_test(): """ In the default scenario, if we don't get a rapid, the next journey is one minute after the earliest journey """ builder = (ResponseBuilder( default_date=datetime.date(2016, 10, 10)).journey( type='fastest', departure='T1100', arrival='T1700').journey(type='non_pt_walk', departure='T1000', arrival='T1534').journey( type='car', departure='T2000', arrival='T1534')) scenario = default.Scenario() assert scenario.next_journey_datetime( builder.get_journeys(), clockwise=True) == str_to_time_stamp('20161010T100100')
def find_max_duration_clockwise_test_no_walk(): """ we don't have a journey with walking so max_duration is None, and we keep all journeys """ resp_builder = ResponseBuilder()\ .journey(uri='best', sections=[ {'mode': 'Bike', 'duration': 240}, {'type': 'PT', 'duration': 300}, {'mode': 'Walking', 'duration': 120}, ], type='best', arrival='T1534')\ .journey(uri='rapid', sections=[ {'mode': 'Walking', 'duration': 120}, {'type': 'PT', 'duration': 300}, {'mode': 'Bike', 'duration': 120}, ], type='rapid', arrival='T1534') response = resp_builder.response scenario = default.Scenario() eq_(scenario._find_max_duration(response.journeys, Instance(), True), None) scenario._delete_too_long_journey(response, Instance(), True) eq_(len(response.journeys), 2) eq_(response.journeys[0], resp_builder.get_journey('best')) eq_(response.journeys[1], resp_builder.get_journey('rapid'))
def delete_non_optimal_journey_no_action_test(): response = response_pb2.Response() journey = response.journeys.add() journey.type = "best" section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 section = journey.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 journey.duration = sum([section.duration for section in journey.sections]) journey2 = response.journeys.add() journey2.type = "rapid" section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 section = journey2.sections.add() section.type = response_pb2.PUBLIC_TRANSPORT section.duration = 300 section = journey2.sections.add() section.type = response_pb2.STREET_NETWORK section.street_network.mode = response_pb2.Walking section.duration = 120 journey2.duration = sum( [section.duration for section in journey2.sections]) scenario = default.Scenario() scenario._delete_non_optimal_journey(response.journeys) eq_(len(response.journeys), 2)
def find_max_duration_clockwise_test(): resp_builder = ResponseBuilder()\ .journey(sections=[ {'mode': 'Walking', 'duration': 240}, {'type': 'PT', 'duration': 300}, {'mode': 'Walking', 'duration': 120}, ], type='best', arrival='T1501')\ .journey(uri='rapid', sections=[ {'mode': 'Walking', 'duration': 120}, {'type': 'PT', 'duration': 300}, {'mode': 'Walking', 'duration': 120}, ], type='rapid', arrival='T1501')\ .journey(uri='non pt', sections=[ {'mode': 'Walking', 'duration': 130}, ], type='non_pt_walk', arrival='T1231') response = resp_builder.response scenario = default.Scenario() eq_(scenario._find_max_duration(response.journeys, Instance(), True), 580) scenario._delete_too_long_journey(response, Instance(), True) eq_(len(response.journeys), 2) eq_(response.journeys[0], resp_builder.get_journey('rapid')) eq_(response.journeys[1], resp_builder.get_journey('non pt'))