Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions GhostBuster/1-testsSoldier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import unittest
from GhostBuster import Soldier
from inspect import signature


class TestSoldier(unittest.TestCase):

@classmethod
def setUp(cls):
cls.strength = 150
cls.health = 300
cls.soldier = Soldier(cls.health, cls.strength)

def testConstructorSignature(self):
self.assertEqual(len(signature(Soldier).parameters), 2)

def testHealth(self):
self.assertEqual(self.soldier.health, self.health)

def testStrength(self):
self.assertEqual(self.soldier.strength, self.strength)

def testAttackShouldBeFunction(self):
self.assertEqual(callable(self.soldier.attack), True)

def testAttackHasNoParams(self):
self.assertEqual(len(signature(self.soldier.attack).parameters), 0)

def testAttackRetunsStrength(self):
self.assertEqual(self.soldier.attack(), self.strength)

def testReceivesDamage(self):
self.assertEqual(callable(self.soldier.receiveDamage), True)

def testReceivesDamageHasParams(self):
self.assertEqual(
len(signature(self.soldier.receiveDamage).parameters), 1)

def testReceiveDamageReturnNone(self):
self.assertEqual(self.soldier.receiveDamage(50), None)

def testCanReceiveDamage(self):
self.soldier.receiveDamage(50)
self.assertEqual(self.soldier.health, self.health - 50)


if __name__ == '__main__':
unittest.main()
67 changes: 67 additions & 0 deletions GhostBuster/2-testsHunters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import unittest
from GhostBuster import Hunters
from inspect import signature


class TestHunters(unittest.TestCase):

@classmethod
def setUp(cls):
cls.name = 'Fernando'
cls.strength = 150
cls.health = 300
cls.hunters = Hunters(cls.name, cls.health, cls.strength)

def testShouldReciveThreeParams(self):
self.assertEqual(len(signature(Hunters).parameters), 3)

def testName(self):
self.assertEqual(self.hunters.name_team1, self.name)

def testHealth(self):
self.assertEqual(self.hunters.health, self.health)

def testStrenght(self):
self.assertEqual(self.hunters.strength, self.strength)

def testAttackShouldBeFunction(self):
self.assertEqual(callable(self.hunters.attack), True)

def testAttackReciveNoParameters(self):
self.assertEqual(len(signature(self.hunters.attack).parameters), 0)

def testAttackShouldReturnStrength(self):
self.assertEqual(self.hunters.attack(), self.strength)

def testReceiveDamageIsFunction(self):
self.assertEqual(callable(self.hunters.receiveDamage), True)

def testReceiveDamageReciveOneParam(self):
self.assertEqual(
len(signature(self.hunters.receiveDamage).parameters), 1)

def testReciveDamageShouldRestHealth(self):
self.hunters.receiveDamage(50)
self.assertEqual(self.hunters.health, self.health - 50)

def testReciveDamageShouldReturnString50(self):
self.assertEqual(self.hunters.receiveDamage(50), self.name +
' has received 50 points of damage')

def testReciveDamageShouldReturnString70(self):
self.assertEqual(self.hunters.receiveDamage(70), self.name +
' has received 70 points of damage')

def testReceiveDamageShouldReturnStringDeath(self):
self.assertEqual(self.hunters.receiveDamage(self.health),
self.name + ' has died in act of combat')

def testBattleCry(self):
self.assertEqual(callable(self.hunters.battleCry), True)

def testBattleCryReturnString(self):
self.assertEqual(self.hunters.battleCry(), 'For Glory and Victory!')


if __name__ == '__main__':
unittest.main()
67 changes: 67 additions & 0 deletions GhostBuster/3-testsGhosts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import unittest
from GhostBuster import Ghosts
from inspect import signature


class TestGhosts(unittest.TestCase):

@classmethod
def setUp(cls):
cls.name = 'Bego'
cls.health = 250
cls.strength = 100
cls.ghosts = Ghosts(cls.name, cls.health, cls.strength)

def testShouldReciveThreeParams(self):
self.assertEqual(len(signature(Ghosts).parameters), 3)

def testName(self):
self.assertEqual(self.ghosts.name_team2, self.name)

def testHealth(self):
self.assertEqual(self.ghosts.health, self.health)

def testStrength(self):
self.assertEqual(self.ghosts.strength, self.strength)

def testAttack(self):
self.assertEqual(callable(self.ghosts.attack), True)

def testAttackShouldReceiveNoParams(self):
self.assertEqual(len(signature(self.ghosts.attack).parameters), 0)

def testAttackREturnStrength(self):
self.assertEqual(self.ghosts.attack(), self.strength)

def testReceiveDamageIsFunction(self):
self.assertEqual(callable(self.ghosts.receiveDamage), True)

def testReceiveDamageShouldReceiveOneParam(self):
self.assertEqual(
len(signature(self.ghosts.receiveDamage).parameters), 1)

def testReceiveDamage(self):
self.ghosts.receiveDamage(1)
self.assertEqual(self.ghosts.health, self.health - 1)

def testReceiveDamageString45(self):
self.assertEqual(self.ghosts.receiveDamage(
45), self.name + ' has received 45 points of damage')

def testReceiveDamageString10(self):
self.assertEqual(self.ghosts.receiveDamage(
10), self.name + ' has received 10 points of damage')

def testReceiveDamageStringDied(self):
self.assertEqual(self.ghosts.receiveDamage(self.health),
self.name + ' has died in combat')

