def test_routes_dataframe_closest_stops_returns_closest_stop(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=1, longitude=1, id=1))
     handler.add_stop(MapLocation(latitude=2, longitude=2, id=2))
     handler.add_stop(MapLocation(latitude=3, longitude=3, id=3))
     handler.add_route(address=1, stop=2, distance=100, time=100)
     handler.add_route(address=1, stop=3, distance=50, time=50)
     df = handler.routes_dataframe_closest_stops()
     self.assertEqual(1, df.shape[0], "should be 1 output row")
     self.assertEqual(1, df.ix[0, 'address_latitude'],
                      'address should have latitude of 1')
     self.assertEqual(1, df.ix[0, 'address_longitude'],
                      'address should have longitude of 1')
     self.assertEqual(3, df.ix[0, 'stop_latitude'],
                      'the stop with latitude of 3 should have been '
                      'returned since it had the smallest distance')
     self.assertEqual(3, df.ix[0, 'stop_longitude'],
                      'the stop with longitude of 3 should have been '
                      'returned since it had the smallest distance')
     self.assertEqual(50, df.ix[0, 'distance'],
                      "the route with the lowest distance should be"
                      "returned in the output dataframe")
     self.assertEqual(50, df.ix[0, 'time'],
                      "the route the with lowest distance's time should be"
                      "returned in the output dataframe")
