Source code for game.test_suite.tests.test_inventory_controller

import unittest

from game.common.enums import *
from game.common.avatar import Avatar
from game.common.player import Player
from game.common.items.item import Item
from game.controllers.inventory_controller import InventoryController
from game.common.map.game_board import GameBoard


[docs]class TestInventoryController(unittest.TestCase): """ `Test Inventory Controller Notes:` This class tests the different methods in the Avatar class' inventory. """
[docs] def setUp(self) -> None: self.inventory_controller: InventoryController = InventoryController() self.item: Item = Item() self.avatar: Avatar = Avatar(max_inventory_size=10) self.inventory: [Item] = [Item(1), Item(2), Item(3), Item(4), Item(5), Item(6), Item(7), Item(8), Item(9), Item(10)] self.avatar.inventory = self.inventory self.player: Player = Player(avatar=self.avatar) self.game_board: GameBoard = GameBoard()
# Testing accessing the right Item with the controller
[docs] def test_select_slot_0(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_0, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[0]) self.check_inventory_item()
[docs] def test_select_slot_1(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_1, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[1]) self.check_inventory_item()
[docs] def test_select_slot_2(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_2, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[2]) self.check_inventory_item()
[docs] def test_select_slot_3(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_3, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[3]) self.check_inventory_item()
[docs] def test_select_slot_4(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_4, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[4]) self.check_inventory_item()
[docs] def test_select_slot_5(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_5, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[5]) self.check_inventory_item()
[docs] def test_select_slot_6(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_6, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[6]) self.check_inventory_item()
[docs] def test_select_slot_7(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_7, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[7]) self.check_inventory_item()
[docs] def test_select_slot_8(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_8, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[8]) self.check_inventory_item()
[docs] def test_select_slot_9(self): self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_9, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.inventory[9]) self.check_inventory_item()
# Testing using the inventory controller with the wrong ActionType
[docs] def test_with_wrong_action_type(self): self.inventory_controller.handle_actions(ActionType.MOVE_LEFT, self.player, self.game_board) self.assertEqual(self.avatar.held_item, self.avatar.inventory[0]) self.check_inventory_item()
# Tests accessing a slot of the inventory given an enum that's out of bounds
[docs] def test_with_out_of_bounds(self): with self.assertRaises(IndexError) as e: self.inventory: [Item] = [Item(1), Item(2), Item(3), Item(4), Item(5)] self.avatar.max_inventory_size = 5 self.avatar.inventory = self.inventory self.player: Player = Player(avatar=self.avatar) self.inventory_controller.handle_actions(ActionType.SELECT_SLOT_9, self.player, self.game_board) self.assertEqual(str(e.exception), 'The given action type, SELECT_SLOT_9, is not within bounds of the given ' 'inventory of size 5. Select an ActionType enum ' 'that will be within the inventory\'s bounds.')
[docs] def check_inventory_item(self): # Test to make sure that the inventory hasn't shifted items self.assertEqual(self.avatar.inventory[0].value, 1) self.assertEqual(self.avatar.inventory[1].value, 2) self.assertEqual(self.avatar.inventory[2].value, 3) self.assertEqual(self.avatar.inventory[3].value, 4) self.assertEqual(self.avatar.inventory[4].value, 5) self.assertEqual(self.avatar.inventory[5].value, 6) self.assertEqual(self.avatar.inventory[6].value, 7) self.assertEqual(self.avatar.inventory[7].value, 8) self.assertEqual(self.avatar.inventory[8].value, 9) self.assertEqual(self.avatar.inventory[9].value, 10)