Files
plant2dxf/lib/Elemente/Angetriebene_Kurve_tests.py
T

105 lines
3.6 KiB
Python

# -*- 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()