Dojo do RSJUG - 30/04/2017
import spock.lang.Specification
import spock.lang.Unroll
class JokenpoTest extends Specification{
def "tesoura ganha do papel"()
{
given:
def jogador1 = "tesoura"
def jogador2 = "papel"
def jokenpo = new Jokenpo()
when:
def resultado = jokenpo.banzai(jogador1,jogador2)
then:
resultado == "tesoura"
}
def "papel perde da tesoura"()
{
given:
def jogador1 = "papel"
def jogador2 = "tesoura"
def jokenpo = new Jokenpo()
when:
def resultado = jokenpo.banzai(jogador1,jogador2)
then:
"tesoura" == resultado
}
def "pedra perde do papel"()
{
given:
def jogador1 = "pedra"
def jogador2 = "papel"
def jokenpo = new Jokenpo()
when:
def resultado = jokenpo.banzai(jogador1,jogador2)
then:
"papel" == resultado
}
def "pedra ganha de tesoura"()
{
given:
def jogador1 = "pedra"
def jogador2 = "tesoura"
def jokenpo = new Jokenpo()
when:
def resultado = jokenpo.banzai(jogador1,jogador2)
then:
"pedra" == resultado
}
def "pedra empata com pedra"()
{
given:
def jogador1 = "pedra"
def jogador2 = "pedra"
def jokenpo = new Jokenpo()
when:
def resultado = jokenpo.banzai(jogador1,jogador2)
then:
"empate" == resultado
}
@Unroll
def "tabela (#jogador1 : #jogador2 = #esperado)"()
{
given:
def jokenpo = new Jokenpo()
when:
def resultado = jokenpo.banzai(jogador1,jogador2)
then:
resultado == esperado
where:
jogador1 | jogador2 | esperado
"pedra" | "pedra" | "empate"
"papel" | "papel" | "empate"
"tesoura"|"tesoura" | "empate"
"pedra" | "papel" | "papel"
"papel" | "pedra" | "papel"
"pedra" | "tesoura"| "pedra"
"tesoura"| "pedra" | "pedra"
}
}
class Jokenpo{
def banzai(j1, j2)
{
if (j1 == j2) return "empate"
[
pedra: "tesoura",
papel: "pedra",
tesoura :"papel"
].find { k, v ->
[j1, j2].contains(k) && [j1, j2].contains(v)
}.key
}
}