예제 #1
0
        public GrafoRotasVoo GetGrafoFromDB()
        {
            var grafoVooRota = new GrafoRotasVoo();
            var arestas      = _dbManager.GetRoutesData();
            var vertices     = new List <Vertice>();

            foreach (var aresta in arestas)
            {
                if ((from auxVertice in vertices where auxVertice.Aeroporto == aresta.VerticeO select auxVertice).Count() == 0)
                {
                    var vertex = new Vertice {
                        Aeroporto = aresta.VerticeO, Status = Status.NOVO, Arestas = new List <Aresta>()
                    };
                    vertex.Arestas.Add(new Aresta {
                        Distancia = aresta.Distancia, Duracao = aresta.Duracao, Peso = aresta.Peso, VerticeD = aresta.VerticeD, VerticeO = aresta.VerticeO
                    });
                    vertices.Add(vertex);
                }
                else
                {
                    var vertice = grafoVooRota.EncontraVerticePorNome(aresta.VerticeO, vertices);
                    var index   = vertices.IndexOf(vertice);
                    vertices[index].Arestas.Add(new Aresta {
                        Distancia = aresta.Distancia, Duracao = aresta.Duracao, Peso = aresta.Peso, VerticeD = aresta.VerticeD, VerticeO = aresta.VerticeO
                    });
                }
            }
            grafoVooRota.Vertices.AddRange(vertices);
            grafoVooRota.Arestas.AddRange(arestas);
            return(grafoVooRota);
        }
예제 #2
0
        public void EncontrarVerticePorNome_Test(string nome)
        {
            GrafoRotasVoo Rotas = new GrafoRotasVoo();
            GrafoRotasVoo Voos  = new GrafoRotasVoo();

            Rotas.CriaGrafo("rotas.txt");
            Voos.CriaGrafo("voos.txt");

            var vertice = Rotas.EncontraVerticePorNome(nome);

            vertice.ShouldNotBeNull();
            vertice.Aeroporto.ShouldBe(nome);
            return;
        }
예제 #3
0
        public void ArvoreGeradoraMinima_Test()
        {
            GrafoRotasVoo Rotas = new GrafoRotasVoo();
            GrafoRotasVoo Voos  = new GrafoRotasVoo();

            Rotas.CriaGrafo("rotas.txt");
            Voos.CriaGrafo("voos.txt");



            var prim = Rotas.ArvoreGeradoraMin(Rotas.Vertices, Rotas.Arestas);

            prim.ShouldNotBeNull();
            prim.Vertices.Count.ShouldBeGreaterThan(0);
            prim.Arestas.Count.ShouldBeGreaterThan(0);
            return;
        }
예제 #4
0
        public void isAtingivel_Test(string origem, string destino)
        {
            GrafoRotasVoo Rotas = new GrafoRotasVoo();
            GrafoRotasVoo Voos  = new GrafoRotasVoo();

            Rotas.CriaGrafo("rotas.txt");
            Voos.CriaGrafo("voos.txt");

            var vOrigem  = Rotas.EncontraVerticePorNome(origem);
            var vDestino = Rotas.EncontraVerticePorNome(destino);

            vOrigem.ShouldNotBeNull();
            vOrigem.Aeroporto.ShouldBe(origem);

            vDestino.ShouldNotBeNull();
            vDestino.Aeroporto.ShouldBe(destino);

            Rotas.isAtingivel(vOrigem, vDestino).ShouldBeTrue();
            return;
        }
예제 #5
0
        public void MelhorCaminho_Test(string origem, string destino)
        {
            GrafoRotasVoo Rotas = new GrafoRotasVoo();
            GrafoRotasVoo Voos  = new GrafoRotasVoo();

            Rotas.CriaGrafo("rotas.txt");
            Voos.CriaGrafo("voos.txt");

            var vOrigem  = Rotas.EncontraVerticePorNome(origem);
            var vDestino = Rotas.EncontraVerticePorNome(destino);

            vOrigem.ShouldNotBeNull();
            vOrigem.Aeroporto.ShouldBe(origem);

            vDestino.ShouldNotBeNull();
            vDestino.Aeroporto.ShouldBe(destino);

            Rotas.MelhorCaminho(origem, destino).Count.ShouldBeGreaterThan(0);
            var melhorCaminho = Rotas.MelhorCaminho(origem, destino);

            return;
        }
예제 #6
0
        public void EncontrarHorarioMaximo_Test(DateTime horarioMax, string origem, string destino)
        {
            GrafoRotasVoo Rotas = new GrafoRotasVoo();
            GrafoRotasVoo Voos  = new GrafoRotasVoo();

            Rotas.CriaGrafo("rotas.txt");
            Voos.CriaGrafo("voos.txt");

            var vOrigem  = Rotas.EncontraVerticePorNome(origem);
            var vDestino = Rotas.EncontraVerticePorNome(destino);

            vOrigem.ShouldNotBeNull();
            vOrigem.Aeroporto.ShouldBe(origem);

            vDestino.ShouldNotBeNull();
            vDestino.Aeroporto.ShouldBe(destino);

            Rotas.CalculaHoraMaxSaida(horarioMax, origem, destino).ShouldNotBeNull();
            Rotas.CalculaHoraMaxSaida(horarioMax, origem, destino).ShouldNotBe(DateTime.MinValue);
            var maxDate = Rotas.CalculaHoraMaxSaida(horarioMax, origem, destino);

            return;
        }
예제 #7
0
 public GrafoPageModel(GrafoRotasVoo grafo)
 {
     Grafo = grafo;
 }