adamatti
3/31/2017 - 12:34 PM

Dojo do RSJUG - 30/04/2017

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
  }
}