Created
November 29, 2011 17:20
-
-
Save sbastn/1405592 to your computer and use it in GitHub Desktop.
tic tac toe with Ruben
This file contains hidden or 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
class Board { | |
def fields = ["."] | |
def mark(token){ | |
if (fields[0] != ".") { | |
throw new RuntimeException("Already Taken!") | |
} | |
fields[0] = token | |
} | |
} | |
class Player { | |
Board board | |
def mark(token){ | |
board.mark(token) | |
} | |
} | |
class Game { | |
def fields = ["."] | |
Player p1 | |
Player p2 | |
Board board | |
def mark(token) { | |
fields[0] = token | |
} | |
def isOver() { | |
def empty_fields = fields.findAll { it == "." } | |
if (empty_fields.size() > 0) { | |
return false | |
} | |
return true | |
} | |
} | |
def when_all_fields_are_empty_then_game_is_not_over() { | |
Game game = new Game() | |
assert game.isOver() == false | |
} | |
def when_all_fields_are_taken_then_the_game_is_over() { | |
Game game = new Game() | |
game.mark("X") | |
assert game.isOver() == true | |
} | |
def when_one_field_is_taken_then_other_player_cannot_mark_the_field_again() { | |
Board board = new Board() | |
Player p1 = new Player([board: board]) | |
Player p2 = new Player([board: board]) | |
Game game = new Game([board: board, p1: p1, p2: p2]) | |
p1.mark("X") | |
try { | |
p2.mark("O") | |
assert true == false | |
} catch (RuntimeException ex) { | |
assert ex.getMessage() == "Already Taken!" | |
} | |
} | |
when_all_fields_are_taken_then_the_game_is_over() | |
when_all_fields_are_empty_then_game_is_not_over() | |
when_one_field_is_taken_then_other_player_cannot_mark_the_field_again() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment