Exemplo n.º 1
0
        static void Main(string[] args)
        {
            // Implementação de Chain Of Responsability

            // Condição para implementação: Quando temos várias regras de negócio e temos condições para
            // aplicar cada um delas

            /*
             *          A ideia do padrão é resolver problemas como esses: de acordo com o cenário,
             *          devemos realizar alguma ação. Ao invés de escrevermos código procedural,
             *          e deixarmos um único método descobrir o que deve ser feito,
             *          quebramos essas responsabilidades em várias diferentes classes,
             *          e as unimos como uma corrente.
             */
            var calculadorDescontos = new CalculadorDeDescontos();
            var orcamento           = new Orcamento(500);

            orcamento.AdicionarItem(new Item("Caneta", 500));
            orcamento.AdicionarItem(new Item("Lapis", 500));
            orcamento.AdicionarItem(new Item("Lapis", 500));
            orcamento.AdicionarItem(new Item("Lapis", 500));
            orcamento.AdicionarItem(new Item("Lapis", 500));
            orcamento.AdicionarItem(new Item("Lapis", 500));

            double desconto = calculadorDescontos.Calcular(orcamento);

            System.Console.WriteLine(desconto);
        }
Exemplo n.º 2
0
        public void Calculo_Sem_Desconto_Test()
        {
            CalculadorDeDescontos calculador = new CalculadorDeDescontos();

            Orcamento orcamento = new Orcamento(500.0);

            orcamento.AdicionaItem(new Item("CANETA", 250.0));
            orcamento.AdicionaItem(new Item("BORRACHA", 250.0));

            double desconto = calculador.Calcular(orcamento);

            Assert.AreEqual(0, desconto, "Não devem ser realizados descontos para esse orçamento.");
        }
Exemplo n.º 3
0
        public void Calculo_Desconto_Venda_Casada_Test()
        {
            CalculadorDeDescontos calculador = new CalculadorDeDescontos();

            Orcamento orcamento = new Orcamento(200.0);

            orcamento.AdicionaItem(new Item("CANETA", 100.0));
            orcamento.AdicionaItem(new Item("LAPIS", 100.0));

            double desconto = calculador.Calcular(orcamento);

            Assert.AreEqual(orcamento.Valor * 0.05, desconto, "Deve ser realizado um desconto de (5%) para esse orçamento.");
        }
Exemplo n.º 4
0
        public void Calculo_Desconto_Mais_De_Quinhentos_Reais_Test()
        {
            CalculadorDeDescontos calculador = new CalculadorDeDescontos();

            Orcamento orcamento = new Orcamento(550.0);

            orcamento.AdicionaItem(new Item("CANETA", 300.0));
            orcamento.AdicionaItem(new Item("LAPIS", 250.0));

            double desconto = calculador.Calcular(orcamento);

            Assert.AreEqual(orcamento.Valor * 0.07, desconto, "Deve ser realizado um desconto de (7%) para esse orçamento.");
        }
Exemplo n.º 5
0
        public void Calculo_Desconto_Mais_Que_Cinco_Itens_Test()
        {
            CalculadorDeDescontos calculador = new CalculadorDeDescontos();

            Orcamento orcamento = new Orcamento(300.0);

            orcamento.AdicionaItem(new Item("CANETA", 50.0));
            orcamento.AdicionaItem(new Item("LAPIS", 50.0));
            orcamento.AdicionaItem(new Item("CADERNO", 50.0));
            orcamento.AdicionaItem(new Item("BORRACHA", 50.0));
            orcamento.AdicionaItem(new Item("COLA", 50.0));
            orcamento.AdicionaItem(new Item("GIZ", 50.0));

            double desconto = calculador.Calcular(orcamento);

            Assert.AreEqual(orcamento.Valor * 0.1, desconto, "Deve ser realizado um desconto de (10%) para esse orçamento.");
        }