Пример #2
0
 def test_routes_dataframe_closest_stops_returns_closest_stop(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=1, longitude=1, id=1))
     handler.add_stop(MapLocation(latitude=2, longitude=2, id=2))
     handler.add_stop(MapLocation(latitude=3, longitude=3, id=3))
     handler.add_route(address=1, stop=2, distance=100, time=100)
     handler.add_route(address=1, stop=3, distance=50, time=50)
     df = handler.routes_dataframe_closest_stops()
     self.assertEqual(1, df.shape[0], "should be 1 output row")
     self.assertEqual(1, df.ix[0, 'address_latitude'],
                      'address should have latitude of 1')
     self.assertEqual(1, df.ix[0, 'address_longitude'],
                      'address should have longitude of 1')
     self.assertEqual(
         3, df.ix[0, 'stop_latitude'],
         'the stop with latitude of 3 should have been '
         'returned since it had the smallest distance')
     self.assertEqual(
         3, df.ix[0, 'stop_longitude'],
         'the stop with longitude of 3 should have been '
         'returned since it had the smallest distance')
     self.assertEqual(
         50, df.ix[0, 'distance'],
         "the route with the lowest distance should be"
         "returned in the output dataframe")
     self.assertEqual(
         50, df.ix[0, 'time'],
         "the route the with lowest distance's time should be"
         "returned in the output dataframe")
 def test_add_route_adds_route(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.add_address(location=MapLocation(latitude=5, longitude=5))
     handler.add_stop(location=MapLocation(latitude=2, longitude=2))
     handler.add_route(address=1, stop=1, distance=10, time=20)
     c = handler.conn.cursor()
     c.execute("SELECT * FROM routes")
     self.assertEqual((1, 1, 1, 10, 20), c.fetchone())
Пример #4
0
 def test_get_all_stops_returns_list_of_MapLocations(self, mock_init_db):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler._add_stops_table()
     handler.add_stop(MapLocation(latitude=5, longitude=6))
     handler.add_stop(MapLocation(latitude=3, longitude=-5))
     stops = handler.get_all_stops()
     self.assertEqual((5, 6), (stops[0].latitude, stops[0].longitude))
     self.assertEqual((3, -5), (stops[1].latitude, stops[1].longitude))
Пример #5
0
 def test_add_route_adds_route(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.add_address(location=MapLocation(latitude=5, longitude=5))
     handler.add_stop(location=MapLocation(latitude=2, longitude=2))
     handler.add_route(address=1, stop=1, distance=10, time=20)
     c = handler.conn.cursor()
     c.execute("SELECT * FROM routes")
     self.assertEqual((1, 1, 1, 10, 20), c.fetchone())
Пример #6
0
 def test_add_stop_uses_MapLocation_id_if_nonzero(self, mock_init_db):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler._add_stops_table()
     stop_location = MapLocation(latitude=0.48, longitude=179, id=888)
     handler.add_stop(stop_location)
     c = handler.conn.cursor()
     c.execute("SELECT * FROM stops")
     self.assertEqual(888, c.fetchone()[0])
 def test_add_stop_uses_MapLocation_id_if_nonzero(self,
                                                  mock_init_db):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler._add_stops_table()
     stop_location = MapLocation(latitude=0.48, longitude=179, id=888)
     handler.add_stop(stop_location)
     c = handler.conn.cursor()
     c.execute("SELECT * FROM stops")
     self.assertEqual(888, c.fetchone()[0])
 def test_get_all_stops_returns_list_of_MapLocations(self,
                                                     mock_init_db):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler._add_stops_table()
     handler.add_stop(MapLocation(latitude=5, longitude=6))
     handler.add_stop(MapLocation(latitude=3, longitude=-5))
     stops = handler.get_all_stops()
     self.assertEqual((5, 6), (stops[0].latitude, stops[0].longitude))
     self.assertEqual((3, -5), (stops[1].latitude, stops[1].longitude))
Пример #9
0
 def test_add_stop_adds_to_stops_table(self, mock_init_db):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler._add_stops_table()
     map_location = MapLocation(latitude=-0.55, longitude=80)
     handler.add_stop(location=map_location)
     c = handler.conn.cursor()
     c.execute("SELECT latitude, longitude FROM stops")
     row = c.fetchone()
     self.assertEqual((-.55, 80), row)
Пример #10
0
 def test_add_stop_adds_to_stops_table(self,
                                       mock_init_db):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler._add_stops_table()
     map_location = MapLocation(latitude=-0.55, longitude=80)
     handler.add_stop(location=map_location)
     c = handler.conn.cursor()
     c.execute("SELECT latitude, longitude FROM stops")
     row = c.fetchone()
     self.assertEqual((-.55, 80), row)
Пример #11
0
 def test_get_address_without_route_returns_address_without_route(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.add_address(location=MapLocation(latitude=1, longitude=2))
     handler.add_address(location=MapLocation(latitude=3, longitude=4))
     handler.add_stop(location=MapLocation(latitude=0, longitude=0))
     c = handler.conn.cursor()
     c.execute("INSERT INTO routes (address_id, stop_id, distance, time)"
               "VALUES (1, 1, 1, 1)")
     c.close()
     address_generator = handler.get_address_generator()
     self.assertEqual(MapLocation(latitude=3, longitude=4, id=2),
                      address_generator.next(),
                      "the MapLocation without route was not returned")
Пример #12
0
 def test_get_address_without_route_returns_address_without_route(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.add_address(location=MapLocation(latitude=1, longitude=2))
     handler.add_address(location=MapLocation(latitude=3, longitude=4))
     handler.add_stop(location=MapLocation(latitude=0, longitude=0))
     c = handler.conn.cursor()
     c.execute("INSERT INTO routes (address_id, stop_id, distance, time)"
               "VALUES (1, 1, 1, 1)")
     c.close()
     address_generator = handler.get_address_generator()
     self.assertEqual(MapLocation(latitude=3, longitude=4, id=2),
                      address_generator.next(),
                      "the MapLocation without route was not returned")
Пример #13
0
 def test_routes_dataframe_closest_stops_returns_for_many_addresses(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=1, longitude=1, id=1))
     handler.add_address(MapLocation(latitude=11, longitude=10, id=11))
     handler.add_stop(MapLocation(latitude=2, longitude=2, id=2))
     handler.add_stop(MapLocation(latitude=12, longitude=12, id=12))
     handler.add_route(address=1, stop=2, distance=1, time=1)
     handler.add_route(address=1, stop=12, distance=11, time=11)
     handler.add_route(address=11, stop=2, distance=9, time=9)
     handler.add_route(address=11, stop=12, distance=1, time=1)
     df = handler.routes_dataframe_closest_stops()
     self.assertEqual(2, df.shape[0], "should be 2 output rows since "
                                      "there are 2 addresses with routes")
     self.assertEqual(1, df.ix[0, 'distance'],
                      "distance for the first row should be 1 "
                      "since that is the shortest route distance")
Пример #14
0
 def test_routes_dataframe_closest_stops_returns_for_many_addresses(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=1, longitude=1, id=1))
     handler.add_address(MapLocation(latitude=11, longitude=10, id=11))
     handler.add_stop(MapLocation(latitude=2, longitude=2, id=2))
     handler.add_stop(MapLocation(latitude=12, longitude=12, id=12))
     handler.add_route(address=1, stop=2, distance=1, time=1)
     handler.add_route(address=1, stop=12, distance=11, time=11)
     handler.add_route(address=11, stop=2, distance=9, time=9)
     handler.add_route(address=11, stop=12, distance=1, time=1)
     df = handler.routes_dataframe_closest_stops()
     self.assertEqual(
         2, df.shape[0], "should be 2 output rows since "
         "there are 2 addresses with routes")
     self.assertEqual(
         1, df.ix[0, 'distance'], "distance for the first row should be 1 "
         "since that is the shortest route distance")
Пример #15
0
 def test_routes_dataframe_has_correct_values(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=11, longitude=50, id=11))
     handler.add_stop(MapLocation(latitude=-10, longitude=3, id=800))
     handler.add_route(address=11, stop=800, distance=10000, time=50000)
     df = handler.routes_dataframe()
     self.assertEqual(1, df.shape[0], "only one row should be output")
     self.assertEqual(11, df.ix[0, 'address_latitude'],
                      'incorrect address latitude output')
     self.assertEqual(50, df.ix[0, 'address_longitude'],
                      'incorrect address longitude output')
     self.assertEqual(-10, df.ix[0, 'stop_latitude'],
                      'incorrect stop latitude output')
     self.assertEqual(3, df.ix[0, 'stop_longitude'],
                      'incorrect stop longitude output')
     self.assertEqual(10000, df.ix[0, 'distance'],
                      'incorrect distance output')
     self.assertEqual(50000, df.ix[0, 'time'], 'incorrect time output')
Пример #16
0
 def test_routes_dataframe_has_correct_values(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=11, longitude=50, id=11))
     handler.add_stop(MapLocation(latitude=-10, longitude=3, id=800))
     handler.add_route(address=11, stop=800, distance=10000, time=50000)
     df = handler.routes_dataframe()
     self.assertEqual(1, df.shape[0], "only one row should be output")
     self.assertEqual(11, df.ix[0, 'address_latitude'],
                      'incorrect address latitude output')
     self.assertEqual(50, df.ix[0, 'address_longitude'],
                      'incorrect address longitude output')
     self.assertEqual(-10, df.ix[0, 'stop_latitude'],
                      'incorrect stop latitude output')
     self.assertEqual(3, df.ix[0, 'stop_longitude'],
                      'incorrect stop longitude output')
     self.assertEqual(10000, df.ix[0, 'distance'],
                      'incorrect distance output')
     self.assertEqual(50000, df.ix[0, 'time'],
                      'incorrect time output')
