def test_distancias_existe(self) -> None: distancia = direcciones.Distancias(base_de_datos) origen = "Gorriti 4300" destino = "El Salvador 5218" modo = "walking" tiempo = distancia.tiempo(origen, destino, modo, buscar=False) self.assertEqual(20, tiempo)
def test_distancia_repetido(self) -> None: distancia = direcciones.Distancias(base_de_datos) origen = "Gorriti 4000" destino = "El Salvador 5218" modo = "walking" tiempo = distancia.tiempo(origen, destino, modo, buscar=False) self.assertAlmostEqual(16.73333333333, tiempo)
def test_distancias_no_existe(self) -> None: distancia = direcciones.Distancias(base_de_datos) origen = "Gorriti 440" destino = "El Salvador 5218" modo = "walking" with self.assertRaises(IndexError): distancia.tiempo(origen, destino, modo, buscar=False)
def test_guardar_2(self) -> None: distancia = direcciones.Distancias(base_de_datos) origen = "desde" destino = "hasta" modo = "walking" tiempo = 10 distancia._agregar(origen, destino, modo, tiempo) actual = distancia.dataframe distancia.guardar(base_de_datos_salida) guardado = pd.read_csv(base_de_datos_salida) pd.testing.assert_frame_equal(actual, guardado)
def test_agregar_distancia(self) -> None: distancia = direcciones.Distancias(base_de_datos) origen = "desde" destino = "hasta" modo = "walking" tiempo = 10 largo_inicial = len(distancia.dataframe) distancia._agregar(origen, destino, modo, tiempo) largo_final = len(distancia.dataframe) ultima_fila = distancia.dataframe.iloc[-1, :] self.assertEqual(ultima_fila["Origen"], origen) self.assertEqual(ultima_fila["Destino"], destino) self.assertEqual(ultima_fila["Modo"], modo) self.assertEqual(ultima_fila["Tiempo"], tiempo) self.assertEqual(1, largo_final - largo_inicial)
def test_mascara_destino_1(self) -> None: distancia = direcciones.Distancias(base_de_datos) mascara = distancia._mascara_direccion("Destino", "El Salvador 5201") correcto = [True, True, True, True, True, True, True, False, True] self.assertListEqual(correcto, list(mascara))
def test_mascara_origen_5(self) -> None: distancia = direcciones.Distancias(base_de_datos) mascara = distancia._mascara_direccion("Origen", "Gorraiti 4001") correcto = [False, False, False, False, False, False, False, False, False] self.assertListEqual(correcto, list(mascara))
def test_construccion_falla(self) -> None: distancia = direcciones.Distancias(base_de_datos_no_existe) lista_correcta = ["Origen", "Destino", "Modo", "Horario", "Tiempo"] self.assertListEqual(list(distancia.dataframe.columns), lista_correcta)
def test_normalizar_direccion(self) -> None: distancia = direcciones.Distancias(base_de_datos) direccion = "Santa Fe al 4159" direccion = distancia._normalizar_direccion(direccion) self.assertEqual("Santa Fe 4101", direccion)
def test_guardar_1(self) -> None: distancia = direcciones.Distancias(base_de_datos) actual = distancia.dataframe distancia.guardar() guardado = pd.read_csv(base_de_datos) pd.testing.assert_frame_equal(actual, guardado)
def test_mascara_modo_2(self) -> None: distancia = direcciones.Distancias(base_de_datos) mascara = distancia._mascara_modo("bicycling") correcto = [False, False, True, True, False, False, False, False, False] self.assertListEqual(correcto, list(mascara))
def test_mascara_destino_3(self) -> None: distancia = direcciones.Distancias(base_de_datos) mascara = distancia._mascara_direccion("Destino", "Otro 5218") correcto = [False, False, False, False, False, False, False, False, False] self.assertListEqual(correcto, list(mascara))
import logging import pandas as pd from tucasa import direcciones logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.DEBUG) logger = logging.getLogger(__name__) propiedades = pd.read_csv("data/resultados.csv", index_col=0) destinos = pd.read_csv("data/destinos.csv", index_col=0) distancias = direcciones.Distancias("data/bd_distancias.csv") for etiqueta in destinos["Etiqueta"]: propiedades[etiqueta] = 0 for i, origen in enumerate(propiedades["Direccion"]): for viaje in destinos.iterrows(): destino = viaje[1]["Destino"] modo = viaje[1]["Modo"] etiqueta = viaje[1]["Etiqueta"] tiempo = distancias.tiempo(origen, destino, modo) logger.info((f"Modo: {modo}, Origen: {origen}, Destino: {destino}" f", Etiqueta: {etiqueta}")) propiedades[etiqueta].iloc[i] = tiempo # Actualizar las distancias con las nuevas calculadas distancias.guardar("data/bd_distancias.csv") propiedades.to_csv("data/resultados_con_distancias.csv")