diff --git a/test_mars.py b/test_mars.py new file mode 100644 index 0000000000000000000000000000000000000000..5f9152f04eec7fbc9ff37621551f42fedaeb78b2 --- /dev/null +++ b/test_mars.py @@ -0,0 +1,63 @@ +import unittest +from mars import Mars +from plateau import Plateau + +class TestMarsSingleton(unittest.TestCase): + """ + Testklasse für das Singleton-Verhalten der Mars-Klasse. + """ + + def test_mars_singleton(self): + """ + Überprüft, ob zwei Mars-Instanzen tatsächlich dasselbe Objekt sind. + """ + # Erstelle zwei Mars-Instanzen + mars1 = Mars() + mars2 = Mars() + + # Überprüfe, ob es sich um dasselbe Objekt handelt + self.assertIs(mars1, mars2, "Mars sollte ein Singleton sein") + + # Überprüfe, ob Änderungen an einer Instanz auch die andere betreffen + plateau = Plateau(5, 5) + mars1.set_plateau(plateau) + + # Beide Instanzen sollten dasselbe Plateau haben + self.assertIs(mars1.get_plateau(), mars2.get_plateau()) + + def test_mars_singleton_reset(self): + """ + Überprüft, ob das Singleton-Verhalten auch nach dem Zurücksetzen der Instanz funktioniert. + """ + # Erstelle eine Mars-Instanz + mars1 = Mars() + + # Speichere eine Referenz auf die Instanz + mars_ref = mars1 + + # Setze ein Plateau + plateau1 = Plateau(5, 5) + mars1.set_plateau(plateau1) + + # Zurücksetzen der Singleton-Instanz + Mars._instance = None + + # Erstelle eine neue Mars-Instanz mit einem anderen Plateau + plateau2 = Plateau(10, 10) + mars2 = Mars(plateau2) + + # Überprüfe, ob die neue Instanz ein anderes Objekt ist als die ursprüngliche Referenz + self.assertIsNot(mars_ref, mars2, "Nach dem Zurücksetzen sollte eine neue Instanz erstellt werden") + + # Erstelle eine weitere Instanz + mars3 = Mars() + + # Überprüfe, ob die neuen Instanzen dasselbe Objekt sind + self.assertIs(mars2, mars3, "Neue Mars-Instanzen sollten dasselbe Objekt sein") + + # Überprüfe, ob beide das neue Plateau haben + self.assertIs(mars2.get_plateau(), plateau2) + self.assertIs(mars3.get_plateau(), plateau2) + +if __name__ == '__main__': + unittest.main()