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); }
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."); }
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."); }
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."); }
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."); }