Test inventory
This commit is contained in:
parent
91a4514649
commit
4b9399c687
|
@ -92,9 +92,9 @@ class Bomb(Item):
|
||||||
A bomb item intended to deal damage to enemies at long range
|
A bomb item intended to deal damage to enemies at long range
|
||||||
"""
|
"""
|
||||||
damage: int = 5
|
damage: int = 5
|
||||||
owner: "Player"
|
|
||||||
tick: int
|
|
||||||
exploding: bool
|
exploding: bool
|
||||||
|
owner: Optional["Player"]
|
||||||
|
tick: int
|
||||||
|
|
||||||
def __init__(self, damage: int = 5, exploding: bool = False,
|
def __init__(self, damage: int = 5, exploding: bool = False,
|
||||||
*args, **kwargs):
|
*args, **kwargs):
|
||||||
|
@ -102,6 +102,7 @@ class Bomb(Item):
|
||||||
self.damage = damage
|
self.damage = damage
|
||||||
self.exploding = exploding
|
self.exploding = exploding
|
||||||
self.tick = 4
|
self.tick = 4
|
||||||
|
self.owner = None
|
||||||
|
|
||||||
def use(self) -> None:
|
def use(self) -> None:
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -7,6 +7,7 @@ import unittest
|
||||||
from ..bootstrap import Bootstrap
|
from ..bootstrap import Bootstrap
|
||||||
from ..display.display import Display
|
from ..display.display import Display
|
||||||
from ..display.display_manager import DisplayManager
|
from ..display.display_manager import DisplayManager
|
||||||
|
from ..entities.items import Bomb
|
||||||
from ..entities.player import Player
|
from ..entities.player import Player
|
||||||
from ..enums import DisplayActions
|
from ..enums import DisplayActions
|
||||||
from ..game import Game, KeyValues, GameMode
|
from ..game import Game, KeyValues, GameMode
|
||||||
|
@ -107,6 +108,18 @@ class TestGame(unittest.TestCase):
|
||||||
self.assertEqual(KeyValues.translate_key(
|
self.assertEqual(KeyValues.translate_key(
|
||||||
self.game.settings.KEY_ENTER, self.game.settings),
|
self.game.settings.KEY_ENTER, self.game.settings),
|
||||||
KeyValues.ENTER)
|
KeyValues.ENTER)
|
||||||
|
self.assertEqual(KeyValues.translate_key(
|
||||||
|
self.game.settings.KEY_INVENTORY, self.game.settings),
|
||||||
|
KeyValues.INVENTORY)
|
||||||
|
self.assertEqual(KeyValues.translate_key(
|
||||||
|
self.game.settings.KEY_USE, self.game.settings),
|
||||||
|
KeyValues.USE)
|
||||||
|
self.assertEqual(KeyValues.translate_key(
|
||||||
|
self.game.settings.KEY_EQUIP, self.game.settings),
|
||||||
|
KeyValues.EQUIP)
|
||||||
|
self.assertEqual(KeyValues.translate_key(
|
||||||
|
self.game.settings.KEY_DROP, self.game.settings),
|
||||||
|
KeyValues.DROP)
|
||||||
self.assertEqual(KeyValues.translate_key(' ', self.game.settings),
|
self.assertEqual(KeyValues.translate_key(' ', self.game.settings),
|
||||||
KeyValues.SPACE)
|
KeyValues.SPACE)
|
||||||
self.assertEqual(KeyValues.translate_key('plop', self.game.settings),
|
self.assertEqual(KeyValues.translate_key('plop', self.game.settings),
|
||||||
|
@ -334,3 +347,64 @@ class TestGame(unittest.TestCase):
|
||||||
self.game.display_actions(DisplayActions.REFRESH)
|
self.game.display_actions(DisplayActions.REFRESH)
|
||||||
self.game.handle_key_pressed(None, "random key")
|
self.game.handle_key_pressed(None, "random key")
|
||||||
self.assertIsNone(self.game.message)
|
self.assertIsNone(self.game.message)
|
||||||
|
|
||||||
|
def test_inventory_menu(self) -> None:
|
||||||
|
"""
|
||||||
|
Open the inventory menu and interact with items.
|
||||||
|
"""
|
||||||
|
self.game.state = GameMode.PLAY
|
||||||
|
# Open and close the inventory
|
||||||
|
self.game.handle_key_pressed(KeyValues.INVENTORY)
|
||||||
|
self.assertEqual(self.game.state, GameMode.INVENTORY)
|
||||||
|
self.game.handle_key_pressed(KeyValues.SPACE)
|
||||||
|
self.assertEqual(self.game.state, GameMode.PLAY)
|
||||||
|
|
||||||
|
# Add five bombs in the inventory
|
||||||
|
for ignored in range(5):
|
||||||
|
bomb = Bomb()
|
||||||
|
bomb.map = self.game.map
|
||||||
|
bomb.map.add_entity(bomb)
|
||||||
|
bomb.hold(self.game.player)
|
||||||
|
|
||||||
|
self.game.handle_key_pressed(KeyValues.INVENTORY)
|
||||||
|
self.assertEqual(self.game.state, GameMode.INVENTORY)
|
||||||
|
|
||||||
|
# Navigate in the menu
|
||||||
|
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||||
|
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||||
|
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||||
|
self.assertEqual(self.game.inventory_menu.position, 3)
|
||||||
|
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||||
|
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||||
|
self.game.handle_key_pressed(KeyValues.UP)
|
||||||
|
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||||
|
self.assertEqual(self.game.inventory_menu.position, 4)
|
||||||
|
|
||||||
|
# Equip key does nothing
|
||||||
|
self.game.handle_key_pressed(KeyValues.EQUIP)
|
||||||
|
|
||||||
|
# Drop an item
|
||||||
|
bomb = self.game.player.inventory[-1]
|
||||||
|
self.assertEqual(self.game.inventory_menu.validate(), bomb)
|
||||||
|
self.assertTrue(bomb.held)
|
||||||
|
self.assertEqual(bomb.held_by, self.game.player)
|
||||||
|
self.game.handle_key_pressed(KeyValues.DROP)
|
||||||
|
self.assertFalse(bomb.held)
|
||||||
|
self.assertIsNone(bomb.held_by)
|
||||||
|
self.assertIsNone(bomb.owner)
|
||||||
|
self.assertFalse(bomb.exploding)
|
||||||
|
self.assertEqual(bomb.y, self.game.player.y)
|
||||||
|
self.assertEqual(bomb.x, self.game.player.x)
|
||||||
|
|
||||||
|
# Use the bomb
|
||||||
|
bomb = self.game.player.inventory[-1]
|
||||||
|
self.assertEqual(self.game.inventory_menu.validate(), bomb)
|
||||||
|
self.assertTrue(bomb.held)
|
||||||
|
self.assertEqual(bomb.held_by, self.game.player)
|
||||||
|
self.game.handle_key_pressed(KeyValues.USE)
|
||||||
|
self.assertFalse(bomb.held)
|
||||||
|
self.assertIsNone(bomb.held_by)
|
||||||
|
self.assertEqual(bomb.owner, self.game.player)
|
||||||
|
self.assertTrue(bomb.exploding)
|
||||||
|
self.assertEqual(bomb.y, self.game.player.y)
|
||||||
|
self.assertEqual(bomb.x, self.game.player.x)
|
||||||
|
|
Loading…
Reference in New Issue