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_get_route_distance(self): routes = ['AB1', 'AC2', 'CA4'] rail = Railway(routes) self.assertRaises(ValueError, rail.get_route_distance, None, 'A') self.assertRaises(KeyError, rail.get_route_distance, 'D', 'A') self.assertEqual(rail.get_route_distance('A', 'B'), 1) self.assertEqual(rail.get_route_distance('A', 'C'), 2) self.assertEqual(rail.get_route_distance('C', 'A'), 4) self.assertEqual(rail.get_route_distance('A', 'C', 'A'), 6) self.assertEqual(rail.get_route_distance('B', 'C'), None)
print('Our latest railway map is: {}'.format(route)) change_graph = input('Is this correct? Y/N: ') if change_graph.upper() == 'Y': break else: route = input('Please enter the latest railway map: ') rail = Railway(route) print_menu() while True: print('') menu_selection = input('Your selection: ').upper() if menu_selection == '1': print('Output #1: {}'.format( rail.get_route_distance('A', 'B', 'C') or 'NO SUCH ROUTE')) print('Output #2: {}'.format( rail.get_route_distance('A', 'D') or 'NO SUCH ROUTE')) 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')))