class RailwaySampleDataTest(unittest.TestCase): def setUp(self): routes = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7" self.rail = Railway(routes) def test_distances(self): self.assertEqual(self.rail.get_route_distance('A', 'B', 'C'), 9) self.assertEqual(self.rail.get_route_distance('A', 'D'), 5) self.assertEqual(self.rail.get_route_distance('A', 'D', 'C'), 13) self.assertEqual(self.rail.get_route_distance('A', 'E', 'B', 'C', 'D'), 22) self.assertEqual(self.rail.get_route_distance('A', 'E', 'D'), None) def test_find_routes_by_stops(self): self.assertEqual(len(self.rail.find_routes_by_stops('C', 'C', 3)), 2) self.assertEqual( len( self.rail.find_routes_by_stops('A', 'C', 4, Railway.FindModes.exact)), 3) def test_find_shortest_route(self): self.assertEqual(self.rail.shortest_route('A', 'C'), 9) self.assertEqual(self.rail.shortest_route('B', 'B'), 9) def test_find_routes_by_distance(self): self.assertEqual(len(self.rail.find_routes_by_distance('C', 'C', 30)), 7)
def test_find_routes_by_distance(self): routes = ['AB1', 'AC2', 'CA4'] rail = Railway(routes) self.assertRaises(ValueError, rail.find_routes_by_distance, None, 'A', 5) self.assertRaises(ValueError, rail.find_routes_by_distance, 'A', 'B', 'Z') self.assertRaises(KeyError, rail.find_routes_by_distance, 'D', 'A', 5) self.assertEqual(rail.find_routes_by_distance('A', 'B', -1), []) self.assertEqual(rail.find_routes_by_distance('A', 'B', 0), []) self.assertEqual(rail.find_routes_by_distance('A', 'B', 2), [['A', 'B', 1]]) self.assertEqual(rail.find_routes_by_distance('A', 'C', 14), [['A', 'C', 2], ['A', 'C', 'A', 'C', 8]]) self.assertEqual(rail.find_routes_by_distance('A', 'C', 15), [['A', 'C', 2], ['A', 'C', 'A', 'C', 8], ['A', 'C', 'A', 'C', 'A', 'C', 14]]) self.assertEqual(len(rail.find_routes_by_distance('A', 'C', 1000)), 167)
print('Output #3: {}'.format( rail.get_route_distance('A', 'D', 'C') or 'NO SUCH ROUTE')) print('Output #4: {}'.format( rail.get_route_distance('A', 'E', 'B', 'C', 'D') or 'NO SUCH ROUTE')) print('Output #5: {}'.format( rail.get_route_distance('A', 'E', 'D') or 'NO SUCH ROUTE')) print('Output #6: {}'.format( len(rail.find_routes_by_stops('C', 'C', 3)))) print('Output #7: {}'.format( len(rail.find_routes_by_stops('A', 'C', 4, Railway.FindModes.exact)))) print('Output #8: {}'.format(rail.shortest_route('A', 'C'))) print('Output #9: {}'.format(rail.shortest_route('B', 'B'))) print('Output #10: {}'.format( len(rail.find_routes_by_distance('C', 'C', 30)))) elif menu_selection == '2': origin = input('Please enter the origin station: ') next_stop = input('Please enter the destination station: ') stops = [next_stop] while True: next_stop = input( 'Please enter the next destination station, or ! to stop: ') if next_stop == '!': break else: stops.append(next_stop) distance = rail.get_route_distance(origin, *stops) if not distance: print('NO SUCH ROUTE') else: