[Pawnzilla-svn] SF.net SVN: pawnzilla: [334] trunk/engine
Status: Pre-Alpha
Brought to you by:
nwsmith
From: <nw...@us...> - 2008-06-16 03:33:12
|
Revision: 334 http://pawnzilla.svn.sourceforge.net/pawnzilla/?rev=334&view=rev Author: nwsmith Date: 2008-06-15 20:33:20 -0700 (Sun, 15 Jun 2008) Log Message: ----------- - adding can_promote? method Modified Paths: -------------- trunk/engine/src/rules_engine.rb trunk/engine/test/tc_rules_engine.rb Modified: trunk/engine/src/rules_engine.rb =================================================================== --- trunk/engine/src/rules_engine.rb 2008-06-16 03:16:57 UTC (rev 333) +++ trunk/engine/src/rules_engine.rb 2008-06-16 03:33:20 UTC (rev 334) @@ -576,6 +576,19 @@ new_piece = Chess::Piece.new(old_piece.colour, new_piece_name) place_piece(coord, new_piece) end + + def can_promote?(colour) + y = colour.white? ? 7 : 0 + + 0.upto(7) do |x| + piece = sq_at(Coord.new(x, y)).piece + if (!piece.nil? && piece.pawn? && piece.colour == colour) + return true + end + end + + false + end #---------------------------------------------------------------------------- # End piece helpers #---------------------------------------------------------------------------- Modified: trunk/engine/test/tc_rules_engine.rb =================================================================== --- trunk/engine/test/tc_rules_engine.rb 2008-06-16 03:16:57 UTC (rev 333) +++ trunk/engine/test/tc_rules_engine.rb 2008-06-16 03:33:20 UTC (rev 334) @@ -824,6 +824,119 @@ assert(new_piece.queen?) end + def test_can_promote_should_return_false_when_nothing_to_promote + e = RulesEngine.new + place_pieces(e, " + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - p - - - - + - - - - - - - - + ") + assert(!e.can_promote?(Colour::WHITE)) + assert(!e.can_promote?(Colour::BLACK)) + end + + def test_can_promote_should_return_true_for_promotable_white_pawn + e = RulesEngine.new + place_pieces(e, " + - - - p - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + ") + assert(e.can_promote?(Colour::WHITE)) + assert(!e.can_promote?(Colour::BLACK)) + end + + def test_can_promote_should_return_true_for_promotable_black_pawn + e = RulesEngine.new + place_pieces(e, " + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - P - - - - + ") + assert(!e.can_promote?(Colour::WHITE)) + assert(e.can_promote?(Colour::BLACK)) + end + + def test_can_promote_should_return_false_for_non_promotable_white_pawn + e = RulesEngine.new + place_pieces(e, " + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - p - - - - + ") + assert(!e.can_promote?(Colour::WHITE)) + assert(!e.can_promote?(Colour::BLACK)) + end + + def test_can_promote_should_return_false_for_non_promotable_black_pawn + e = RulesEngine.new + place_pieces(e, " + - - - P - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + ") + assert(!e.can_promote?(Colour::WHITE)) + assert(!e.can_promote?(Colour::BLACK)) + end + + def test_can_promote_should_return_false_for_non_promotable_white_piece + e = RulesEngine.new + place_pieces(e, " + - - - q - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + ") + assert(!e.can_promote?(Colour::WHITE)) + assert(!e.can_promote?(Colour::BLACK)) + end + + def test_can_promote_should_return_false_for_non_promotable_black_piece + e = RulesEngine.new + place_pieces(e, " + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - Q - - - - + ") + assert(!e.can_promote?(Colour::WHITE)) + assert(!e.can_promote?(Colour::BLACK)) + + end + #---------------------------------------------------------------------------- # End piece helper tests #---------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |