added more tests for chess moves; they all pass
[naja.git] / naja / tests / test_actions.py
index 3497ee49c6a47d7971e5e67f3b1ca03ebbf1be42..f590caa9e576adf99e6cb1ab9dbebd3dda15e498 100644 (file)
@@ -1,6 +1,6 @@
 from unittest import TestCase
 
 from unittest import TestCase
 
-from naja.constants import BITS
+from naja.constants import BITS, MOVES
 from naja.gameboard import GameBoard, LocationCard
 from naja.player import Player
 from naja import actions
 from naja.gameboard import GameBoard, LocationCard
 from naja.player import Player
 from naja import actions
@@ -50,9 +50,32 @@ class TestActions(TestCase):
         check_available(set([BITS.MSB]), [], False)
         check_available(set([BITS.MSB]), [BITS.MSB], True)
 
         check_available(set([BITS.MSB]), [], False)
         check_available(set([BITS.MSB]), [BITS.MSB], True)
 
-    def test_bits_translation(self):
-        action = actions.LocationAction(set([BITS.NORTH, 'MSB']))
-        self.assertEqual(action.required_bits, set([BITS.NORTH, BITS.MSB]))
+    def test_get_text(self):
+        class LocationAction1(actions.LocationAction):
+            TEXT = "foo"
+        action1 = LocationAction1([])
+        self.assertEqual(action1.get_text(), "foo")
+
+        class LocationAction2(actions.LocationAction):
+            TEXT = "foo %(bar)s"
+        action2 = LocationAction2([], bar="baz")
+        self.assertEqual(action2.get_text(), "foo baz")
+
+    def test_get_text_row_column(self):
+        class DirectionAction(actions.LocationAction):
+            TEXT = "foo %(direction)s %(rowcol)s"
+
+        action_north = DirectionAction([], direction='NORTH')
+        self.assertEqual(action_north.get_text(), "foo NORTH column")
+
+        action_south = DirectionAction([], direction='SOUTH')
+        self.assertEqual(action_south.get_text(), "foo SOUTH column")
+
+        action_east = DirectionAction([], direction='EAST')
+        self.assertEqual(action_east.get_text(), "foo EAST row")
+
+        action_west = DirectionAction([], direction='WEST')
+        self.assertEqual(action_west.get_text(), "foo WEST row")
 
     def test_DoNothing(self):
         board = self.make_board()
 
     def test_DoNothing(self):
         board = self.make_board()
@@ -164,3 +187,20 @@ class TestActions(TestCase):
         self.assert_state(
             state_before, state_after, exclude=['health'],
             player_exclude=['bits'])
         self.assert_state(
             state_before, state_after, exclude=['health'],
             player_exclude=['bits'])
+
+    def test_AllowKnightMove(self):
+        board = self.make_board(player_bits=[BITS.RED, BITS.BLUE])
+        actions.AllowChessMove(set([BITS.RED, BITS.BLUE]), chesspiece="KNIGHT").perform_action(board, None)
+        self.assertEqual(board.player.movement_mode, MOVES.KNIGHT)
+
+
+    def test_AllowBishopMove(self):
+        board = self.make_board(player_bits=[BITS.RED, BITS.BLUE])
+        actions.AllowChessMove(set([BITS.RED, BITS.BLUE]), chesspiece="BISHOP").perform_action(board, None)
+        self.assertEqual(board.player.movement_mode, MOVES.BISHOP)
+
+
+    def test_AllowCastleMove(self):
+        board = self.make_board(player_bits=[BITS.RED, BITS.BLUE])
+        actions.AllowChessMove(set([BITS.RED, BITS.BLUE]), chesspiece="CASTLE").perform_action(board, None)
+        self.assertEqual(board.player.movement_mode, MOVES.CASTLE)