69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Unit-Tests für Eckrad (Refactored)
|
|
"""
|
|
import unittest
|
|
|
|
from .Eckrad import Eckrad, _safe_float, BLOCK_AN8, BLOCK_ECKRAD_UZS, BLOCK_ECKRAD_GUZS, RADIUS
|
|
|
|
|
|
class TestSafeFloat(unittest.TestCase):
|
|
"""Tests für Eckrad _safe_float."""
|
|
|
|
def test_normaler_wert(self):
|
|
self.assertEqual(_safe_float("2.5"), 2.5)
|
|
|
|
def test_none_default(self):
|
|
self.assertEqual(_safe_float(None, 99.0), 99.0)
|
|
|
|
def test_ungueltig_default(self):
|
|
self.assertEqual(_safe_float("abc", 0.0), 0.0)
|
|
|
|
|
|
class TestEckradModell(unittest.TestCase):
|
|
"""Tests für das Eckrad Modell."""
|
|
|
|
def test_from_merkmale_vollstaendig(self):
|
|
merkmale = {
|
|
"Höhe in Meter": "3.5",
|
|
"Drehung": "45",
|
|
"Drehrichtung": "UZS",
|
|
}
|
|
obj = Eckrad.from_merkmale("E-001", 100.0, 200.0, merkmale)
|
|
self.assertEqual(obj.teileid, "E-001")
|
|
self.assertEqual(obj.hoehe, 3500.0) # 3.5 * 1000
|
|
self.assertEqual(obj.drehung, 45.0)
|
|
self.assertEqual(obj.drehrichtung, "UZS")
|
|
|
|
def test_from_merkmale_fehlende_hoehe(self):
|
|
merkmale = {"Drehung": "90", "Drehrichtung": None}
|
|
obj = Eckrad.from_merkmale("E-002", 0.0, 0.0, merkmale)
|
|
self.assertEqual(obj.hoehe, 0.0) # None → default 0
|
|
|
|
def test_from_merkmale_fehlende_drehung(self):
|
|
merkmale = {"Höhe in Meter": "1.0"}
|
|
obj = Eckrad.from_merkmale("E-003", 0.0, 0.0, merkmale)
|
|
self.assertEqual(obj.drehung, 0.0) # None → default 0
|
|
|
|
def test_drehrichtung_ohne_try_except(self):
|
|
# drehrichtung = merkmale.get("Drehrichtung") wirft nie
|
|
merkmale = {"Höhe in Meter": "1.0", "Drehung": "0"}
|
|
obj = Eckrad.from_merkmale("E-004", 0.0, 0.0, merkmale)
|
|
self.assertIsNone(obj.drehrichtung)
|
|
|
|
|
|
class TestEckradKonstanten(unittest.TestCase):
|
|
"""Tests für Eckrad-Konstanten."""
|
|
|
|
def test_block_namen(self):
|
|
self.assertEqual(BLOCK_AN8, "AN8")
|
|
self.assertEqual(BLOCK_ECKRAD_UZS, "eckrad_UZS")
|
|
self.assertEqual(BLOCK_ECKRAD_GUZS, "eckrad_GUZS")
|
|
|
|
def test_radius(self):
|
|
self.assertEqual(RADIUS, 400)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|