Linting and tests for chests
This commit is contained in:
@ -8,7 +8,7 @@ import unittest
|
||||
from ..bootstrap import Bootstrap
|
||||
from ..display.display import Display
|
||||
from ..display.display_manager import DisplayManager
|
||||
from ..entities.friendly import Merchant, Sunflower
|
||||
from ..entities.friendly import Merchant, Sunflower, Chest
|
||||
from ..entities.items import Bomb, Heart, Sword, Explosion, Shield, Helmet, \
|
||||
Chestplate, RingCritical, Bow, FireBallStaff, ScrollofDamage,\
|
||||
ScrollofWeakening
|
||||
@ -854,3 +854,59 @@ class TestGame(unittest.TestCase):
|
||||
self.game.map.tick(self.game.player)
|
||||
|
||||
self.assertEqual(entity2.effects, [])
|
||||
|
||||
def test_chests(self) -> None:
|
||||
"""
|
||||
Interacts with chests.
|
||||
"""
|
||||
self.game.state = GameMode.PLAY
|
||||
|
||||
chest = Chest()
|
||||
chest.move(2, 6)
|
||||
self.game.map.add_entity(chest)
|
||||
chest.inventory.append(FireBallStaff())
|
||||
|
||||
# Talk to merchant
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.assertTrue(self.game.waiting_for_friendly_key)
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.assertFalse(self.game.waiting_for_friendly_key)
|
||||
self.assertEqual(self.game.state, GameMode.CHEST)
|
||||
self.assertTrue(self.game.logs.messages)
|
||||
|
||||
# Navigate in the menu
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.game.handle_key_pressed(KeyValues.LEFT)
|
||||
self.assertFalse(self.game.is_in_chest_menu)
|
||||
self.game.handle_key_pressed(KeyValues.RIGHT)
|
||||
self.assertTrue(self.game.is_in_chest_menu)
|
||||
self.game.handle_key_pressed(KeyValues.UP)
|
||||
self.assertEqual(self.game.chest_menu.position, 1)
|
||||
|
||||
# The second item is not a heart
|
||||
chest.inventory[1] = sword = Sword()
|
||||
# Take the second item by clicking on it
|
||||
item = self.game.chest_menu.validate()
|
||||
self.assertIn(item, chest.inventory)
|
||||
self.game.display_actions(DisplayActions.MOUSE, 7, 25)
|
||||
self.assertIn(item, self.game.player.inventory)
|
||||
self.assertNotIn(item, chest.inventory)
|
||||
|
||||
# Give an item back
|
||||
self.game.inventory_menu.position = len(self.game.player.inventory) - 1
|
||||
self.game.handle_key_pressed(KeyValues.LEFT)
|
||||
self.assertFalse(self.game.is_in_chest_menu)
|
||||
self.assertIn(sword, self.game.player.inventory)
|
||||
self.assertEqual(self.game.inventory_menu.validate(), sword)
|
||||
self.game.handle_key_pressed(KeyValues.ENTER)
|
||||
self.assertNotIn(sword, self.game.player.inventory)
|
||||
self.assertIn(sword, chest.inventory)
|
||||
|
||||
# Test immortality
|
||||
self.game.player.hit(chest)
|
||||
self.assertTrue(not chest.dead)
|
||||
|
||||
# Exit the menu
|
||||
self.game.handle_key_pressed(KeyValues.SPACE)
|
||||
self.assertEqual(self.game.state, GameMode.PLAY)
|
||||
|
Reference in New Issue
Block a user