class CreatureAttackTest(unittest.TestCase):
	"""
	by putting unittest.TestCase within the parens, CreatureAttackTest is inheriting from unittest.TestCase
	"""

	# Make the tings and do the setup needed by all tests in the test case:
	def setUp(self):
		"""put what is needed to set up the test in this section"""
		""" 
		create an instance of the Create class the we can leverage its functions in tests.
		"""
		""" make the things that all of the tests will need"""

		self.creature = Creature()





	def teadDown(self):
		"""
		put what was needed for test and needs to be deleted to 'clean up' after test
		"""

		del self.creature


	def test_attack_return_int(self):
		"""
		Ensure that when attack is called, an int is returned.
		"""
		# Call the attack function of creature, 
		# and catch what it returns in value

		# make a variable
		value = self.creature.attack()

		self.assertIsInstance(value, int, "Reurned atk value is not an int")
		"""
		Assert function is used because if tells python to provide test feedback
		 """

	def test_no_weapon_return_base_damage(self):
	 	"""
	 	Ensure that with no weapon equiped, the creature does its base damage.
	 	"""

	 	#manually set the base damage to 3
	 	self.creature.attack_points = 2

	 	#get the creature's attack value
	 	value = self.creature.attack()

	 	self.assertEqual(value, 2, "expected base attack value not given." )

	def test_with_weapon_return_damage(self):
	 	"""
	 	Ensure that with a weapon, the creature does base damage + Weapon damage.
	 	"""
	 	# Make a weapon to give to creature
	 	weapon = Weapon (3)

	 	# Give the weapon to the creature
	 	self.weapon = mace

	 	# Set the creature's base attack value
	 	self.creature.attack_points = 2

	 	# Get the creature's total attack value
	 	value = self.creature.attack()

	 	# Assert the attack value is the base + weapon damage
	 	self.assertEqual(value, 5, "Computed attack value is not correct." )