Test monocles

This commit is contained in:
Yohann D'ANELLO 2021-01-08 15:58:54 +01:00
parent a497d08f31
commit 7a4936e6a5
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
3 changed files with 31 additions and 13 deletions

View File

@ -345,7 +345,7 @@ class Game:
try: try:
self.map_index = d["map_index"] self.map_index = d["map_index"]
self.maps = [Map().load_state(map_dict) for map_dict in d["maps"]] self.maps = [Map().load_state(map_dict) for map_dict in d["maps"]]
except KeyError as e: except KeyError:
self.message = _("Some keys are missing in your save file.\n" self.message = _("Some keys are missing in your save file.\n"
"Your save seems to be corrupt. It got deleted.") "Your save seems to be corrupt. It got deleted.")
os.unlink(ResourceManager.get_config_path("save.json")) os.unlink(ResourceManager.get_config_path("save.json"))

View File

@ -1,11 +1,12 @@
# Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse # Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import random
import unittest import unittest
from squirrelbattle.entities.items import BodySnatchPotion, Bomb, Heart, Item, \ from squirrelbattle.entities.items import BodySnatchPotion, Bomb, Heart, Item, \
Explosion Explosion
from squirrelbattle.entities.monsters import Tiger, Hedgehog, Rabbit, TeddyBear from squirrelbattle.entities.monsters import Tiger, Hedgehog, Rabbit,\
TeddyBear, GiantSeaEagle
from squirrelbattle.entities.friendly import Trumpet from squirrelbattle.entities.friendly import Trumpet
from squirrelbattle.entities.player import Player from squirrelbattle.entities.player import Player
from squirrelbattle.interfaces import Entity, Map from squirrelbattle.interfaces import Entity, Map
@ -264,3 +265,17 @@ class TestEntities(unittest.TestCase):
player_state = player.save_state() player_state = player.save_state()
self.assertEqual(player_state["current_xp"], 10) self.assertEqual(player_state["current_xp"], 10)
def test_critical_hit(self) -> None:
"""
Ensure that critical hits are working.
"""
random.seed(2) # Next random.randint(1, 100) will output 8
self.player.critical = 10
sea_eagle = GiantSeaEagle()
self.map.add_entity(sea_eagle)
sea_eagle.move(2, 6)
old_health = sea_eagle.health
self.player.hit(sea_eagle)
self.assertEqual(sea_eagle.health,
old_health - self.player.strength * 4)

View File

@ -1,8 +1,8 @@
# Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse # Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import curses import curses
import os import os
import random
import unittest import unittest
from ..bootstrap import Bootstrap from ..bootstrap import Bootstrap
@ -10,7 +10,7 @@ from ..display.display import Display
from ..display.display_manager import DisplayManager from ..display.display_manager import DisplayManager
from ..entities.friendly import Merchant, Sunflower from ..entities.friendly import Merchant, Sunflower
from ..entities.items import Bomb, Heart, Sword, Explosion, Shield, Helmet, \ from ..entities.items import Bomb, Heart, Sword, Explosion, Shield, Helmet, \
Chestplate, RingCritical Chestplate, RingCritical, Monocle
from ..entities.monsters import GiantSeaEagle from ..entities.monsters import GiantSeaEagle
from ..entities.player import Player from ..entities.player import Player
from ..enums import DisplayActions from ..enums import DisplayActions
@ -584,6 +584,7 @@ class TestGame(unittest.TestCase):
# Buy a heart # Buy a heart
merchant.inventory[1] = Heart() merchant.inventory[1] = Heart()
self.game.display_actions(DisplayActions.REFRESH)
item = self.game.store_menu.validate() item = self.game.store_menu.validate()
self.assertIn(item, merchant.inventory) self.assertIn(item, merchant.inventory)
self.assertEqual(item, merchant.inventory[1]) self.assertEqual(item, merchant.inventory[1])
@ -702,19 +703,21 @@ class TestGame(unittest.TestCase):
self.game.save_state() self.game.save_state()
ring.unequip() ring.unequip()
def test_critical_hit(self) -> None: def test_monocle(self) -> None:
""" """
Ensure that critical hits are working. The player is wearing a monocle, then the stats are displayed.
""" """
random.seed(2) # Next random.randint(1, 100) will output 8 self.game.state = GameMode.PLAY
self.game.player.critical = 10
monocle = Monocle()
monocle.hold(self.game.player)
monocle.equip()
sea_eagle = GiantSeaEagle() sea_eagle = GiantSeaEagle()
self.game.map.add_entity(sea_eagle) self.game.map.add_entity(sea_eagle)
sea_eagle.move(2, 6) sea_eagle.move(2, 6)
old_health = sea_eagle.health
self.game.player.hit(sea_eagle) self.game.display_actions(DisplayActions.REFRESH)
self.assertEqual(sea_eagle.health,
old_health - self.game.player.strength * 4)
def test_ladders(self) -> None: def test_ladders(self) -> None:
""" """