# -*- coding: utf-8 -*- """ Unit-Tests für Angetriebene_Kurve (Refactored) """ import unittest from .Angetriebene_Kurve import Angetriebene_Kurve class TestAngetriebeneKurveModell(unittest.TestCase): """Tests für das Angetriebene_Kurve Modell.""" def test_from_merkmale(self): merkmale = { "Höhe Anfang": "1.5", "Höhe Ende": "2.0", "Kurvenwinkel": "90", "Kurvenrichtung": "links", "AntriebNebenStrecke": "außen", "Drehung": "-270", } obj = Angetriebene_Kurve.from_merkmale("AK-001", 100.0, 200.0, merkmale) self.assertEqual(obj.teileid, "AK-001") self.assertEqual(obj.hoehe0, 1500.0) self.assertEqual(obj.hoehe1, 2000.0) self.assertEqual(obj.winkel, 90) self.assertEqual(obj.kurvenrichtung, "links") self.assertEqual(obj.drehung, -270.0) def test_from_merkmale_drehung_fehlend(self): merkmale = { "Höhe Anfang": "1.0", "Höhe Ende": "1.0", "Kurvenwinkel": "45", "Kurvenrichtung": "rechts", "AntriebNebenStrecke": "innen", } obj = Angetriebene_Kurve.from_merkmale("AK-002", 0.0, 0.0, merkmale) self.assertEqual(obj.drehung, 0.0) # None → default class TestAntriebNormalisierung(unittest.TestCase): """Tests für die field_validator Normalisierung von antriebNebenStrecke.""" def test_aussen_normalisiert(self): """'Aussen' wird beim Erstellen zu 'außen' normalisiert.""" obj = Angetriebene_Kurve( teileid="T", x=0, y=0, kurvenrichtung="links", antriebNebenStrecke="Aussen", winkel=90, ) self.assertEqual(obj.antriebNebenStrecke, "außen") self.assertEqual(obj.antrieb, "außen") def test_innen_normalisiert(self): """'Innen' wird beim Erstellen zu 'innen' normalisiert.""" obj = Angetriebene_Kurve( teileid="T", x=0, y=0, kurvenrichtung="rechts", antriebNebenStrecke="Innen", winkel=45, ) self.assertEqual(obj.antriebNebenStrecke, "innen") self.assertEqual(obj.antrieb, "innen") def test_bereits_normalisiert_bleibt(self): """Bereits normalisierte Werte bleiben unverändert.""" obj = Angetriebene_Kurve( teileid="T", x=0, y=0, kurvenrichtung="links", antriebNebenStrecke="außen", winkel=90, ) self.assertEqual(obj.antriebNebenStrecke, "außen") def test_unbekannter_wert_bleibt(self): """Unbekannte Werte werden nicht verändert.""" obj = Angetriebene_Kurve( teileid="T", x=0, y=0, kurvenrichtung="links", antriebNebenStrecke="custom_wert", winkel=90, ) self.assertEqual(obj.antriebNebenStrecke, "custom_wert") def test_antrieb_property_read_only(self): """antrieb Property gibt den normierten Wert zurück ohne Side-Effect.""" obj = Angetriebene_Kurve( teileid="T", x=0, y=0, kurvenrichtung="links", antriebNebenStrecke="Aussen", winkel=90, ) # Mehrfacher Zugriff ändert nichts _ = obj.antrieb _ = obj.antrieb self.assertEqual(obj.antrieb, "außen") class TestHightZwischen(unittest.TestCase): """Tests für hight_zwischen Property.""" def test_mittlere_hoehe(self): obj = Angetriebene_Kurve( teileid="T", x=0, y=0, kurvenrichtung="links", antriebNebenStrecke="außen", winkel=90, hoehe0=1000, hoehe1=3000, ) self.assertEqual(obj.hight_zwischen, 2000.0) if __name__ == "__main__": unittest.main()