Mercurial > nagslang
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())