Skip to content

Instantly share code, notes, and snippets.

@rodrigovilar
Created June 10, 2014 14:28
Show Gist options
  • Save rodrigovilar/a902bf6ef15f9335575c to your computer and use it in GitHub Desktop.
Save rodrigovilar/a902bf6ef15f9335575c to your computer and use it in GitHub Desktop.
Aula de TDD - Parte 3
package com.jogodavelha;
public class ExcecaoJogoDaVelha extends RuntimeException {
public ExcecaoJogoDaVelha(String msg) {
super(msg);
}
}
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;
}
}
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