Пример #17
0
 def test_routes_dataframe_only_grabs_routes_no_dangling_locations(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=1, longitude=1, id=1))
     handler.add_address(MapLocation(latitude=2, longitude=2, id=2))
     handler.add_address(MapLocation(latitude=3, longitude=3, id=3))
     handler.add_stop(MapLocation(latitude=11, longitude=11, id=11))
     handler.add_stop(MapLocation(latitude=12, longitude=12, id=12))
     handler.add_stop(MapLocation(latitude=13, longitude=13, id=13))
     handler.add_route(address=1, stop=11, distance=100, time=1000)
     handler.add_route(address=3, stop=13, distance=100, time=1000)
     df = handler.routes_dataframe()
     self.assertEqual(2, df.shape[0], "should be 2 output rows")
     self.assertEqual(1, df.ix[0, 'address_latitude'],
                      'incorrect address latitude output')
     self.assertEqual(3, df.ix[1, 'address_latitude'],
                      'incorrect address latitude output')
     self.assertEqual(11, df.ix[0, 'stop_latitude'],
                      'incorrect stop latitude output')
     self.assertEqual(13, df.ix[1, 'stop_latitude'],
                      'incorrect stop latitude output')
Пример #18
0
 def test_routes_dataframe_only_grabs_routes_no_dangling_locations(self):
     handler = DatabaseHandler('unit_test_db.sqlite3')
     handler.initialize_db()
     handler.add_address(MapLocation(latitude=1, longitude=1, id=1))
     handler.add_address(MapLocation(latitude=2, longitude=2, id=2))
     handler.add_address(MapLocation(latitude=3, longitude=3, id=3))
     handler.add_stop(MapLocation(latitude=11, longitude=11, id=11))
     handler.add_stop(MapLocation(latitude=12, longitude=12, id=12))
     handler.add_stop(MapLocation(latitude=13, longitude=13, id=13))
     handler.add_route(address=1, stop=11, distance=100, time=1000)
     handler.add_route(address=3, stop=13, distance=100, time=1000)
     df = handler.routes_dataframe()
     self.assertEqual(2, df.shape[0], "should be 2 output rows")
     self.assertEqual(1, df.ix[0, 'address_latitude'],
                      'incorrect address latitude output')
     self.assertEqual(3, df.ix[1, 'address_latitude'],
                      'incorrect address latitude output')
     self.assertEqual(11, df.ix[0, 'stop_latitude'],
                      'incorrect stop latitude output')
     self.assertEqual(13, df.ix[1, 'stop_latitude'],
                      'incorrect stop latitude output')
