diff --git a/KataCheckout.java b/KataCheckout.java new file mode 100644 index 0000000..8d275f2 --- /dev/null +++ b/KataCheckout.java @@ -0,0 +1,41 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class Katacheckout { + + Map rules = new HashMap(); + { + rules.put("A", 50); rules.put("B", 30); + rules.put("C", 20); rules.put("D", 15); + } + int totalCompras; + int valor; + + public void scan(String itens) { + + int valor = rules.get(itens); + totalCompras += valor; + ArrayList itensRepetidos = new ArrayList(); + + itensRepetidos.add(itens); + int i = Collections.frequency(itensRepetidos, itens); + + if (itens.contains("AAA")) { + totalCompras -=20; + } + + if (itens.contains("BB")) { + totalCompras -= 15; + } + } + public int totalCompras() { + return totalCompras; + + } + public void zeraValores() { + valor = 0; + totalCompras = 0; + } +} diff --git a/Testes.java b/Testes.java new file mode 100644 index 0000000..d56e1d0 --- /dev/null +++ b/Testes.java @@ -0,0 +1,61 @@ +import static org.junit.Assert.*; +import org.junit.Test; + +public class Testes { + + private void assertEquals(int i, int price) { + // TODO Auto-generated method stub + + } + @Test + public void test_incremental() { + + Katacheckout desc = new Katacheckout(); + + desc.scan("A"); + assertEquals(50, desc.totalCompras()); + desc.scan("B"); + assertEquals(80, desc.totalCompras()); + desc.scan("A"); + assertEquals(130, desc.totalCompras()); + desc.scan("A"); + assertEquals(160, desc.totalCompras()); + desc.scan("B"); + assertEquals(175, desc.totalCompras()); + + } + + @Test + public void test_totals() { + + assertEquals(0, price("")); + assertEquals(50, price("A")); + assertEquals(80, price("AB")); + assertEquals(115, price("CDBA")); + + assertEquals(100, price("AA")); + assertEquals(130, price("AAA")); + assertEquals(180, price("AAAA")); + assertEquals(230, price("AAAAA")); + assertEquals(260, price("AAAAAA")); + + assertEquals(160, price("AAAB")); + assertEquals(175, price("AAABB")); + assertEquals(190, price("AAABBD")); + assertEquals(190, price("DABABA")); + + } + + public static int price(String itens) { + + Katacheckout desc = new Katacheckout(); + desc.zeraValores(); + + for (int i = 0; i < itens.length(); i++) { + String item = Character.toString(itens.charAt(i)); + desc.scan(item); + } + return desc.totalCompras(); + + } +} diff --git a/whatsapp.feature b/whatsapp.feature new file mode 100644 index 0000000..c0a54bb --- /dev/null +++ b/whatsapp.feature @@ -0,0 +1,81 @@ +#language: pt + +#Especificação de duas funcionalidades do Whatsapp (não importa se o app é Android, iOS, +#Windows Phone ou versão Web) em Gherkin ou Gauge +#Cada especificação deve conter ao menos um cenário de teste + + #Especificação da primeira funcionalidade considerando o app para dispositivos android + @Bloqueio @BloquearUsuario @Smoke + Funcionalidade: Bloqueio de contatos + A fim de realizar o bloqueio de um contato + Como um usuario do whatsapp + Desejo bloquear um outro contato + Para não interagir com o mesmo + + Cenario de Fundo: Abrir aplicativo + Dado que eu tenha um usuário válido + Então na tela devo abrir o aplicativo whatsapp + + #declaracao de cenario na forma imperativa + @BloqueioTelaConversas + Cenário: Bloquear um contato por tela de conversas + Dado que na tela de conversas + Quando eu clicar na conversa do contato a ser bloqueado + E a conversa for exibida + E seleciono o botão do menu da conversa + Quando clicar na opção mais + E seleciono a opção bloquear + E confirmo clicando em "bloquear" + Então eu devo receber uma mensagem de confirmação + + #declaracao de cenario na forma declarativa + @BloqueioTelaContatos + Cenário: Bloquear um contato por tela de contatos + Dado que na tela de contatos + Quando seleciono o contato desejado + E bloqueio o mesmo + Entao recebo a mensagem de confirmacao + + @Desbloqueio @DesbloquearContato @Smoke + Funcionalidade: Desbloqueio de contatos + Afim de desbloquear um contato bloqueado + Como usuário do whatsapp + Desejo remover o bloqueio de um contato + Para voltar a interagir menssagem deste contato + + @DesbloquearContato + Cenário: Desbloquear um contato na tela de contatos + Dado que com a tela de contatos aberta + Quando eu pressionar o contato bloqueado + E visualizar a opção de "Desbloquear Contato" + Então devo visualizar o contato desbloquado + + @DesbloquerContatosLista + Cenário: Desbloquear um contato na lista de contatos bloqueados + Dado que na tela de conversas + Quando clicar do menu do whatsapp + E selecionar a opção "Configurações" + Então a tela de configurações deve ser exibida + E devo selecionar a opção "Privacidade" + Então seleciono a opção "Contatos bloqueados" + E devo visualizar a lista de contatos bloquados + Então pressiono o contato por alguns segundos + E devo visualizar e selecionar a opção "Desbloquear contato" + Então eu não devo ver mais o contato na minha lista de contatos bloquados + + @MudarPrivacidadeFotoPerfil + Funcionalidade: Altera Privacidade da foto do perfil + + Esquema do Cenário: Mudar o estado de visualização da foto do perfil + Dado que na tela de Privacidade + Quando clicar na opção Foto do Perfil + E selecionar o radiobutton "" + Então a foto do perfil será "" + Exemplos: + | opcao | estado | + | Todos | Qualquer usuario visualiza | + | Meus contatos | Apenas contatos salvos | + | Ninguem | Nenhum outro usuario | + + +