X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Ftests%2Ftest_player.py;h=31cc8173395b53d7ae9a6147d06938a0e20cb6a9;hb=0cef06f581d48315a59a19ac06ca1d2be14cbb4c;hp=d2b896e402b3983c6b594d5e3c12c24f0304b482;hpb=ede149141d8dcbd6bed5bf3ff710d2f716ac8421;p=naja.git diff --git a/naja/tests/test_player.py b/naja/tests/test_player.py index d2b896e..31cc817 100644 --- a/naja/tests/test_player.py +++ b/naja/tests/test_player.py @@ -1,7 +1,7 @@ from unittest import TestCase from naja.constants import BITS -from naja.player import PlayerBits +from naja.player import PlayerBits, Player class TestPlayerBits(TestCase): @@ -84,3 +84,86 @@ class TestPlayerBits(TestCase): self.assertEqual(bits._bits, 0x03) bits.toggle_bits([BITS.NORTH, BITS.CYAN, BITS.MSB]) self.assertEqual(bits._bits, 0x92) + + +class TestPlayer(TestCase): + def test_new_player(self): + player = Player(0x0f, (0, 1)) + self.assertEqual(player.bits.bits, 0x0f) + self.assertEqual(player.position, (0, 1)) + + def test_import_player(self): + player = Player.import_player({ + 'bits': 0xaa, + 'position': [1, 2], + }) + self.assertEqual(player.bits.bits, 0xaa) + self.assertEqual(player.position, (1, 2)) + + def test_export_player(self): + player = Player(0xaa, (1, 2)) + self.assertEqual(player.export(), { + 'bits': 0xaa, + 'position': [1, 2], + }) + + def test_move(self): + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.NORTH), True) + self.assertEqual(player.position, (2, 1)) + + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.SOUTH), True) + self.assertEqual(player.position, (2, 3)) + + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.WEST), True) + self.assertEqual(player.position, (1, 2)) + + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.EAST), True) + self.assertEqual(player.position, (3, 2)) + + def test_move_flags_clear(self): + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.NORTH), False) + self.assertEqual(player.position, (2, 2)) + + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.SOUTH), False) + self.assertEqual(player.position, (2, 2)) + + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.WEST), False) + self.assertEqual(player.position, (2, 2)) + + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.EAST), False) + self.assertEqual(player.position, (2, 2)) + + def test_move_flags_edges(self): + player = Player(0x0f, (2, 0)) + self.assertEqual(player.move(BITS.NORTH), False) + self.assertEqual(player.position, (2, 0)) + + player = Player(0x0f, (2, 4)) + self.assertEqual(player.move(BITS.SOUTH), False) + self.assertEqual(player.position, (2, 4)) + + player = Player(0x0f, (0, 2)) + self.assertEqual(player.move(BITS.WEST), False) + self.assertEqual(player.position, (0, 2)) + + player = Player(0x0f, (4, 2)) + self.assertEqual(player.move(BITS.EAST), False) + self.assertEqual(player.position, (4, 2)) + + def test_legal_moves_all_available(self): + player = Player(0x0f, (2, 2)) + self.assertEqual( + player.legal_moves(), [(2, 2), (2, 1), (2, 3), (3, 2), (1, 2)]) + + def test_legal_moves_some_unavailable(self): + player = Player(0x0f, (0, 2)) + player.bits.clear_bit(BITS.NORTH) + self.assertEqual(player.legal_moves(), [(0, 2), (0, 3), (1, 2)])