Merging master into village, conflicts were solved
This commit is contained in:
		@@ -3,7 +3,7 @@
 | 
			
		||||
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from squirrelbattle.entities.items import Bomb, Heart, Item
 | 
			
		||||
from squirrelbattle.entities.items import BodySnatchPotion, Bomb, Heart, Item
 | 
			
		||||
from squirrelbattle.entities.monsters import Tiger, Hedgehog, Rabbit, TeddyBear
 | 
			
		||||
from squirrelbattle.entities.player import Player
 | 
			
		||||
from squirrelbattle.interfaces import Entity, Map
 | 
			
		||||
@@ -97,12 +97,13 @@ class TestEntities(unittest.TestCase):
 | 
			
		||||
        self.assertFalse(item.held)
 | 
			
		||||
        item.hold(self.player)
 | 
			
		||||
        self.assertTrue(item.held)
 | 
			
		||||
        item.drop(2, 6)
 | 
			
		||||
        self.assertEqual(item.y, 2)
 | 
			
		||||
        item.drop()
 | 
			
		||||
        self.assertEqual(item.y, 1)
 | 
			
		||||
        self.assertEqual(item.x, 6)
 | 
			
		||||
 | 
			
		||||
        # Pick up item
 | 
			
		||||
        self.player.move_down()
 | 
			
		||||
        self.player.move_left()
 | 
			
		||||
        self.player.move_right()
 | 
			
		||||
        self.assertTrue(item.held)
 | 
			
		||||
        self.assertEqual(item.held_by, self.player)
 | 
			
		||||
        self.assertIn(item, self.player.inventory)
 | 
			
		||||
@@ -125,10 +126,14 @@ class TestEntities(unittest.TestCase):
 | 
			
		||||
        item.act(self.map)
 | 
			
		||||
        self.assertFalse(hedgehog.dead)
 | 
			
		||||
        self.assertFalse(teddy_bear.dead)
 | 
			
		||||
        item.drop(42, 42)
 | 
			
		||||
        self.player.move(42, 42)
 | 
			
		||||
        item.hold(self.player)
 | 
			
		||||
        item.use()
 | 
			
		||||
        self.assertEqual(item.y, 42)
 | 
			
		||||
        self.assertEqual(item.x, 42)
 | 
			
		||||
        item.act(self.map)
 | 
			
		||||
        # Wait for the explosion
 | 
			
		||||
        for ignored in range(5):
 | 
			
		||||
            item.act(self.map)
 | 
			
		||||
        self.assertTrue(hedgehog.dead)
 | 
			
		||||
        self.assertTrue(teddy_bear.dead)
 | 
			
		||||
        bomb_state = item.save_state()
 | 
			
		||||
@@ -149,6 +154,24 @@ class TestEntities(unittest.TestCase):
 | 
			
		||||
        heart_state = item.save_state()
 | 
			
		||||
        self.assertEqual(heart_state["healing"], item.healing)
 | 
			
		||||
 | 
			
		||||
    def test_body_snatch_potion(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with body snatch potions.
 | 
			
		||||
        """
 | 
			
		||||
        item = BodySnatchPotion()
 | 
			
		||||
        self.map.add_entity(item)
 | 
			
		||||
        item.hold(self.player)
 | 
			
		||||
 | 
			
		||||
        tiger = Tiger(y=42, x=42)
 | 
			
		||||
        self.map.add_entity(tiger)
 | 
			
		||||
 | 
			
		||||
        # The player becomes a tiger, and the tiger becomes a squirrel
 | 
			
		||||
        item.use()
 | 
			
		||||
        self.assertEqual(self.player.name, "tiger")
 | 
			
		||||
        self.assertEqual(tiger.name, "player")
 | 
			
		||||
        self.assertEqual(self.player.y, 42)
 | 
			
		||||
        self.assertEqual(self.player.x, 42)
 | 
			
		||||
 | 
			
		||||
    def test_players(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with players.
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -31,6 +32,9 @@ class TestGame(unittest.TestCase):
 | 
			
		||||
        """
 | 
			
		||||
        Save a game and reload it.
 | 
			
		||||
        """
 | 
			
		||||
        bomb = Bomb()
 | 
			
		||||
        self.game.map.add_entity(bomb)
 | 
			
		||||
        bomb.hold(self.game.player)
 | 
			
		||||
        old_state = self.game.save_state()
 | 
			
		||||
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
@@ -44,6 +48,9 @@ class TestGame(unittest.TestCase):
 | 
			
		||||
        new_state = self.game.save_state()
 | 
			
		||||
        self.assertEqual(old_state, new_state)
 | 
			
		||||
 | 
			
		||||
        # Ensure that the bomb is loaded
 | 
			
		||||
        self.assertTrue(self.game.player.inventory)
 | 
			
		||||
 | 
			
		||||
        # Error on loading save
 | 
			
		||||
        with open(ResourceManager.get_config_path("save.json"), "w") as f:
 | 
			
		||||
            f.write("I am not a JSON file")
 | 
			
		||||
@@ -107,6 +114,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),
 | 
			
		||||
@@ -261,11 +280,8 @@ class TestGame(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(self.game.settings.KEY_LEFT_PRIMARY, 'a')
 | 
			
		||||
 | 
			
		||||
        # Navigate to "texture pack"
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        for ignored in range(9):
 | 
			
		||||
            self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
 | 
			
		||||
        # Change texture pack
 | 
			
		||||
        self.assertEqual(self.game.settings.TEXTURE_PACK, "ascii")
 | 
			
		||||
@@ -337,3 +353,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)
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,13 @@
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from squirrelbattle.settings import Settings
 | 
			
		||||
from squirrelbattle.translations import Translator
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestSettings(unittest.TestCase):
 | 
			
		||||
    def setUp(self) -> None:
 | 
			
		||||
        Translator.setlocale("en")
 | 
			
		||||
 | 
			
		||||
    def test_settings(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Ensure that settings are well loaded.
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,14 @@ class TestTranslations(unittest.TestCase):
 | 
			
		||||
                         "Touche secondaire pour aller vers la droite")
 | 
			
		||||
        self.assertEqual(_("Key to validate a menu"),
 | 
			
		||||
                         "Touche pour valider un menu")
 | 
			
		||||
        self.assertEqual(_("Key used to open the inventory"),
 | 
			
		||||
                         "Touche utilisée pour ouvrir l'inventaire")
 | 
			
		||||
        self.assertEqual(_("Key used to use an item in the inventory"),
 | 
			
		||||
                         "Touche pour utiliser un objet de l'inventaire")
 | 
			
		||||
        self.assertEqual(_("Key used to equip an item in the inventory"),
 | 
			
		||||
                         "Touche pour équiper un objet de l'inventaire")
 | 
			
		||||
        self.assertEqual(_("Key used to drop an item in the inventory"),
 | 
			
		||||
                         "Touche pour jeter un objet de l'inventaire")
 | 
			
		||||
        self.assertEqual(_("Texture pack"), "Pack de textures")
 | 
			
		||||
        self.assertEqual(_("Language"), "Langue")
 | 
			
		||||
 | 
			
		||||
@@ -53,5 +61,6 @@ class TestTranslations(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(_("rabbit"), "lapin")
 | 
			
		||||
        self.assertEqual(_("teddy bear"), "nounours")
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(_("body snatch potion"), "potion d'arrachage de corps")
 | 
			
		||||
        self.assertEqual(_("bomb"), "bombe")
 | 
			
		||||
        self.assertEqual(_("heart"), "cœur")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user