changeset 110:844073eaef69

Some basic puzzle tests.
author Jeremy Thurgood <firxen@gmail.com>
date Mon, 02 Sep 2013 14:25:16 +0200
parents 817d4a62135c
children 16d9f3a0dc29
files nagslang/tests/test_game_object.py
diffstat 1 files changed, 51 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nagslang/tests/test_game_object.py	Mon Sep 02 14:25:16 2013 +0200
@@ -0,0 +1,51 @@
+from unittest import TestCase
+
+from nagslang.constants import COLLISION_TYPE_OTHER, SWITCH_PUSHERS
+from nagslang import game_object
+
+
+class FakeShape(object):
+    def __init__(self, collision_type=COLLISION_TYPE_OTHER):
+        self.collision_type = collision_type
+
+
+class FakeSpace(object):
+    def __init__(self, *shapes):
+        self._shapes = shapes
+
+    def shape_query(self, shape):
+        return self._shapes
+
+
+class FakePuzzler(game_object.Puzzler):
+    def __init__(self, fake_state):
+        self.fake_state = fake_state
+
+    def get_state(self):
+        return self.fake_state
+
+
+class TestPuzzles(TestCase):
+    def test_floor_switch_puzzler(self):
+        puzzler = game_object.FloorSwitchPuzzler(FakeSpace(), None)
+        self.assertFalse(puzzler.get_state())
+
+        puzzler = game_object.FloorSwitchPuzzler(
+            FakeSpace(FakeShape()), None)
+        self.assertFalse(puzzler.get_state())
+
+        for collision_type in SWITCH_PUSHERS:
+            puzzler = game_object.FloorSwitchPuzzler(
+                FakeSpace(FakeShape(collision_type)), None)
+            self.assertTrue(puzzler.get_state())
+
+    def test_state_proxy_puzzler(self):
+        glue = game_object.PuzzleGlue()
+        puzzler = game_object.StateProxyPuzzler('faker')
+        glue.add_component('puzzler', puzzler)
+        faker = FakePuzzler('foo')
+        glue.add_component('faker', faker)
+
+        self.assertEqual('foo', puzzler.get_state())
+        faker.fake_state = 'bar'
+        self.assertEqual('bar', puzzler.get_state())