Last active
December 30, 2015 22:09
-
-
Save gabrielrubens/7892629 to your computer and use it in GitHub Desktop.
Isolando os Testes http://grupohaw.com.br/mantendo-seus-testes-de-unidade-desacoplados-teste-isolado-isolated-test/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Iterator; | |
public class FibonacciIteratorFinal implements Iterator<FibonacciIteratorFinal> { | |
private final Integer n1; | |
private final Integer n2; | |
private final Integer result; | |
public FibonacciIteratorFinal() { | |
this.n1 = 0; | |
this.n2 = 1; | |
this.result = 0; | |
} | |
private FibonacciIteratorFinal(Integer n1, Integer n2, Integer result) { | |
this.n1 = n1; | |
this.n2 = n2; | |
this.result = result; | |
} | |
public boolean hasNext() { | |
return true; | |
} | |
public FibonacciIteratorFinal next() { | |
if(result==0) | |
return new FibonacciIteratorFinal(n1, n2, result+1); | |
else if(result==1 && n1==0) | |
return new FibonacciIteratorFinal(n1+1, n2, result); | |
return new FibonacciIteratorFinal(n2, result, result+n2); | |
} | |
@Deprecated | |
public void remove() { | |
throw new RuntimeException("Operação não permitida!"); | |
} | |
public Integer value(){ | |
return result; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertTrue; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
import org.junit.Test; | |
public class FibonacciIteratorFinalAcopladaTest { | |
@Test | |
public void deveRetonarZeroComoPrimeiroElementoEHasnextIgualATrue() { | |
FibonacciIteratorFinal fibonacci = new FibonacciIteratorFinal(); | |
assertEquals(0, fibonacci.value(), 0); | |
assertTrue(fibonacci.hasNext()); | |
} | |
@Test | |
public void deveRetonarZeroUmeUmComoPrimeirosElementos() { | |
List<Integer> esperado = Arrays.asList(0,1,1); | |
List<Integer> recebido = new ArrayList<Integer>(); | |
FibonacciIteratorFinal fibonacci = new FibonacciIteratorFinal(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
assertEquals(esperado, recebido); | |
assertTrue(fibonacci.hasNext()); | |
} | |
@Test | |
public void deveRetonarOsOitoPrimeirosElementos() { | |
List<Integer> esperado = Arrays.asList(0,1,1,2,3,5,8,13); | |
List<Integer> recebido = new ArrayList<Integer>(); | |
FibonacciIteratorFinal fibonacci = new FibonacciIteratorFinal(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
assertEquals(esperado, recebido); | |
assertTrue(fibonacci.hasNext()); | |
} | |
@Test(expected=RuntimeException.class) | |
public void deveRetornarExceptionCasoRemoveSejaChamado(){ | |
FibonacciIteratorFinal fibonacci = new FibonacciIteratorFinal(); | |
fibonacci.remove(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertTrue; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
import org.junit.Before; | |
import org.junit.Test; | |
public class FibonacciIteratorFinalTest { | |
private List<Integer> esperado; | |
private List<Integer> recebido; | |
private FibonacciIteratorFinal fibonacci; | |
@Before | |
public void setUp(){ | |
recebido = new ArrayList<Integer>(); | |
fibonacci = new FibonacciIteratorFinal(); | |
} | |
@Test | |
public void deveRetonarZeroComoPrimeiroElementoEHasnextIgualATrue() { | |
assertEquals(0, fibonacci.value(), 0); | |
assertTrue(fibonacci.hasNext()); | |
} | |
@Test | |
public void deveRetonarZeroUmeUmComoPrimeirosElementos() { | |
esperado = Arrays.asList(0,1,1); | |
recebido = retornaQuantidadeDeElementos(3); | |
/*recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value());*/ | |
assertEquals(esperado, recebido); | |
assertTrue(fibonacci.hasNext()); | |
} | |
@Test | |
public void deveRetonarOsOitoPrimeirosElementos() { | |
esperado = Arrays.asList(0,1,1,2,3,5,8,13); | |
recebido = retornaQuantidadeDeElementos(8); | |
assertEquals(esperado, recebido); | |
assertTrue(fibonacci.hasNext()); | |
} | |
@Test(expected=RuntimeException.class) | |
public void deveRetornarExceptionCasoRemoveSejaChamado(){ | |
fibonacci.remove(); | |
} | |
private List<Integer> retornaQuantidadeDeElementos(int qtd) { | |
qtd--; | |
recebido.add(fibonacci.value()); | |
for(int i=0; i < qtd; i++){ | |
fibonacci = fibonacci.next(); | |
recebido.add(fibonacci.value()); | |
} | |
return recebido; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment