Test inventory
This commit is contained in:
		@@ -92,9 +92,9 @@ class Bomb(Item):
 | 
			
		||||
    A bomb item intended to deal damage to enemies at long range
 | 
			
		||||
    """
 | 
			
		||||
    damage: int = 5
 | 
			
		||||
    owner: "Player"
 | 
			
		||||
    tick: int
 | 
			
		||||
    exploding: bool
 | 
			
		||||
    owner: Optional["Player"]
 | 
			
		||||
    tick: int
 | 
			
		||||
 | 
			
		||||
    def __init__(self, damage: int = 5, exploding: bool = False,
 | 
			
		||||
                 *args, **kwargs):
 | 
			
		||||
@@ -102,6 +102,7 @@ class Bomb(Item):
 | 
			
		||||
        self.damage = damage
 | 
			
		||||
        self.exploding = exploding
 | 
			
		||||
        self.tick = 4
 | 
			
		||||
        self.owner = None
 | 
			
		||||
 | 
			
		||||
    def use(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import unittest
 | 
			
		||||
from ..bootstrap import Bootstrap
 | 
			
		||||
from ..display.display import Display
 | 
			
		||||
from ..display.display_manager import DisplayManager
 | 
			
		||||
from ..entities.items import Bomb
 | 
			
		||||
from ..entities.player import Player
 | 
			
		||||
from ..enums import DisplayActions
 | 
			
		||||
from ..game import Game, KeyValues, GameMode
 | 
			
		||||
@@ -107,6 +108,18 @@ class TestGame(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(KeyValues.translate_key(
 | 
			
		||||
            self.game.settings.KEY_ENTER, self.game.settings),
 | 
			
		||||
            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),
 | 
			
		||||
                         KeyValues.SPACE)
 | 
			
		||||
        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.handle_key_pressed(None, "random key")
 | 
			
		||||
        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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user