1 # Copyright (c) 2009 Paolo Capriotti <p.capriotti@gmail.com>
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
9 require 'games/chess/board'
13 class TestChessBoard < Test::Unit::TestCase
15 @board = Chess::Board.new(Point.new(8, 8))
19 assert_nil @board[Point.new(3, 4)]
20 assert_nil @board[Point.new(1, 7)]
24 assert_nil @board[Point.new(9, 1)]
25 assert_nil @board[Point.new(1, 10)]
26 assert_nil @board[Point.new(32, 12)]
30 @board[Point.new(3, 4)] = 55
31 assert_equal 55, @board[Point.new(3, 4)]
34 def test_set_out_of_board
35 @board[Point.new(10, 2)] = 12
36 assert_nil @board[Point.new(10, 2)]
40 assert @board.valid?(Point.new(4, 5))
41 assert !@board.valid?(Point.new(8, 2))
42 assert !@board.valid?(Point.new(2, 8))
43 assert !@board.valid?(Point.new(8, 8))
44 assert !@board.valid?(Point.new(10, 3))
45 assert @board.valid?(Point.new(7, 7))
49 assert_equal Point.new(8, 8), @board.size
50 assert_equal Point.new(5, 23), Chess::Board.new(Point.new(5, 23)).size
54 assert_equal 64, @board.to_enum(:each_square).to_a.size
58 assert_equal [], @board.to_enum(:each_item).to_a
60 @board[Point.new(4, 5)] = 74
61 @board[Point.new(4, 7)] = 21
62 @board[Point.new(3, 1)] = 78
64 assert_equal [78, 74, 21], @board.to_enum(:each_item).to_a
68 @board[Point.new(1, 7)] = 99
69 assert_not_nil @board[Point.new(1, 7)]
71 assert_nil @board[Point.new(1, 7)]
75 class << x = Object.new
80 @board[Point.new(1, 7)] = x
81 @board[Point.new(2, 6)] = x
82 @board[Point.new(3, 6)] = x
83 @board[Point.new(5, 5)] = x
84 @board[Point.new(0, 0)] = x
86 expected = <<EOF.chomp
97 assert_equal expected, @board.to_s