[MUSICA] [MUSICA] Estamos aqui com a última parte do nosso hands on de TDD, onde a gente está desenvolvendo tradutor. A gente fez aqui uma lista de requisitos só que a gente percebeu que tinha requisito a mais, que tinha cenário a mais que a gente não estava considerando, que era a tradução da frase com as duas traduções para a mesma palavra. Então, eu adicionei aqui mais item na nossa lista, isso é bem comum quando a gente está fazendo TDD. A gente vislumbra ali uma série de cenários e à medida que a gente vai desenvolvendo, a gente vai percebendo que existem cenários que talvez são importantes e não estão incluidos naquela lista inicial, e aí a gente vai acrescentando, a gente pode até escolher botar ele no final da lista, querer fazer ele agora ou deixar ele para fazer depois. No nosso caso aqui a gente já tinha terminado o que a gente tinha previsto, adicionamos ali novo requisito, então vamos fazer ele. Para isso precisamos do nosso chapéu vermelho, certo? Para podermos fazer os testes. Então, o que eu vou fazer aqui, vai ser colocar novo teste onde eu vou colocar aqui, traduzirFraseCom DuasTraducoesMesmaPalavra. [SEM_ÁUDIO] Então eu vou me inspirar aqui, eu vou colocar aqui, peace [SEM_ÁUDIO] [SEM_ÁUDIO] é paz, é, e ai eu copiar aqui essas traduções aqui, ele vai colocar aqui bom como good e como nice. Então a gente vai traduzir aqui, paz é bom e aí ele vai ter que traduzir, no caso eu vou considerar que ele sempre vai usar a primeria tradução, que é o peace. Não é assim não, [RISOS] is good, [SEM_ÁUDIO] certo? Então vamos lá, repara meu inglês não, que eu não sou professor de inglês, [RISOS] então roda aqui. Então ele falhou, vamos ver no que é que ele falhou aqui. Então, ele está botando good vírgula nice, que é o que ele retorna ali na tradução, certo? Então o que é que a gente vai fazer aqui? Deixa eu pensar. Bom, eu poderia ir para aquela solução de fazer aquele mapa de lista, mas eu acho que não é necessário, eu acho que eu consigo pegar ali a string e até a vírgula, né, então, o que é que eu vou fazer aqui, eu vou pegar aqui a minha tradução e vou fazer aqui igual a traducao ponto substring e ele vai de 0 até o traducao, ponto, o lugar que tem o ponto e vírgula que é o indexOf. O ponto e vírgula não, a vírgula. Então ele vai ali até a vírgula, ficou a mais aqui, será que vai dar certo? Não sei, vamos rodar o teste e ver se funciona. Torce, torce! Deu errado, vamos ver o que deu errado. O traduzir frase aqui já deu errado aqui, já deu StringindexOutOfBoundsException. Opa! O que é que está acontecendo aqui? E esse daqui o que é que foi que deu errado aqui? Ele está dando errado nos outros, eu vou fazer isso aqui, então, eu vou fazer aqui isso só se a traducao, ela tem uma vírgula não é? traducao contains a vírgula, então se a traducao tem uma vírgula eu vou fazer isso aqui. Será que vai dar certo agora? Vamos rodar para ver. Ainda bem que a gente tem o teste não é? A gente roda aqui e aí? Agora passou, tudo funcionou! Beleza, conseguimos cumprir aqui. Ai meu Deus do céu, eu estava com chapéu errado, finge que eu estava com o verde. Eu vou vir aqui, e vou dar o ok aqui, para traduzir a frase. Então, mas calma, calma que eu ainda tenho meu chapéu azul de refatoração, eu não gostei disso daqui ficar dentro desse método de traduzir frases. Então eu vou vir aqui, vou dar Extract Method, eu vou chamar esse método de primeiraTraducao. Então, ele pega ali a primeira tradução da palavra, será que ele continua funcionando? Acho que assim ficou mais claro, né? Então, ele roda aqui, depois se eu alterar como eu guardo as palavras, ele vai continuar, é só eu alterar esse método aqui sem ter que mudar por exemplo, a tradução da frase inteira. Então, continuou funcionando. A princípio esse método está privado, de repente até faria sentido eu querer deixar esse método da primeiraTradução como método público para outras pessoas usarem, mas como eu não tenho esse requisito, a princípio ele vai ficar como método privado mesmo, está certo? Então é isso, esse foi o nosso hands on do TDD, que a gente fez aqui a implementação aqui de tradutor, que traduz quase com muitas traduções e etc. Vimos aqui o nosso chapéu de TDD, o vermelho quando a gente está criando teste, o verde quando a gente está implementando e o azul quando a gente está refatorando. Dei uma escorregada no final, onde eu esqueci de botar o verde aqui na hora de implementar, mas espero que vocês tenham entendido esses diferentes momentos do TDD na prática, certo? Muito obrigado! Continuem assistindo o nosso curso. [MÚSICA]