def testBattleCry(self):
self.assertEqual(callable(self.ghosts.battleCry), True)

def testBattleCryReturnString(self):
self.assertEqual(self.ghosts.battleCry(), 'No Mercy, No Regrets!')


if __name__ == '__main__':
unittest.main()
54 changes: 54 additions & 0 deletions GhostBuster/4-testsGhostBusters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import unittest
from GhostBuster import GhostBusters, Hunters, Ghosts


class TestGhostBusters(unittest.TestCase):
def testHunterAttack(self):
ghostbusters = GhostBusters([], [])
result = ghostbusters.hunterAttack()
self.assertEqual(result, "There are no ghosts left to attack.")

def testGhostAttack(self):
ghostbusters = GhostBusters([], [])
result = ghostbusters.ghostAttack()
self.assertEqual(result, "There are no hunters left to possess.")

def testShowStatusHuntersWin(self):
ghostbusters = GhostBusters(["Ghost1", "Ghost2"], [])
result = ghostbusters.showStatus()
self.assertEqual(result, "Hunters have won the hunting of the century")

def testShowStatusGhostsWin(self):
ghostbusters = GhostBusters([], ["Hunter1", "Hunter2"])
result = ghostbusters.showStatus()
self.assertEqual(result, "Ghosts have possessed the bodies of hunters")

def testShowStatusStillFighting(self):
ghostbusters = GhostBusters(["Hunter1", "Hunter2"], ["Ghost1", "Ghost2"])
result = ghostbusters.showStatus()
self.assertEqual(result, "Hunters and Ghosts are still in the thick of battle!!")

class TestHunters(unittest.TestCase):
def testReceiveDamage(self):
hunter = Hunters("Hunter1", 100, 50)
result = hunter.receiveDamage(30)
self.assertEqual(result, "Hunter1 has received 30 points of damage")

def testBattleCry(self):
hunter = Hunters("Hunter1", 100, 50)
result = hunter.battleCry()
self.assertEqual(result, "For Glory and Victory!")

class TestGhosts(unittest.TestCase):
def testReceiveDamage(self):
ghost = Ghosts("Ghost1", 100, 50)
result = ghost.receiveDamage(30)
self.assertEqual(result, "Ghost1 has received 30 points of damage")

def testBattleCry(self):
ghost = Ghosts("Ghost1", 100, 50)
result = ghost.battleCry()
self.assertEqual(result, "No Mercy, No Regrets!")

if __name__ == '__main__':
unittest.main()
118 changes: 118 additions & 0 deletions GhostBuster/GhostBuster.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# %%
import random as rd

names = ["aída", "Amir", "ana","bego","claudia","Edward", "Emma", "Esther", "Leon", "Junior", "Lucia", "Maira", "Marc", "Marco", "Marta", "Miquel", "Noemi", "Patricia", "Pati", "Ricardo", "Sara", "Uri", "Victor", "Xavier"]

rd.shuffle(names)

division_team = int(len(names) / 2)

team_hunter = names[:division_team]

team_ghost = names[division_team:]


class Soldier:

def __init__(self, health, strength):

self.health = health
self.strength = strength

def attack(self):
return self.strength

def receiveDamage(self, damage):
self.health -= damage


## TEAM 1 ##

class Hunters(Soldier):

def __init__(self, name_team1, health, strength):

super().__init__(health, strength)
self.name_team1 = name_team1

def receiveDamage(self, damage):
self.health -= damage
if self.health > 0:
return "{} has received {} points of damage".format(self.name_team1, damage)
else:
return "{} has died in act of combat".format(self.name_team1)

def battleCry(self):
return "For Glory and Victory!"


class Ghosts(Soldier):

def __init__(self, name_team2, health, strength):

super().__init__(health, strength)
self.name_team2 = name_team2

def receiveDamage(self, damage):
self.health -= damage
if self.health > 0:
return "{} has received {} points of damage".format(self.name_team2, damage)
else:
return "{} has died in combat".format(self.name_team2)

def battleCry(self):
return "No Mercy, No Regrets!"



class GhostBusters(Soldier):

def __init__(self, team_hunter, team_ghost):
self.hunting_squad = team_hunter
self.ghost_squad = team_ghost

def hunterAttack(self):
if not self.ghost_squad:
return "There are no ghosts left to attack."

random_hunter = rd.choice(self.hunting_squad)
random_ghost = rd.choice(self.ghost_squad)

damage = random_hunter.attack()
result = random_ghost.receiveDamage(damage)

if random_ghost.health <= 0:
self.ghost_squad.remove(random_ghost)

return result

def ghostAttack(self):
if not self.hunting_squad:
return "There are no hunters left to possess."

random_ghost = rd.choice(self.ghost_squad)
random_hunter = rd.choice(self.hunting_squad)

damage = random_ghost.attack()
result = random_hunter.receiveDamage(damage)

if random_hunter.health <= 0:
self.hunting_squad.remove(random_hunter)

return result

def showStatus(self):

if not self.ghost_squad:
return "Hunters have won the hunting of the century"

elif not self.hunting_squad:
return "Ghosts have possessed the bodies of hunters"

else:
return "Hunters and Ghosts are still in the thick of battle!!"





Binary file not shown.
Binary file added __pycache__/GhostBuster.cpython-311.pyc
Binary file not shown.
Binary file added __pycache__/file.cpython-311.pyc
Binary file not shown.
Binary file added __pycache__/vikingsClasses.cpython-311.pyc
Binary file not shown.
Loading