Пример #1
0
        public void Initialize()
        {
            rotaModel = new RotaModel
            {
                CustoCombustivel = 10,
                CustoTotal = 20,
                Distancia = 30,
                TempoTotal = 40
            };

            var mockMapLinkApiFactory = new Mock<AbstractMapLinkApiFactory>("v0");
            var mockGeocodificacaoApi = new Mock<IGeocodificacaoApi>();
            var mockRoteirizacaoApi = new Mock<IRoteirizacaoApi>();

            mockGeocodificacaoApi
                .Setup(t => t.CoordendasPorEndereco(It.IsAny<EnderecoModel>()))
                .ReturnsAsync(new CoordenadasModel
                {
                    Latitude = 100,
                    Longitude = 200
                });

            mockRoteirizacaoApi
                .Setup(t => t.ObterRota(It.IsAny<List<CoordenadasModel>>(), It.IsAny<double>(), It.IsAny<string>()))
                .ReturnsAsync(rotaModel);

            mockMapLinkApiFactory.Setup(t => t.GetGeocodificacao()).Returns(mockGeocodificacaoApi.Object);
            mockMapLinkApiFactory.Setup(t => t.GetRoteirizacao()).Returns(mockRoteirizacaoApi.Object);
            mapLinkApiFactory = mockMapLinkApiFactory.Object;
        }
Пример #2
0
 private async Task<RotaModel> ObterRota(AbstractMapLinkApiFactory mapLinkFactory, List<CoordenadasModel> coordendas, double kmlitros, string veiculo)
 {
     try
     {
         var roterizacao = mapLinkFactory.GetRoteirizacao();
         return await roterizacao.ObterRota(coordendas, kmlitros, veiculo);
     }
     catch (Exception ex)
     {
         throw new Exception(string.Format("Erro ao calcular a rota '{0}'", ex.Message));
     }
 }
Пример #3
0
 private async Task<List<CoordenadasModel>> ObterCoordenadas(AbstractMapLinkApiFactory mapLinkFactory, List<EnderecoModel> enderecos)
 {
     if (enderecos == null || enderecos.Count < 2)
     {
         throw new ArgumentException("Deve-se conter pelo menos dois endereços para se calcular a rota");
     }
     var geocodificacao = mapLinkFactory.GetGeocodificacao();
     var listaCoordenadas = new List<CoordenadasModel>();
     foreach (var endereco in enderecos)
     {
         var coordenadas = await geocodificacao.CoordendasPorEndereco(endereco);
         if (coordenadas != null)
         {
             listaCoordenadas.Add(coordenadas);
         }
     }
     return listaCoordenadas;
 }
Пример #4
0
 public async Task<RotaModel> Calcular(AbstractMapLinkApiFactory mapLinkFactory, CalcularRotaModel calcularRotaModel)
 {
     var coordendas = await ObterCoordenadas(mapLinkFactory, calcularRotaModel.Enderecos);
     return await ObterRota(mapLinkFactory, coordendas, calcularRotaModel.KmLitro, calcularRotaModel.Veiculo);
 }