public void TestMethodNodosAlgoritmo() { //Preparación Ciudad madrid = CrearCiudad(1, "MADRID"); Ciudad zaragoza = CrearCiudad(2, "ZARAGOZA"); Ciudad lleida = CrearCiudad(3, "LLEIDA"); Ciudad tarragona = CrearCiudad(5, "TARRAGONA"); Ciudad teruel = CrearCiudad(4, "TERUEL"); Nodo nodo1 = CrearNodo(madrid.Id, zaragoza.Id, 3, 300); Nodo nodo2 = CrearNodo(zaragoza.Id, lleida.Id, 2, 150); Nodo nodo3 = CrearNodo(lleida.Id, tarragona.Id, 1.16, 90); Nodo nodo4 = CrearNodo(madrid.Id, teruel.Id, 3.5, 350); Nodo nodo5 = CrearNodo(teruel.Id, tarragona.Id, 2.33, 220); List <Nodo> nodosRutas = new List <Nodo> { nodo1, nodo2, nodo3, nodo4, nodo5 }; List <List <Nodo> > listaFinal = new List <List <Nodo> >(); List <int> ciudadesExpandidas = new List <int>(); List <Nodo> rutaActual = new List <Nodo>(); //Actuación listaFinal = AlgoritmoTodasRutas.algoritmoRutas(listaFinal, madrid.Id, tarragona.Id, ciudadesExpandidas, rutaActual, nodosRutas); //Validación Assert.IsTrue(listaFinal[0].Count == 3 && listaFinal[1].Count == 2); }
/// <summary> /// Método para calcular el total de ruta entre dos ciudades /// </summary> /// <param name="ruta">IdOrigen, IdDestino</param> /// <param name="listaRutas">Todas las rutas disponibles</param> /// <returns></returns> public static List <List <Ruta> > ListaFinalRutas(Ruta ruta, List <Ruta> listaRutas) { List <int> ciudadesExp = new List <int>(); int idDestino = ruta.Origen; int idOrigen = ruta.Destino; ciudadesExp.Add(idOrigen); List <Nodo> listaNodos = new List <Nodo>(); foreach (var r in listaRutas) { Nodo n = new Nodo(r.Origen, r.Destino) { CosteDecimal = r.Km }; listaNodos.Add(n); } List <List <Nodo> > listaFinalNodos = new List <List <Nodo> >(); listaFinalNodos = AlgoritmoTodasRutas.algoritmoRutas(listaFinalNodos, idOrigen, idDestino, ciudadesExp, new List <Nodo>(), listaNodos); List <List <Ruta> > listaFinalRutas = new List <List <Ruta> >(); foreach (var vru in listaFinalNodos) { var listaInterna = new List <Ruta>(); foreach (var vru2 in vru) { Ruta r = listaRutas.Select(x => x).First(x => x.Origen == vru2.IdOrigen && x.Destino == vru2.IdDestino); listaInterna.Add(r); } listaInterna.Reverse(); listaFinalRutas.Add(listaInterna); } return(listaFinalRutas); }