Пример #19
0
    def test_output_routes_outputs_single_route(self):
        handler = DatabaseHandler('unit_test_db.sqlite3')
        handler.initialize_db()
        handler.add_address(MapLocation(latitude=3, longitude=4, id=1))
        handler.add_stop(MapLocation(latitude=9, longitude=10, id=1))
        handler.add_route(address=1, stop=1, distance=50, time=100)

        handler.output_routes(file_path='test_file.csv')
        self.assertTrue(os.path.exists('test_file.csv'),
                        'test_file.csv file not found')
        output = pd.read_csv('test_file.csv')
        self.assertNotEqual(0, output.shape[0], "no output rows in output .csv")
        self.assertEqual(3, output.ix[0, 'address_latitude'],
                         'incorrect address latitude output')
        self.assertEqual(4, output.ix[0, 'address_longitude'],
                         'incorrect address longitude output')
        self.assertEqual(9, output.ix[0, 'stop_latitude'],
                         'incorrect stop latitude output')
        self.assertEqual(10, output.ix[0, 'stop_longitude'],
                         'incorrect stop longitude output')
        self.assertEqual(50, output.ix[0, 'distance'],
                         'incorrect distance output')
        self.assertEqual(100, output.ix[0, 'time'],
                         'incorrect time output')
Пример #20
0
    def test_output_routes_outputs_correctly_for_one_route(self):
        handler = DatabaseHandler('unit_test_db.sqlite3')
        handler.initialize_db()
        handler.add_address(MapLocation(latitude=3, longitude=4, id=1))
        handler.add_stop(MapLocation(latitude=9, longitude=10, id=1))
        handler.add_route(address=1, stop=1, distance=50, time=100)

        handler.output_routes(file_path='test_file.csv')
        self.assertTrue(os.path.exists('test_file.csv'),
                        'test_file.csv file not found')
        output = pd.read_csv('test_file.csv')
        self.assertNotEqual(0, output.shape[0],
                            "no output rows in output .csv")
        self.assertEqual(3, output.ix[0, 'address_latitude'],
                         'incorrect address latitude output')
        self.assertEqual(4, output.ix[0, 'address_longitude'],
                         'incorrect address longitude output')
        self.assertEqual(9, output.ix[0, 'stop_latitude'],
                         'incorrect stop latitude output')
        self.assertEqual(10, output.ix[0, 'stop_longitude'],
                         'incorrect stop longitude output')
        self.assertEqual(50, output.ix[0, 'distance'],
                         'incorrect distance output')
        self.assertEqual(100, output.ix[0, 'time'], 'incorrect time output')