Aufgaben-Python/06_abschlussprojekt_tamagotchi/test_aufgabe.py

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)