Prototype player object.
[naja.git] / naja / tests / test_player.py
diff --git a/naja/tests/test_player.py b/naja/tests/test_player.py
new file mode 100644 (file)
index 0000000..48b2ef8
--- /dev/null
@@ -0,0 +1,85 @@
+from unittest import TestCase
+
+from naja.constants import NORTH, SOUTH, CYAN, MSB
+from naja.player import PlayerBits
+
+
+class TestPlayerBits(TestCase):
+    def test_range_limits(self):
+        bits = PlayerBits(0x00)
+
+        def set_value(value):
+            bits.bits = value
+
+        self.assertEqual(bits.bits, 0x00)
+        self.assertRaises(AssertionError, set_value, -1)
+        self.assertEqual(bits.bits, 0x00)
+        bits.bits = 255
+        self.assertEqual(bits.bits, 0xff)
+        bits.bits = 0
+        self.assertEqual(bits.bits, 0x00)
+        self.assertRaises(AssertionError, set_value, 256)
+        self.assertEqual(bits.bits, 0x00)
+
+    def test_check_bit(self):
+        bits = PlayerBits(0x01)
+        self.assertEqual(bits.check_bit(NORTH), True)
+        self.assertEqual(bits.check_bit(SOUTH), False)
+
+    def test_set_bit(self):
+        bits = PlayerBits(0x00)
+        self.assertEqual(bits._bits, 0x00)
+        bits.set_bit(NORTH)
+        self.assertEqual(bits._bits, 0x01)
+        bits.set_bit(NORTH)
+        self.assertEqual(bits._bits, 0x01)
+
+    def test_clear_bit(self):
+        bits = PlayerBits(0x01)
+        self.assertEqual(bits._bits, 0x01)
+        bits.clear_bit(NORTH)
+        self.assertEqual(bits._bits, 0x00)
+        bits.clear_bit(NORTH)
+        self.assertEqual(bits._bits, 0x00)
+
+    def test_toggle_bit(self):
+        bits = PlayerBits(0x00)
+        self.assertEqual(bits._bits, 0x00)
+        bits.toggle_bit(NORTH)
+        self.assertEqual(bits._bits, 0x01)
+        bits.toggle_bit(NORTH)
+        self.assertEqual(bits._bits, 0x00)
+
+    def test_check_bits(self):
+        bits = PlayerBits(0x03)
+        self.assertEqual(bits.check_bits(NORTH), True)
+        self.assertEqual(bits.check_bits(NORTH, SOUTH), True)
+        self.assertEqual(bits.check_bits(CYAN), False)
+        self.assertEqual(bits.check_bits(CYAN, MSB), False)
+        self.assertEqual(bits.check_bits(NORTH, SOUTH, CYAN), False)
+
+    def test_set_bits(self):
+        bits = PlayerBits(0x03)
+        self.assertEqual(bits._bits, 0x03)
+        bits.set_bits(NORTH, CYAN)
+        self.assertEqual(bits._bits, 0x13)
+        bits.set_bits(NORTH, CYAN, MSB)
+        self.assertEqual(bits._bits, 0x93)
+
+    def test_clear_bits(self):
+        bits = PlayerBits(0x03)
+        self.assertEqual(bits._bits, 0x03)
+        bits.clear_bits(NORTH, CYAN)
+        self.assertEqual(bits._bits, 0x02)
+        bits.clear_bits(NORTH, CYAN, MSB)
+        self.assertEqual(bits._bits, 0x02)
+
+    def test_toggle_bits(self):
+        bits = PlayerBits(0x03)
+        self.assertEqual(bits._bits, 0x03)
+        bits.toggle_bits(NORTH, CYAN)
+        self.assertEqual(bits._bits, 0x12)
+        bits.toggle_bits(NORTH, CYAN)
+        self.assertEqual(bits._bits, 0x03)
+        bits.toggle_bits(NORTH, CYAN, MSB)
+        self.assertEqual(bits._bits, 0x92)