def test_sort(self): l1 = LabelTimeAndRoute(departure_time=1, arrival_time_target=1, movement_duration=3, first_leg_is_walk=False) l2 = LabelTimeAndRoute(0, 0, 0, False) self.assertTrue(l1 > l2) self.assertTrue(l1 >= l2) self.assertFalse(l1 < l2) self.assertFalse(l1 <= l2) l1 = LabelTimeAndRoute(0, 0, 0, False) l2 = LabelTimeAndRoute(0, 0, 0, False) self.assertTrue(l1 == l2) self.assertTrue(l1 >= l2) self.assertTrue(l1 <= l2) self.assertFalse(l1 != l2) l1 = LabelTimeAndRoute(1, 0, 10, False) l2 = LabelTimeAndRoute(1, 1, 10, False) self.assertTrue(l1 > l2) self.assertFalse(l1 < l2) l1 = LabelTimeAndRoute(1, 1, 0, False) l2 = LabelTimeAndRoute(1, 1, 10, False) self.assertTrue(l1 > l2) self.assertFalse(l1 < l2) self.assertTrue(sorted([l1, l2])[0] == l2) l1 = LabelTimeAndRoute(1, 1, 10, True) l2 = LabelTimeAndRoute(1, 1, 10, False) self.assertTrue(l1 < l2) self.assertFalse(l1 > l2)
def add_fastest_path_column(self): print("adding fastest path column") cur = self.conn.cursor() for target in self.get_targets(): fastest_path_journey_ids = [] for origin in self.get_origins(): cur.execute( 'SELECT departure_time, arrival_time_target, journey_id FROM journeys ' 'WHERE from_stop_I = ? AND to_stop_I = ? ' 'ORDER BY departure_time ASC', (origin, target)) all_trips = cur.fetchall() all_labels = [ LabelTimeAndRoute(x[0], x[1], x[2], False) for x in all_trips ] #putting journey_id as movement_duration all_fp_labels = compute_pareto_front(all_labels, finalization=False, ignore_n_boardings=True) fastest_path_journey_ids.append(all_fp_labels) fastest_path_journey_ids = [(1, x.movement_duration) for sublist in fastest_path_journey_ids for x in sublist] cur.executemany( "UPDATE journeys SET fastest_path = ? WHERE journey_id = ?", fastest_path_journey_ids) self.conn.commit()
def test_large_numbers_do_not_overflow(self): departure_time = 1475530980 arrival_time = 1475530980 label = LabelTimeAndRoute(departure_time=float(departure_time), arrival_time_target=float(arrival_time), movement_duration=0, first_leg_is_walk=False) self.assertEqual(departure_time, label.departure_time) self.assertEqual(arrival_time, label.arrival_time_target)
def test_dominates_ignoring_dep_time_arrival_time(self): labela = LabelTimeAndRoute(departure_time=1, arrival_time_target=9, movement_duration=1, first_leg_is_walk=False) labelb = LabelTimeAndRoute(departure_time=1, arrival_time_target=10, movement_duration=1, first_leg_is_walk=False) self.assertFalse(labelb.dominates_ignoring_dep_time(labela)) self.assertTrue(labela.dominates_ignoring_dep_time(labelb))
def test_dominates_earlier_departure_time(self): label2 = LabelTimeAndRoute(departure_time=1, arrival_time_target=10, movement_duration=0, first_leg_is_walk=False) label5 = LabelTimeAndRoute(departure_time=0, arrival_time_target=10, movement_duration=0, first_leg_is_walk=False) self.assertTrue(label2.dominates(label5)) self.assertFalse(label5.dominates(label2))
def test_does_not_dominate_same(self): label2 = LabelTimeAndRoute(departure_time=1, arrival_time_target=10, movement_duration=0, first_leg_is_walk=False) label3 = LabelTimeAndRoute(departure_time=1, arrival_time_target=10, movement_duration=0, first_leg_is_walk=False) self.assertTrue(label2.dominates(label3)) self.assertTrue(label3.dominates(label2))
def test_dominates_less_movement_duration_when_departure_time_not_the_same( self): labela = LabelTimeAndRoute(departure_time=4, arrival_time_target=10, movement_duration=1, first_leg_is_walk=False) labelb = LabelTimeAndRoute(departure_time=1, arrival_time_target=10, movement_duration=0, first_leg_is_walk=False) self.assertFalse(labelb.dominates(labela)) self.assertTrue(labela.dominates(labelb))
def test_duration(self): label1 = LabelTimeAndRoute(departure_time=0, arrival_time_target=20, movement_duration=1, first_leg_is_walk=False) self.assertEqual(20, label1.duration())