public void Ejecutar_EnviarFechaEntregaIgualAFechaHoy_MinutosRestantes()
        {
            //Arrange
            string     cResultado = "";
            Expresion5 expresion5 = new Expresion5();
            lEnvios    barco      = new Maritimo()
            {
                dVelocidadEntrega = 46, dCostoEnvio = 1
            };
            lEmpresas fedex = new Estafeta(new List <lEnvios>()
            {
                barco
            }, 50, "Fedex");
            DateTime dtHoy     = Convert.ToDateTime("27-01-2020 12:00:00");
            DateTime dtEntrega = Convert.ToDateTime("27-01-2020 12:00:00");

            State.State entPedido = new State.State(new DesactivarState(), "México", "USA", 2000, fedex, barco, dtHoy);
            //Act
            cResultado = expresion5.Ejecutar(dtEntrega, dtHoy, entPedido);

            //Assert
            Assert.AreEqual("0 Minutos", cResultado);
        }
Beispiel #2
0
        public void PedidoEntregado_EnviarStateActivado_EntPedidoAcrualizado()
        {
            //Arrange
            ActivarState    activarState     = new ActivarState();
            DesactivarState DesactivarPedido = new DesactivarState();
            lEnvios         barco            = new Maritimo()
            {
                dVelocidadEntrega = 46, dCostoEnvio = 1
            };
            lEmpresas fedex = new Estafeta(new List <lEnvios>()
            {
                barco
            }, 50, "Fedex");
            DateTime dtHoy     = Convert.ToDateTime("27-01-2020 12:00:00");
            DateTime dtEntrega = Convert.ToDateTime("28-01-2020 12:00:00");
            State    entPedido = new State(DesactivarPedido, "México", "USA", 5000, fedex, barco, dtHoy);

            activarState.setContext(entPedido);
            //Act
            activarState.PedidoEntregado();
            //Assert
            Assert.IsTrue(entPedido.state != activarState);
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            IPaqueteria svrPaqueteriaFedex    = new Fedex();
            IPaqueteria svrPaqueteriaDHL      = new DHL();
            IPaqueteria svrPaqueteriaEstafeta = new Estafeta();

            TransportadorBridge svrTransportador = new TransportadorBarco(svrPaqueteriaFedex);

            Console.WriteLine("Paqueteria Fedex");
            svrTransportador.Procesar();

            Console.WriteLine("Paqueteria DHL");
            svrTransportador = new TransportadorAvion(svrPaqueteriaDHL);
            svrTransportador.Procesar();
            svrTransportador = new TransportadorBarco(svrPaqueteriaDHL);
            svrTransportador.Procesar();

            Console.WriteLine("Paqueteria Estafeta");
            svrTransportador = new TransportadorTren(svrPaqueteriaEstafeta);
            svrTransportador.Procesar();

            Console.Write("Presiona cualquier tecla para salir del programa oks...");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            //setup our DI
            var serviceProvider = new ServiceCollection()
                                  .AddScoped(typeof(IClockReader), typeof(Clock))
                                  .AddScoped(typeof(IEnviosRepository), typeof(EnviosRepository))
                                  .AddScoped <IPackageRepository, EnvioPackageRepositoryAdapter>(x => {
                EnvioPackageRepositoryAdapter envioPackageRepositoryAdapter =
                    new EnvioPackageRepositoryAdapter(x.GetRequiredService <IEnviosRepository>());
                envioPackageRepositoryAdapter.AddFactory(new EstafetaEnviosFactory(new Estafeta()));
                envioPackageRepositoryAdapter.AddFactory(new FedexEnviosFactory(new Fedex()));
                envioPackageRepositoryAdapter.AddFactory(new DhlEnviosFactory(new Dhl()));
                return(envioPackageRepositoryAdapter);
            })
                                  .AddScoped(typeof(IRangoDeTiempoProvider), typeof(RangoDeTiempoProvider))
                                  .AddScoped(typeof(ITimeChecker), typeof(TimeChecker))
                                  .AddScoped(typeof(ICalculadorTiempoTraslado), typeof(CalculadorTiempoTraslado))
                                  .AddScoped(typeof(ICalculadorDeFechaDeEntrega), typeof(DefaultCalculadorFechaEntrega))
                                  .AddScoped(typeof(ICalculadorCostoEnvio), typeof(CalculadorCostoEnvio))
                                  .AddScoped(typeof(IDeliveryManager), typeof(DeliveryManager))
                                  .AddScoped(typeof(IDeliveryMessagePrinter), typeof(DeliveryMessagePrinter))
                                  .AddScoped(typeof(IReporteadorDePedidos), typeof(ReporteadorDePedidos))
                                  .BuildServiceProvider();
            IReporteadorDePedidos  reporteadorDePedidos  = serviceProvider.GetRequiredService <IReporteadorDePedidos>();
            IRangoDeTiempoProvider rangoDeTiempoProvider = serviceProvider.GetRequiredService <IRangoDeTiempoProvider>();
            ICalculadorCostoEnvio  calculadorCostoEnvio  = serviceProvider.GetRequiredService <ICalculadorCostoEnvio>();

            //Empresas
            Estafeta estafeta = new Estafeta();
            Fedex    fedex    = new Fedex();
            Dhl      dhl      = new Dhl();



            reporteadorDePedidos.AddEmpresa(estafeta);
            reporteadorDePedidos.AddEmpresa(fedex);
            reporteadorDePedidos.AddEmpresa(dhl);
            reporteadorDePedidos.AddStrategy(
                PackageStatus.entregado,
                new EntregadoStrategy(rangoDeTiempoProvider, calculadorCostoEnvio));
            reporteadorDePedidos.AddStrategy(
                PackageStatus.enCamino,
                new PorEntregarStrategy(rangoDeTiempoProvider, calculadorCostoEnvio));
            reporteadorDePedidos.AddStrategy(PackageStatus.unknown, new UnsupportedMetodoEnvioStrategy());
            reporteadorDePedidos.AddStrategy(PackageStatus.unsupported, new EmpresaDesconocidaStrategy());

            RecomendacionReporteadorPedidosDecorator recomendacionReporteadorPedidosDecorator =
                new RecomendacionReporteadorPedidosDecorator(reporteadorDePedidos, serviceProvider.GetRequiredService <IPackageRepository>(), serviceProvider.GetRequiredService <ICalculadorCostoEnvio>());

            recomendacionReporteadorPedidosDecorator.AddEmpresa(estafeta);
            recomendacionReporteadorPedidosDecorator.AddEmpresa(fedex);
            recomendacionReporteadorPedidosDecorator.AddEmpresa(dhl);
            recomendacionReporteadorPedidosDecorator.AddStrategy(
                PackageStatus.entregado,
                new EntregadoStrategy(rangoDeTiempoProvider, calculadorCostoEnvio));
            recomendacionReporteadorPedidosDecorator.AddStrategy(
                PackageStatus.enCamino,
                new PorEntregarStrategy(rangoDeTiempoProvider, calculadorCostoEnvio));
            recomendacionReporteadorPedidosDecorator.AddStrategy(PackageStatus.unknown, new UnsupportedMetodoEnvioStrategy());
            recomendacionReporteadorPedidosDecorator.AddStrategy(PackageStatus.unsupported, new EmpresaDesconocidaStrategy());

            recomendacionReporteadorPedidosDecorator.ReportAll();
        }
 public EstafetaEnviosFactory(Estafeta estafeta)
 {
     DeliveryCompany = estafeta;
 }
Beispiel #6
0
        public void OnSetup()
        {
            Estafeta estafeta = new Estafeta();

            _estafetaEnviosFactory = new EstafetaEnviosFactory(estafeta);
        }