Merge remote-tracking branch 'origin/master' into display
# Conflicts: # dungeonbattle/entities/player.py # dungeonbattle/game.py # dungeonbattle/interfaces.py # dungeonbattle/mapdisplay.py # dungeonbattle/settings.py # dungeonbattle/tests/settings_test.py # dungeonbattle/texturepack.py
This commit is contained in:
		
							
								
								
									
										0
									
								
								dungeonbattle/tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								dungeonbattle/tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										97
									
								
								dungeonbattle/tests/entities_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								dungeonbattle/tests/entities_test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from dungeonbattle.entities.items import Bomb, Item
 | 
			
		||||
from dungeonbattle.entities.monsters import Squirrel
 | 
			
		||||
from dungeonbattle.entities.player import Player
 | 
			
		||||
from dungeonbattle.interfaces import Entity, Map
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestEntities(unittest.TestCase):
 | 
			
		||||
    def setUp(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Load example map that can be used in tests.
 | 
			
		||||
        """
 | 
			
		||||
        self.map = Map.load("example_map.txt")
 | 
			
		||||
 | 
			
		||||
    def test_basic_entities(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with basic entities.
 | 
			
		||||
        """
 | 
			
		||||
        entity = Entity()
 | 
			
		||||
        entity.move(42, 64)
 | 
			
		||||
        self.assertEqual(entity.y, 42)
 | 
			
		||||
        self.assertEqual(entity.x, 64)
 | 
			
		||||
        self.assertIsNone(entity.act(self.map))
 | 
			
		||||
 | 
			
		||||
    def test_fighting_entities(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with fighting entities.
 | 
			
		||||
        """
 | 
			
		||||
        entity = Squirrel()
 | 
			
		||||
        self.assertIsNone(entity.act(self.map))
 | 
			
		||||
        self.assertEqual(entity.maxhealth, 10)
 | 
			
		||||
        self.assertEqual(entity.maxhealth, entity.health)
 | 
			
		||||
        self.assertEqual(entity.strength, 3)
 | 
			
		||||
        self.assertIsNone(entity.hit(entity))
 | 
			
		||||
        self.assertFalse(entity.dead)
 | 
			
		||||
        self.assertIsNone(entity.hit(entity))
 | 
			
		||||
        self.assertFalse(entity.dead)
 | 
			
		||||
        self.assertIsNone(entity.hit(entity))
 | 
			
		||||
        self.assertFalse(entity.dead)
 | 
			
		||||
        self.assertIsNone(entity.hit(entity))
 | 
			
		||||
        self.assertTrue(entity.dead)
 | 
			
		||||
 | 
			
		||||
    def test_items(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with items.
 | 
			
		||||
        """
 | 
			
		||||
        item = Item()
 | 
			
		||||
        self.assertFalse(item.held)
 | 
			
		||||
        item.hold()
 | 
			
		||||
        self.assertTrue(item.held)
 | 
			
		||||
        item.drop(42, 42)
 | 
			
		||||
        self.assertEqual(item.y, 42)
 | 
			
		||||
        self.assertEqual(item.x, 42)
 | 
			
		||||
 | 
			
		||||
    def test_bombs(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with bombs.
 | 
			
		||||
        """
 | 
			
		||||
        item = Bomb()
 | 
			
		||||
        squirrel = Squirrel()
 | 
			
		||||
        self.map.add_entity(item)
 | 
			
		||||
        self.map.add_entity(squirrel)
 | 
			
		||||
        squirrel.health = 2
 | 
			
		||||
        squirrel.move(41, 42)
 | 
			
		||||
        item.act(self.map)
 | 
			
		||||
        self.assertFalse(squirrel.dead)
 | 
			
		||||
        item.drop(42, 42)
 | 
			
		||||
        self.assertEqual(item.y, 42)
 | 
			
		||||
        self.assertEqual(item.x, 42)
 | 
			
		||||
        item.act(self.map)
 | 
			
		||||
        self.assertTrue(squirrel.dead)
 | 
			
		||||
 | 
			
		||||
    def test_players(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some random stuff with players.
 | 
			
		||||
        """
 | 
			
		||||
        player = Player()
 | 
			
		||||
        self.map.add_entity(player)
 | 
			
		||||
        player.move(1, 6)
 | 
			
		||||
        self.assertEqual(player.strength, 5)
 | 
			
		||||
        self.assertEqual(player.health, player.maxhealth)
 | 
			
		||||
        self.assertEqual(player.maxhealth, 20)
 | 
			
		||||
 | 
			
		||||
        # Test movements and ensure that collisions are working
 | 
			
		||||
        self.assertFalse(player.move_up())
 | 
			
		||||
        self.assertTrue(player.move_left())
 | 
			
		||||
        self.assertFalse(player.move_left())
 | 
			
		||||
        for i in range(8):
 | 
			
		||||
            self.assertTrue(player.move_down())
 | 
			
		||||
        self.assertFalse(player.move_down())
 | 
			
		||||
        self.assertTrue(player.move_right())
 | 
			
		||||
        self.assertTrue(player.move_right())
 | 
			
		||||
        self.assertTrue(player.move_right())
 | 
			
		||||
        self.assertFalse(player.move_right())
 | 
			
		||||
        self.assertTrue(player.move_down())
 | 
			
		||||
        self.assertTrue(player.move_down())
 | 
			
		||||
							
								
								
									
										97
									
								
								dungeonbattle/tests/game_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								dungeonbattle/tests/game_test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from dungeonbattle.game import Game, KeyValues, GameMode
 | 
			
		||||
from dungeonbattle.menus import MainMenuValues
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestGame(unittest.TestCase):
 | 
			
		||||
    def setUp(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Setup game.
 | 
			
		||||
        """
 | 
			
		||||
        self.game = Game()
 | 
			
		||||
        self.game.new_game(False)
 | 
			
		||||
 | 
			
		||||
    def test_load_game(self) -> None:
 | 
			
		||||
        self.assertRaises(NotImplementedError, Game.load_game, "game.save")
 | 
			
		||||
 | 
			
		||||
    def test_key_translation(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test key bindings.
 | 
			
		||||
        """
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_UP_PRIMARY), KeyValues.UP)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_UP_SECONDARY), KeyValues.UP)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_DOWN_PRIMARY), KeyValues.DOWN)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_DOWN_SECONDARY), KeyValues.DOWN)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_LEFT_PRIMARY), KeyValues.LEFT)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_LEFT_SECONDARY), KeyValues.LEFT)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_RIGHT_PRIMARY), KeyValues.RIGHT)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_RIGHT_SECONDARY), KeyValues.RIGHT)
 | 
			
		||||
        self.assertEqual(self.game.translate_key(
 | 
			
		||||
            self.game.settings.KEY_ENTER), KeyValues.ENTER)
 | 
			
		||||
 | 
			
		||||
    def test_key_press(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Press a key and see what is done.
 | 
			
		||||
        """
 | 
			
		||||
        self.assertEqual(self.game.state, GameMode.MAINMENU)
 | 
			
		||||
        self.assertEqual(self.game.main_menu.validate(),
 | 
			
		||||
                         MainMenuValues.START)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.UP)
 | 
			
		||||
        self.assertEqual(self.game.main_menu.validate(),
 | 
			
		||||
                         MainMenuValues.START)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        self.assertEqual(self.game.main_menu.validate(),
 | 
			
		||||
                         MainMenuValues.SETTINGS)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.ENTER)
 | 
			
		||||
        self.assertEqual(self.game.state, GameMode.SETTINGS)
 | 
			
		||||
 | 
			
		||||
        self.game.state = GameMode.MAINMENU
 | 
			
		||||
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        self.assertEqual(self.game.main_menu.validate(),
 | 
			
		||||
                         MainMenuValues.EXIT)
 | 
			
		||||
        self.assertRaises(SystemExit, self.game.handle_key_pressed,
 | 
			
		||||
                          KeyValues.ENTER)
 | 
			
		||||
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.UP)
 | 
			
		||||
        self.assertEqual(self.game.main_menu.validate(),
 | 
			
		||||
                         MainMenuValues.SETTINGS)
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.UP)
 | 
			
		||||
        self.assertEqual(self.game.main_menu.validate(),
 | 
			
		||||
                         MainMenuValues.START)
 | 
			
		||||
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.ENTER)
 | 
			
		||||
        self.assertEqual(self.game.state, GameMode.PLAY)
 | 
			
		||||
 | 
			
		||||
        y, x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.DOWN)
 | 
			
		||||
        new_y, new_x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.assertEqual(new_y, y + 1)
 | 
			
		||||
        self.assertEqual(new_x, x)
 | 
			
		||||
 | 
			
		||||
        y, x = new_y, new_x
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.RIGHT)
 | 
			
		||||
        new_y, new_x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.assertEqual(new_y, y)
 | 
			
		||||
        self.assertEqual(new_x, x + 1)
 | 
			
		||||
 | 
			
		||||
        y, x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.UP)
 | 
			
		||||
        new_y, new_x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.assertEqual(new_y, y - 1)
 | 
			
		||||
        self.assertEqual(new_x, x)
 | 
			
		||||
 | 
			
		||||
        y, x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.game.handle_key_pressed(KeyValues.LEFT)
 | 
			
		||||
        new_y, new_x = self.game.player.y, self.game.player.x
 | 
			
		||||
        self.assertEqual(new_y, y)
 | 
			
		||||
        self.assertEqual(new_x, x - 1)
 | 
			
		||||
							
								
								
									
										33
									
								
								dungeonbattle/tests/interfaces_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								dungeonbattle/tests/interfaces_test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from dungeonbattle.interfaces import Map, Tile
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestInterfaces(unittest.TestCase):
 | 
			
		||||
    def test_map(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Create a map and check that it is well parsed.
 | 
			
		||||
        """
 | 
			
		||||
        m = Map.load_from_string(".█\n█.\n")
 | 
			
		||||
        self.assertEqual(m.width, 2)
 | 
			
		||||
        self.assertEqual(m.height, 2)
 | 
			
		||||
        self.assertEqual(m.draw_string(), ".█\n█.")
 | 
			
		||||
 | 
			
		||||
    def test_load_map(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Try to load a map from a file.
 | 
			
		||||
        """
 | 
			
		||||
        m = Map.load("example_map.txt")
 | 
			
		||||
        self.assertEqual(m.width, 52)
 | 
			
		||||
        self.assertEqual(m.height, 17)
 | 
			
		||||
 | 
			
		||||
    def test_tiles(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test some things about tiles.
 | 
			
		||||
        """
 | 
			
		||||
        self.assertFalse(Tile.FLOOR.is_wall())
 | 
			
		||||
        self.assertTrue(Tile.WALL.is_wall())
 | 
			
		||||
        self.assertFalse(Tile.EMPTY.is_wall())
 | 
			
		||||
        self.assertTrue(Tile.FLOOR.can_walk())
 | 
			
		||||
        self.assertFalse(Tile.WALL.can_walk())
 | 
			
		||||
        self.assertTrue(Tile.EMPTY.can_walk())
 | 
			
		||||
							
								
								
									
										24
									
								
								dungeonbattle/tests/menus_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								dungeonbattle/tests/menus_test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from dungeonbattle.menus import ArbitraryMenu, MainMenu, MainMenuValues
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestMenus(unittest.TestCase):
 | 
			
		||||
    def test_scroll_menu(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Test to scroll the menu.
 | 
			
		||||
        """
 | 
			
		||||
        arbitrary_menu = ArbitraryMenu([])
 | 
			
		||||
        self.assertEqual(arbitrary_menu.position, 0)
 | 
			
		||||
 | 
			
		||||
        main_menu = MainMenu()
 | 
			
		||||
        self.assertEqual(main_menu.position, 0)
 | 
			
		||||
        self.assertEqual(main_menu.validate(), MainMenuValues.START)
 | 
			
		||||
        main_menu.go_up()
 | 
			
		||||
        self.assertEqual(main_menu.validate(), MainMenuValues.START)
 | 
			
		||||
        main_menu.go_down()
 | 
			
		||||
        self.assertEqual(main_menu.validate(), MainMenuValues.SETTINGS)
 | 
			
		||||
        main_menu.go_down()
 | 
			
		||||
        self.assertEqual(main_menu.validate(), MainMenuValues.EXIT)
 | 
			
		||||
        main_menu.go_down()
 | 
			
		||||
        self.assertEqual(main_menu.validate(), MainMenuValues.EXIT)
 | 
			
		||||
							
								
								
									
										32
									
								
								dungeonbattle/tests/settings_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								dungeonbattle/tests/settings_test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
import unittest
 | 
			
		||||
 | 
			
		||||
from dungeonbattle.settings import Settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestSettings(unittest.TestCase):
 | 
			
		||||
    def test_settings(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Ensure that settings are well loaded.
 | 
			
		||||
        """
 | 
			
		||||
        settings = Settings()
 | 
			
		||||
        self.assertEqual(settings.KEY_UP_PRIMARY, 'z')
 | 
			
		||||
        self.assertEqual(settings.KEY_DOWN_PRIMARY, 's')
 | 
			
		||||
        self.assertEqual(settings.KEY_LEFT_PRIMARY, 'q')
 | 
			
		||||
        self.assertEqual(settings.KEY_RIGHT_PRIMARY, 'd')
 | 
			
		||||
        self.assertEqual(settings.KEY_UP_SECONDARY, 'KEY_UP')
 | 
			
		||||
        self.assertEqual(settings.KEY_DOWN_SECONDARY, 'KEY_DOWN')
 | 
			
		||||
        self.assertEqual(settings.KEY_LEFT_SECONDARY, 'KEY_LEFT')
 | 
			
		||||
        self.assertEqual(settings.KEY_RIGHT_SECONDARY, 'KEY_RIGHT')
 | 
			
		||||
        self.assertEqual(settings.TEXTURE_PACK, 'ascii')
 | 
			
		||||
        self.assertEqual(settings.get_comment(settings.TEXTURE_PACK),
 | 
			
		||||
                         settings.get_comment('TEXTURE_PACK'))
 | 
			
		||||
        self.assertEqual(settings.get_comment(settings.TEXTURE_PACK),
 | 
			
		||||
                         'Pack de textures utilisé')
 | 
			
		||||
 | 
			
		||||
        settings.TEXTURE_PACK = 'UNICODE'
 | 
			
		||||
        self.assertEqual(settings.TEXTURE_PACK, 'UNICODE')
 | 
			
		||||
 | 
			
		||||
        settings.write_settings()
 | 
			
		||||
        settings.load_settings()
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(settings.TEXTURE_PACK, 'UNICODE')
 | 
			
		||||
		Reference in New Issue
	
	Block a user