Esempio n. 1
0
 def test_unslot_block(self):
     self._move_player(1400, 2600)
     self.play_area.use_item('block_E')
     item = cast(interactions.Item,
                 interactions.obtain('slotted_block_E_in_L'))
     self.play_area.apply_effects(item.play_area_effects)
     self.assertNotIn('slotted_block_E_in_L', self.play_area._objects)
     self.assertIn('puzzle_slot_L', self.play_area._objects)
Esempio n. 2
0
 def test_key(self):
     item = interactions.obtain('key')
     assert item  # for pytype
     self.assertSequenceEqual(item.item_effects,
                              (interactions.Effect.add_item('key'), ))
     self.assertSequenceEqual(item.play_area_effects,
                              (interactions.Effect.remove_object('key'), ))
     self.assertIn('key', item.reason)
Esempio n. 3
0
 def test_can_use(self):
     for name in itertools.chain(self.play_area._objects,
                                 self.play_area._hidden_objects):
         item = interactions.obtain(name)
         if not item:
             continue
         effects = list(item.item_effects)
         while effects:
             effect = effects.pop(0)
             if effect.type is not interactions.ItemEffectType.ADD:
                 continue
             for use in interactions.use(effect.target):
                 self.assertIsInstance(use, interactions.Use)
                 effects.extend(use.item_effects)
Esempio n. 4
0
 def test_solve_block_puzzle_twice(self):
     # Solve the puzzle.
     self._move_player(1400, 2600)
     self.play_area.use_item('block_L')
     self._move_player(120, 0)
     self.play_area.use_item('block_O')
     self._move_player(200, 0)
     self.play_area.use_item('block_V')
     self._move_player(140, 0)
     self.play_area.use_item('block_E')
     # Take block E out and put it back in.
     item = cast(interactions.Item,
                 interactions.obtain('slotted_block_E_in_E'))
     self.play_area.apply_effects(item.play_area_effects)
     self.play_area.use_item('block_E')
Esempio n. 5
0
 def test_can_obtain(self):
     for name in itertools.chain(self.play_area._objects,
                                 self.play_area._hidden_objects):
         self.assertIsInstance(interactions.obtain(name),
                               (type(None), interactions.Item))
Esempio n. 6
0
 def test_noop(self):
     self.assertIsNone(interactions.obtain('wall_1'))