예제 #1
0
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)
예제 #2
0
 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)
예제 #3
0
     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: