Add licence and installation instructions.
[kaya.git] / test / games / chess / test_chess_board.rb
blobcbbee870754deb34128f4238edfe51641ce166b8
1 # Copyright (c) 2009 Paolo Capriotti <p.capriotti@gmail.com>
2
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.
8 require 'test/unit'
9 require 'games/chess/board'
10 require 'point'
11 require 'enumerator'
13 class TestChessBoard < Test::Unit::TestCase
14   def setup
15     @board = Chess::Board.new(Point.new(8, 8))
16   end
17   
18   def test_empty_board
19     assert_nil @board[Point.new(3, 4)]
20     assert_nil @board[Point.new(1, 7)]
21   end
22   
23   def test_out_of_board
24     assert_nil @board[Point.new(9, 1)]
25     assert_nil @board[Point.new(1, 10)]
26     assert_nil @board[Point.new(32, 12)]
27   end
28   
29   def test_set_then_get
30     @board[Point.new(3, 4)] = 55
31     assert_equal 55, @board[Point.new(3, 4)]
32   end
33   
34   def test_set_out_of_board
35     @board[Point.new(10, 2)] = 12
36     assert_nil @board[Point.new(10, 2)]
37   end
38   
39   def test_valid
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))
46   end
47   
48   def test_size
49     assert_equal Point.new(8, 8), @board.size
50     assert_equal Point.new(5, 23), Chess::Board.new(Point.new(5, 23)).size
51   end
52   
53   def test_each_square
54     assert_equal 64, @board.to_enum(:each_square).to_a.size
55   end
56   
57   def test_each_item
58     assert_equal [], @board.to_enum(:each_item).to_a
59     
60     @board[Point.new(4, 5)] = 74
61     @board[Point.new(4, 7)] = 21
62     @board[Point.new(3, 1)] = 78
63     
64     assert_equal [78, 74, 21], @board.to_enum(:each_item).to_a
65   end
66   
67   def test_clear
68     @board[Point.new(1, 7)] = 99
69     assert_not_nil @board[Point.new(1, 7)]
70     @board.clear
71     assert_nil @board[Point.new(1, 7)]
72   end
73   
74   def test_to_s
75     class << x = Object.new
76       def symbol
77         'x'
78       end
79     end
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
85     
86     expected = <<EOF.chomp
87 x              
88                
89                
90                
91                
92           x    
93     x x        
94   x            
95 EOF
96     
97     assert_equal expected, @board.to_s
98   end
99 end