Source code for game.test_suite.tests.test_item

import unittest

from game.common.avatar import Avatar
from game.common.items.item import Item
from game.common.enums import ObjectType
import game.test_suite.utils


[docs]class TestItem(unittest.TestCase): """ `Test Item Notes:` This class tests the different methods in the Item class. """
[docs] def setUp(self) -> None: self.avatar: Avatar = Avatar(None, 1) self.item: Item = Item() self.utils = game.test_suite.utils
# test set durability
[docs] def test_set_durability(self): self.item.durability = 10 self.assertEqual(self.item.durability, 10)
[docs] def test_set_durability_none(self): self.item.durability = None self.assertEqual(self.item.durability, None)
[docs] def test_set_durability_fail(self): value: str = 'fail' with self.assertRaises(ValueError) as e: self.item.durability = value self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.durability must be an int. It is a(n) ' f'{value.__class__.__name__} with the value of ' f'{value}.', False))
[docs] def test_set_durability_stack_size_fail(self): value: Item = Item(10, None, 10, 10) value2: int = 10 with self.assertRaises(ValueError) as e: self.item = value self.item.durability = value2 self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.durability must be set to None if stack_size' f' is not equal to 1.' f' {value.__class__.__name__}.' f'durability has the value of {value2}.', False))
# test set value
[docs] def test_set_value(self): self.item.value = 10 self.assertEqual(self.item.value, 10)
[docs] def test_set_value_fail(self): value: str = 'fail' with self.assertRaises(ValueError) as e: self.item.value = value self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.value must be an int.' f' It is a(n) {value.__class__.__name__} with the value of {value}.' , False))
# test set quantity
[docs] def test_set_quantity(self): self.item = Item(10, None, 10, 10) self.item.quantity = 5 self.assertEqual(self.item.quantity, 5)
[docs] def test_set_quantity_fail(self): value: str = 'fail' with self.assertRaises(ValueError) as e: self.item.quantity = value self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.quantity must be an int.' f' It is a(n) {value.__class__.__name__} with the value' f' of {value}.', False))
[docs] def test_set_quantity_fail_greater_than_0(self): value: Item = -1 with self.assertRaises(ValueError) as e: self.item.quantity = value self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.quantity must be greater than or ' f'equal to 0. {self.item.__class__.__name__}.quantity ' f'has the value of {value}.', False))
[docs] def test_set_quantity_fail_stack_size(self): value: Item = 10 value2: Item = 1 with self.assertRaises(ValueError) as e: self.item.quantity = value self.item.stack_size = value2 self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.quantity cannot be greater than ' f'{self.item.__class__.__name__}.stack_size. ' f'{self.item.__class__.__name__}.quantity has ' f'the value of {value}.', False))
[docs] def test_stack_size(self): self.item = Item(10, None, 10, 10) self.assertEqual(self.item.quantity, 10)
[docs] def test_stack_size_fail(self): value: str = 'fail' with self.assertRaises(ValueError) as e: self.item.stack_size = value self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.stack_size must be an int.' f' It is a(n) {value.__class__.__name__} with the value' f' of {value}.',False))
[docs] def test_stack_size_fail_quantity(self): # value, durability, quantity, stack size value: Item = 5 with self.assertRaises(ValueError) as e: item: Item = Item(10, None, 10, 10) item.stack_size = value self.assertTrue(self.utils.spell_check(str(e.exception), f'Item.stack_size must be greater than or equal ' f'to the quantity. ' f'{self.item.__class__.__name__}.stack_size has the ' f'value of {value}.', False))
[docs] def test_pick_up(self): # value, durability, quantity, stack size item: Item = Item(10, None, 2, 10) self.item = Item(10, None, 1, 10) self.item.pick_up(item) self.assertEqual(self.item.quantity, 3)
[docs] def test_pick_up_wrong_object_type(self): item: Item = Item(10, 10, 1, 1) item.object_type = ObjectType.PLAYER self.item = Item(10, 10, 1, 1) self.item = self.item.pick_up(item) self.assertEqual(self.item.object_type, item.object_type)
[docs] def test_pick_up_surplus(self): item: Item = Item(10, None, 10, 10) self.item = Item(10, None, 9, 10) surplus: Item = self.item.pick_up(item) self.assertEqual(surplus.quantity, 9)
[docs] def test_item_json(self): data: dict = self.item.to_json() item: Item = Item().from_json(data) self.assertEqual(self.item.object_type, item.object_type) self.assertEqual(self.item.value, item.value) self.assertEqual(self.item.stack_size, item.stack_size) self.assertEqual(self.item.durability, item.durability) self.assertEqual(self.item.quantity, item.quantity)