# HG changeset patch # User Jeremy Thurgood # Date 1378124716 -7200 # Node ID 844073eaef6957d9040ba7fd15ad6812eb748c5d # Parent 817d4a62135c743395bafe8873d4b4e0fc5ecbc2 Some basic puzzle tests. diff -r 817d4a62135c -r 844073eaef69 nagslang/tests/test_game_object.py --- /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())