111 lines
3.6 KiB
Python
111 lines
3.6 KiB
Python
import unittest
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
try:
|
|
import aufgabe
|
|
except ImportError as e:
|
|
raise ImportError(f"Konnte 'aufgabe.py' nicht importieren: {e}")
|
|
|
|
|
|
class TestKapitel06(unittest.TestCase):
|
|
|
|
def test_01_init(self):
|
|
"""Prüft die Standard-Startwerte eines neuen Tamagotchis."""
|
|
t = aufgabe.Tamagotchi("Pikachu", "Maus")
|
|
self.assertEqual(t.name, "Pikachu")
|
|
self.assertEqual(t.tierart, "Maus")
|
|
self.assertEqual(t.hunger, 50)
|
|
self.assertEqual(t.muedigkeit, 20)
|
|
self.assertEqual(t.glueck, 80)
|
|
self.assertEqual(t.alter_tage, 0)
|
|
self.assertTrue(t.ist_lebendig)
|
|
|
|
def test_02_fuettern(self):
|
|
"""Prüft die Auswirkungen des Fütterns."""
|
|
t = aufgabe.Tamagotchi("Yoshi")
|
|
t.hunger = 50
|
|
t.muedigkeit = 20
|
|
t.glueck = 80
|
|
|
|
text = t.fuettern(20)
|
|
self.assertEqual(t.hunger, 30, "Hunger sollte um 20 sinken!")
|
|
self.assertEqual(t.glueck, 85, "Glück sollte um 5 steigen!")
|
|
self.assertEqual(t.muedigkeit, 25, "Müdigkeit sollte um 5 steigen!")
|
|
self.assertIn("Yoshi", text)
|
|
|
|
# Hunger darf nicht negativ werden
|
|
t.fuettern(100)
|
|
self.assertEqual(t.hunger, 0, "Hunger darf nicht unter 0 fallen!")
|
|
|
|
def test_03_spielen(self):
|
|
"""Prüft die Auswirkungen des Spielens und die Müdigkeitsgrenze."""
|
|
t = aufgabe.Tamagotchi("Sparky")
|
|
t.hunger = 30
|
|
t.muedigkeit = 20
|
|
t.glueck = 50
|
|
|
|
text = t.spielen(25)
|
|
self.assertEqual(t.glueck, 75)
|
|
self.assertEqual(t.hunger, 45)
|
|
self.assertEqual(t.muedigkeit, 40)
|
|
self.assertIn("Sparky", text)
|
|
|
|
# Zu müde zum Spielen (muedigkeit > 80)
|
|
t.muedigkeit = 85
|
|
t.glueck = 50
|
|
text_muede = t.spielen(20)
|
|
self.assertIn("zu müde", text_muede.lower())
|
|
self.assertEqual(t.glueck, 50, "Werte dürfen sich bei Müdigkeit nicht ändern!")
|
|
|
|
def test_04_schlafen(self):
|
|
"""Prüft Schlafen und Altern."""
|
|
t = aufgabe.Tamagotchi("Luna")
|
|
t.muedigkeit = 70
|
|
t.hunger = 20
|
|
t.alter_tage = 2
|
|
|
|
t.schlafen()
|
|
self.assertEqual(t.muedigkeit, 0, "Müdigkeit sollte auf 0 zurückgesetzt werden!")
|
|
self.assertEqual(t.hunger, 35, "Hunger sollte um 15 steigen!")
|
|
self.assertEqual(t.alter_tage, 3, "Alter in Tagen sollte um 1 steigen!")
|
|
|
|
def test_05_zeit_vergeht_und_lebenszyklus(self):
|
|
"""Prüft Verstreichen der Zeit und Ableben bei 100 Hunger oder 0 Glück."""
|
|
t = aufgabe.Tamagotchi("Rex")
|
|
t.hunger = 80
|
|
t.muedigkeit = 30
|
|
t.glueck = 20
|
|
|
|
lebendig = t.zeit_vergeht()
|
|
self.assertTrue(lebendig)
|
|
self.assertEqual(t.hunger, 90)
|
|
self.assertEqual(t.muedigkeit, 40)
|
|
self.assertEqual(t.glueck, 10)
|
|
|
|
# Noch ein Zeitschritt -> Hunger erreicht 100
|
|
lebendig2 = t.zeit_vergeht()
|
|
self.assertFalse(lebendig2)
|
|
self.assertFalse(t.ist_lebendig)
|
|
|
|
# Aktionen an totem Tamagotchi
|
|
reaktion = t.fuettern()
|
|
self.assertIn("reagiert nicht mehr", reaktion)
|
|
|
|
def test_06_str_darstellung(self):
|
|
"""Prüft die __str__ Repräsentation."""
|
|
t = aufgabe.Tamagotchi("Bobo", "Affe")
|
|
str_lebendig = str(t)
|
|
self.assertIn("Bobo", str_lebendig)
|
|
self.assertIn("Affe", str_lebendig)
|
|
self.assertIn("50/100", str_lebendig)
|
|
|
|
t.ist_lebendig = False
|
|
str_tot = str(t)
|
|
self.assertIn("RIP", str_tot)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(verbosity=2)
|