Changeset 164:06c681ff53aa for nagslang
- Timestamp:
- Sep 3, 2013, 8:47:27 AM (7 years ago)
- Branch:
- default
- Location:
- nagslang
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/level.py
r145 r164 30 30 self._glue = go.PuzzleGlue() 31 31 self._drawables = [] 32 self._game_objects = [] 32 33 33 34 def _get_data(self): … … 35 36 with resources.get_file('levels', self.name) as f: 36 37 return load(f) 38 39 def _dump_data(self, f): 40 # For manipulation in tests. 41 dump({ 42 'size': [self.x, self.y], 43 'base_tile': self.basetile, 44 'polygons': self.polygons, 45 'game_objects': self._game_objects, 46 }, f) 37 47 38 48 def load(self, space): … … 44 54 for point in points: 45 55 self.polygons[i].append(tuple(point)) 46 for game_object_dict in data.get('game_objects', []): 56 self._game_objects = data.get('game_objects', []) 57 for game_object_dict in self._game_objects: 47 58 self._create_game_object(space, **game_object_dict) 48 59 … … 84 95 return False 85 96 with resources.get_file('levels', self.name, mode='w') as f: 86 dump({ 87 'size': [self.x, self.y], 88 'base_tile': self.basetile, 89 'polygons': self.polygons, 90 }, f) 97 self._dump_data(f) 91 98 return True 92 99 -
nagslang/tests/test_level.py
r145 r164 1 1 from unittest import TestCase 2 3 from StringIO import StringIO 2 4 3 5 from nagslang import game_object as go 4 6 from nagslang.level import Level 7 from nagslang.yamlish import load 5 8 6 9 … … 16 19 return level 17 20 21 def roundtrip_level(self, level): 22 newlevel = Level(level.name) 23 f = StringIO() 24 level._dump_data(f) 25 f.seek(0) 26 newlevel._get_data = lambda: load(f) 27 return newlevel 28 18 29 def test_empty_level(self): 30 def do_test(level): 31 level.load(FakeSpace()) 32 self.assertEqual((5, 10), level.get_size()) 33 self.assertEqual([], level.get_walls()) 34 self.assertEqual([], level.get_drawables()) 35 19 36 level = self.make_level('foo', { 20 37 'size': [5, 10], … … 22 39 'polygons': {}, 23 40 }) 24 level.load(FakeSpace()) 25 self.assertEqual((5, 10), level.get_size())26 self.assertEqual([], level.get_walls())27 self.assertEqual([], level.get_drawables())41 42 do_test(level) 43 level2 = self.roundtrip_level(level) 44 do_test(level2) 28 45 29 46 def test_level_walls(self): 47 def do_test(level): 48 level.load(FakeSpace()) 49 self.assertEqual((5, 10), level.get_size()) 50 self.assertEqual([[(1, 1), (2, 1), (1, 2)]], level.get_walls()) 51 self.assertEqual([], level.get_drawables()) 52 30 53 level = self.make_level('foo', { 31 54 'size': [5, 10], … … 35 58 }, 36 59 }) 37 level.load(FakeSpace()) 38 self.assertEqual((5, 10), level.get_size()) 39 self.assertEqual([[(1, 1), (2, 1), (1, 2)]], level.get_walls()) 40 self.assertEqual([], level.get_drawables()) 60 do_test(level) 61 level2 = self.roundtrip_level(level) 62 do_test(level2) 41 63 42 64 def test_level_game_objects(self): 65 def do_test(level): 66 level.load(FakeSpace()) 67 self.assertEqual((5, 10), level.get_size()) 68 self.assertEqual([], level.get_walls()) 69 [box, switch] = level.get_drawables() 70 self.assertTrue(isinstance(box, go.Box)) 71 self.assertEqual(box.shape.body.position, (3, 3)) 72 self.assertTrue(isinstance(switch, go.FloorSwitch)) 73 self.assertEqual(switch.shape.body.position, (4, 4)) 74 75 puzzle_bits = level._glue._components 76 self.assertEqual(['foo', 'foo_proxy'], 77 sorted(puzzle_bits.keys())) 78 self.assertTrue( 79 isinstance(puzzle_bits['foo_proxy'], go.StateProxyPuzzler)) 80 self.assertEqual('foo', puzzle_bits['foo_proxy']._state_source) 81 self.assertTrue(isinstance(puzzle_bits['foo'], 82 go.FloorSwitchPuzzler)) 83 43 84 level = self.make_level('foo', { 44 85 'size': [5, 10], … … 62 103 ], 63 104 }) 64 level.load(FakeSpace())65 self.assertEqual((5, 10), level.get_size())66 self.assertEqual([], level.get_walls())67 [box, switch] = level.get_drawables()68 self.assertTrue(isinstance(box, go.Box))69 self.assertEqual(box.shape.body.position, (3, 3))70 self.assertTrue(isinstance(switch, go.FloorSwitch))71 self.assertEqual(switch.shape.body.position, (4, 4))72 105 73 puzzle_bits = level._glue._components 74 self.assertEqual(['foo', 'foo_proxy'], sorted(puzzle_bits.keys())) 75 self.assertTrue( 76 isinstance(puzzle_bits['foo_proxy'], go.StateProxyPuzzler)) 77 self.assertEqual('foo', puzzle_bits['foo_proxy']._state_source) 78 self.assertTrue(isinstance(puzzle_bits['foo'], go.FloorSwitchPuzzler)) 106 do_test(level) 107 level2 = self.roundtrip_level(level) 108 do_test(level2)
Note: See TracChangeset
for help on using the changeset viewer.