aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorTeddy Wing2015-04-15 00:42:39 -0400
committerTeddy Wing2015-04-15 00:42:39 -0400
commitfd9fe844f83827d4925816ead961ab723d213ec1 (patch)
treed9a5ffd0c65558618120631c7566b352eb0a1910 /spec
parentda8707f50f40b325df86efaa26f821142c89662c (diff)
downloadtic-tac-toe-fd9fe844f83827d4925816ead961ab723d213ec1.tar.bz2
Board: Determine winner in `#winner?`
Diffstat (limited to 'spec')
-rw-r--r--spec/board_spec.rb84
1 files changed, 84 insertions, 0 deletions
diff --git a/spec/board_spec.rb b/spec/board_spec.rb
index 09f50e1..70caa81 100644
--- a/spec/board_spec.rb
+++ b/spec/board_spec.rb
@@ -59,5 +59,89 @@ EOF
end
describe '#winner?' do
+ before do
+ @board = Board.new
+ end
+
+ it 'must be nil when no player has won' do
+ @board.winner?.must_be_nil
+ end
+
+ it 'must be the winning player' do
+ end
+
+ it 'counts horizontal matches as wins' do
+ @board.instance_variable_set(:@board, [
+ ['X', 'X', 'X'],
+ ['X', 'O', 'O'],
+ ['O', 'X', 'O'],
+ ])
+ @board.winner?.must_equal 'X'
+
+ @board.instance_variable_set(:@board, [
+ ['X', 'O', 'X'],
+ ['O', 'O', 'O'],
+ ['O', 'X', 'X'],
+ ])
+ @board.winner?.must_equal 'O'
+
+ @board.instance_variable_set(:@board, [
+ ['O', 'X', 'X'],
+ ['X', 'O', 'X'],
+ ['O', 'O', 'O'],
+ ])
+ @board.winner?.must_equal 'O'
+ end
+
+ it 'counts vertical matches as wins' do
+ @board.instance_variable_set(:@board, [
+ ['X', 'O', 'X'],
+ ['X', 'O', 'O'],
+ ['X', 'X', 'O'],
+ ])
+ @board.winner?.must_equal 'X'
+
+ @board.instance_variable_set(:@board, [
+ ['X', 'O', 'X'],
+ ['X', 'O', 'O'],
+ ['O', 'O', 'X'],
+ ])
+ @board.winner?.must_equal 'O'
+
+ @board.instance_variable_set(:@board, [
+ ['O', 'X', 'X'],
+ ['X', 'O', 'X'],
+ ['O', 'O', 'X'],
+ ])
+ @board.winner?.must_equal 'X'
+ end
+
+ it 'counts diagonal matches as wins' do
+ @board.instance_variable_set(:@board, [
+ ['O', 'X', 'X'],
+ ['X', 'O', 'O'],
+ ['O', 'X', 'O'],
+ ])
+ @board.winner?.must_equal 'O'
+
+ @board.instance_variable_set(:@board, [
+ ['X', 'O', 'X'],
+ ['O', 'X', 'O'],
+ ['O', 'X', 'X'],
+ ])
+ @board.winner?.must_equal 'X'
+ end
+ end
+
+ describe '#array_items_equal' do
+ it 'is true when all elements in the array are equal' do
+ Board.new.send(:array_items_equal,
+ ['X', 'X', 'X', 'X', 'X', 'X', 'X']).must_equal true
+ end
+
+ it 'is false when any element is not equal to the rest' do
+ Board.new.send(:array_items_equal,
+ ['X', 'O', 'X', 'X', 'X', 'X', 'X']).must_equal false
+ end
end
end