From 9133499633c8d550f559830c02ff52dc9fad3577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diogo=20P=C3=A1dua?= Date: Sat, 31 Aug 2019 17:32:28 -0300 Subject: [PATCH 1/3] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Respostas do desafio com especificações de funcionalidades do Whatsapp e exercício 09 do site CodeKata. --- Katacheckout.java | 41 ++++++++++++++++++++++++++ Testes.java | 61 ++++++++++++++++++++++++++++++++++++++ whatsapp.feature | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 Katacheckout.java create mode 100644 Testes.java create mode 100644 whatsapp.feature 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..6e08fd9 --- /dev/null +++ b/whatsapp.feature @@ -0,0 +1,74 @@ +#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 + + 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 + + Cenário: Bloquear um contato por tela de conversas + Dado que na tela de conversas + Quando eu clicar na conversa do contato a ser bloqeuado + E a conversa for exibida + Então eu devo selecionar o botão do menu da conversa + E clicar na opção mais + Quando selecionar a opção bloquear + E confirmar clicando em bloquear + Então eu devo receber uma mensagem de confirmação + + Cenário: Bloquear um contato por tela de contatos + Dado que na tela de contatos + Quando eu clicar no contato + Então eu devo selecionar o botão do menu da conversa + E clicar na opção "Mais" + Quando selecionar a opção bloquear + E confirmar clicando em bloquear + Então eu devo receber uma mensagem de confirmação + + Funcionalidade: Desbloqueio de contatos + Afim de desbloquear um contato bloqueado + Como um usuário do whatsapp + Desejo remover o bloqueio de um contato + Para voltar a interagir menssagem deste contato + + Cenário: Desbloquear um contato na tela de contatos + Dado que com a tela de contatos aberta + Quando eu pressionar o contato bloqueado por alguns segundos + E visualizar a opção de "Desbloquear Contato" + Então devo visualizar o contato sem o efeito de esmeacer e apto para interação + + 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 + + Funcionalidade: Mudar privacidade da foto do perfil + Afim de mudar quem visualiza a foto do perfil de usuário + Como um usuário do whatsapp + Desejo mudar quem pode visualizar minha foto do perfil + Para + + Cenário: Mudar o estado de visualização da foto do perfil do + 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 | + + + From 75daea816a24417a34893c85ce7aa6ba3dd3fcd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diogo=20P=C3=A1dua?= Date: Sat, 31 Aug 2019 17:56:05 -0300 Subject: [PATCH 2/3] Rename Katacheckout.java to KataCheckout.java --- Katacheckout.java => KataCheckout.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Katacheckout.java => KataCheckout.java (100%) diff --git a/Katacheckout.java b/KataCheckout.java similarity index 100% rename from Katacheckout.java rename to KataCheckout.java From caeead62ea01596b212df2a72772d7f32b2f2e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diogo=20P=C3=A1dua?= Date: Mon, 16 Mar 2020 21:48:01 -0300 Subject: [PATCH 3/3] Update whatsapp.feature --- whatsapp.feature | 77 ++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/whatsapp.feature b/whatsapp.feature index 6e08fd9..c0a54bb 100644 --- a/whatsapp.feature +++ b/whatsapp.feature @@ -4,43 +4,53 @@ #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 + 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 - Cenário: Bloquear um contato por tela de conversas - Dado que na tela de conversas - Quando eu clicar na conversa do contato a ser bloqeuado + 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 - Então eu devo selecionar o botão do menu da conversa - E clicar na opção mais - Quando selecionar a opção bloquear - E confirmar clicando em bloquear + 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 eu clicar no contato - Então eu devo selecionar o botão do menu da conversa - E clicar na opção "Mais" - Quando selecionar a opção bloquear - E confirmar clicando em bloquear - Então eu devo receber uma mensagem de confirmação + 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 um usuário do whatsapp + 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 por alguns segundos + Quando eu pressionar o contato bloqueado E visualizar a opção de "Desbloquear Contato" - Então devo visualizar o contato sem o efeito de esmeacer e apto para interação + 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 @@ -53,22 +63,19 @@ 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 - Funcionalidade: Mudar privacidade da foto do perfil - Afim de mudar quem visualiza a foto do perfil de usuário - Como um usuário do whatsapp - Desejo mudar quem pode visualizar minha foto do perfil - Para + @MudarPrivacidadeFotoPerfil + Funcionalidade: Altera Privacidade da foto do perfil - Cenário: Mudar o estado de visualização da foto do perfil do - 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 | + 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 |