Mercurial > nagslang
view nagslang/tests/test_puzzle.py @ 685:7ad528f7d17c
Flesh out mock objects for puzzle tests
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 11 Sep 2013 16:35:41 +0200 |
parents | 3495a2025bc6 |
children |
line wrap: on
line source
from unittest import TestCase from nagslang.constants import COLLISION_TYPE_OTHER, SWITCH_PUSHERS from nagslang import puzzle class FakeBody(object): def __init__(self): self.position = (0, 0) class FakeShape(object): def __init__(self, collision_type=COLLISION_TYPE_OTHER): self.collision_type = collision_type self.body = FakeBody() class FakeSpace(object): def __init__(self, *shapes): self._shapes = shapes def shape_query(self, shape): return self._shapes def _get_shapes(self): return self._shapes def point_query(self, position): return [] shapes = property(_get_shapes) class FakeGameObject(object): def __init__(self, shape, space): self._shape = shape self._space = space def get_shape(self): return self._shape def get_space(self): return self._space class FakePuzzler(puzzle.Puzzler): def __init__(self, fake_state): self.fake_state = fake_state def get_state(self): return self.fake_state class TestPuzzles(TestCase): def mkpuzzler(self, gobj, cls, *args, **kw): puzzler = cls(*args, **kw) puzzler.set_game_object(gobj) return puzzler def assert_collide_state(self, expected, shapes, collision_types): gobj = FakeGameObject(None, FakeSpace(*shapes)) puzzler = self.mkpuzzler( gobj, puzzle.CollidePuzzler, *collision_types) self.assertEqual(expected, puzzler.get_state()) def test_collide_puzzler(self): self.assert_collide_state(False, [], []) self.assert_collide_state(False, [FakeShape()], SWITCH_PUSHERS) for collision_type in SWITCH_PUSHERS: self.assert_collide_state( True, [FakeShape(collision_type)], SWITCH_PUSHERS) self.assert_collide_state( True, [FakeShape(), FakeShape(collision_type)], SWITCH_PUSHERS) def test_state_proxy_puzzler(self): glue = puzzle.PuzzleGlue() puzzler = puzzle.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()) def test_glue_add_component(self): glue = puzzle.PuzzleGlue() puzzler = FakePuzzler('foo') gobj = FakeGameObject(None, None) gobj.puzzler = FakePuzzler('bar') self.assertEqual({}, glue._components) glue.add_component('foo', puzzler) self.assertEqual({'foo': puzzler}, glue._components) glue.add_component('bar', gobj) self.assertEqual( {'foo': puzzler, 'bar': gobj.puzzler}, glue._components)