Created
June 10, 2014 14:28
-
-
Save rodrigovilar/a902bf6ef15f9335575c to your computer and use it in GitHub Desktop.
Aula de TDD - Parte 3
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
package com.jogodavelha; | |
public class ExcecaoJogoDaVelha extends RuntimeException { | |
public ExcecaoJogoDaVelha(String msg) { | |
super(msg); | |
} | |
} |
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
package com.jogodavelha; | |
public class Jogo { | |
private Boolean[][] tabuleiro = new Boolean[3][3]; | |
private Boolean marcaPrimeiroJogadorX; | |
private boolean jogoComecou = false; | |
public boolean acabou() { | |
return false; | |
} | |
public void setMarcaPrimeiroJogadorX(boolean marcaPrimeiroJogadorX) { | |
if (jogoComecou) { | |
throw new ExcecaoJogoDaVelha("Nao pode trocar marcar apos inicio do jogo"); | |
} | |
this.marcaPrimeiroJogadorX = marcaPrimeiroJogadorX; | |
} | |
public boolean isMarcaPrimeiroJogadorX() { | |
return marcaPrimeiroJogadorX; | |
} | |
public void desenharMarca(int linha, int coluna) { | |
verificarLimites(linha, coluna); | |
if (tabuleiro[linha][coluna] != null) { | |
throw new ExcecaoJogoDaVelha("Celula ocupada"); | |
} | |
if (marcaPrimeiroJogadorX == null) { | |
throw new ExcecaoJogoDaVelha("Primeiro jogador nao definido"); | |
} | |
tabuleiro[linha][coluna] = marcaPrimeiroJogadorX; | |
jogoComecou = true; | |
} | |
private void verificarLimites(int linha, int coluna) { | |
if (linha > 2 || linha < 0) { | |
throw new ExcecaoJogoDaVelha("Linha errada"); | |
} | |
if (coluna > 2 || coluna < 0) { | |
throw new ExcecaoJogoDaVelha("Coluna errada"); | |
} | |
} | |
public boolean isMarcaXNaPosicao(int linha, int coluna) { | |
verificarLimites(linha, coluna); | |
if (tabuleiro[linha][coluna] == null) { | |
throw new ExcecaoJogoDaVelha("Celula vazia"); | |
} | |
return true; | |
} | |
} |
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
package com.jogodavelha; | |
import org.junit.Assert; | |
import org.junit.Before; | |
import org.junit.Test; | |
public class JogoTest { | |
private Jogo jogo; | |
@Before | |
public void inicializa() { | |
jogo = new Jogo(); | |
} | |
@Test | |
public void criarJogo() { | |
Assert.assertFalse("O jogo iniciou finalizado", jogo.acabou()); | |
} | |
@Test | |
public void definirJogador() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
Assert.assertTrue(jogo.isMarcaPrimeiroJogadorX()); | |
} | |
@Test | |
public void definirJogadorDeNovo() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
jogo.setMarcaPrimeiroJogadorX(false); | |
Assert.assertFalse(jogo.isMarcaPrimeiroJogadorX()); | |
} | |
@Test | |
public void jogadaInicial() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
jogo.desenharMarca(2, 1); | |
Assert.assertTrue(jogo.isMarcaXNaPosicao(2, 1)); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void desenharMarcaEmUmaCelulaOcupada() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
jogo.desenharMarca(0, 1); | |
jogo.desenharMarca(0, 1); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void linhaErrada() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
jogo.desenharMarca(3, 2); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void colunaErrada() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
jogo.desenharMarca(2, -1); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void lerCelulaDesocupada() { | |
jogo.isMarcaXNaPosicao(2, 1); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void lerMarcaDeUmaColunaErrada() { | |
jogo.isMarcaXNaPosicao(1, 3); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void lerMarcaDeUmaLinhaErrada() { | |
jogo.isMarcaXNaPosicao(-1, 1); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void definirPrimeiroJogadorAposInicioDoJogo() { | |
jogo.setMarcaPrimeiroJogadorX(true); | |
jogo.desenharMarca(2, 1); | |
jogo.setMarcaPrimeiroJogadorX(false); | |
} | |
@Test(expected = ExcecaoJogoDaVelha.class) | |
public void desenharMarcaAntesDeDefinirPrimeiroJogador() { | |
jogo.desenharMarca(2, 1); | |
} | |
// #X# | |
// ### | |
// ### | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment