Modified file naming scheme to please autotest.
[kaya/ydirson.git] / test / games / chess / test_chess_move.rb
blobb7c95f741e970098230da69190323b615bb68ccd
1 require 'test/unit'
2 require 'games/chess/move'
4 class TestChessMove < Test::Unit::TestCase
5   def test_simple_move_fields
6     move = Chess::Move.new(Point.new(4, 6), Point.new(4, 4))
7     assert_equal Point.new(4, 6), move.src
8     assert_equal Point.new(4, 4), move.dst
9     assert_nil move.promotion
10   end
11   
12   def test_promotion_move_fields
13     move = Chess::Move.new(Point.new(3, 1), Point.new(3, 0), :promotion => :knight)
14     assert_equal Point.new(3, 1), move.src
15     assert_equal Point.new(3, 0), move.dst
16     assert_equal :knight, move.promotion
17   end
18   
19   def test_delta
20     move = Chess::Move.new(Point.new(3, 6), Point.new(3, 0))
21     assert_equal Point.new(0, -6), move.delta
22   end
23   
24   def test_range
25     move = Chess::Move.new(Point.new(2, 5), Point.new(6, 1))
26     assert_equal [Point.new(2, 5), Point.new(3, 4), Point.new(4, 3), Point.new(5, 2)], move.range.to_a
27   end
28   
29   def test_range_unlimited
30     move = Chess::Move.new(Point.new(2, 5), Point.new(6, 0))
31     assert_not_nil move.range
32   end
33   
34   def test_nonvalid
35     move = Chess::Move.new(Point.new(2, 5), Point.new(5, 5))
36     assert !move.validated?
37   end
38   
39   def test_validation_ok
40     move = Chess::Move.new(Point.new(2, 5), Point.new(5, 5))
41     move.validate do
42       true
43     end
44     
45     assert move.validated?
46     assert move.valid?
47   end
48   
49   def test_validation_failed
50     move = Chess::Move.new(Point.new(2, 5), Point.new(5, 5))
51     move.validate do
52       false
53     end
54     
55     assert move.validated?
56     assert !move.valid?  
57   end
58   
59   def test_revalidation
60     move = Chess::Move.new(Point.new(2, 5), Point.new(5, 5))
61     move.validate do
62       false
63     end
64     move.validate do
65       fail
66       true
67     end
68     
69     assert move.validated?
70     assert !move.valid?  
71   end
72 end