Files

95 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
"""
Unit-Tests für Omniflo (Refactored)
"""
import unittest
from .Omniflo import Omniflo, _safe_float, _safe_int
class TestSafeFloat(unittest.TestCase):
"""Tests für _safe_float Hilfsfunktion."""
def test_normaler_string(self):
self.assertEqual(_safe_float("3.14"), 3.14)
def test_komma_als_dezimaltrenner(self):
self.assertEqual(_safe_float("3,14"), 3.14)
def test_none_gibt_default(self):
self.assertEqual(_safe_float(None, 42.0), 42.0)
def test_ungueltiger_string_gibt_default(self):
self.assertEqual(_safe_float("abc", 1.0), 1.0)
def test_int_input(self):
self.assertEqual(_safe_float(5), 5.0)
def test_float_input(self):
self.assertEqual(_safe_float(2.5), 2.5)
class TestSafeInt(unittest.TestCase):
"""Tests für _safe_int Hilfsfunktion."""
def test_normaler_string(self):
self.assertEqual(_safe_int("3"), 3)
def test_float_string_wird_getruncated(self):
self.assertEqual(_safe_int("3.7"), 3)
def test_none_gibt_default(self):
self.assertEqual(_safe_int(None, 7), 7)
def test_ungueltiger_string(self):
self.assertEqual(_safe_int("xyz", 0), 0)
class TestOmnifloModell(unittest.TestCase):
"""Tests für das Omniflo Modell."""
def test_from_merkmale_vollstaendig(self):
merkmale = {
"SivasNummer": "SV-123",
"Länge in Meter": "10,5", # Komma-Format
"Drehung": "-180",
"Höhe": "3.0",
"Höhe unten": "1.0",
"Höhe oben": "2.0",
"Anzahl der Scanner": "2",
"Anzahl der Separatoren": "1",
}
obj = Omniflo.from_merkmale("TEST-001", 50.0, 60.0, merkmale)
self.assertEqual(obj.teileid, "TEST-001")
self.assertEqual(obj.sivasnummer, "SV-123")
self.assertAlmostEqual(obj.laenge, 10500.0) # 10.5 * 1000
self.assertEqual(obj.drehung, -180.0)
self.assertEqual(obj.hoehe, 3.0)
self.assertEqual(obj.h0, 1.0)
self.assertEqual(obj.h1, 2.0)
self.assertEqual(obj.anzahl_scanner, 2)
self.assertEqual(obj.anzahl_stopper, 1)
def test_from_merkmale_fehlende_werte(self):
# Fehlende optionale Felder → defaults
merkmale = {
"SivasNummer": "SV-001",
}
obj = Omniflo.from_merkmale("TEST-002", 0.0, 0.0, merkmale)
self.assertEqual(obj.laenge, 0.0) # None * 1000 → default 0 * 1000
self.assertEqual(obj.drehung, 0.0)
self.assertEqual(obj.hoehe, 0.0)
def test_hight_zwischen(self):
merkmale = {
"SivasNummer": "SV-001",
"Höhe unten": "1.0",
"Höhe oben": "3.0",
}
obj = Omniflo.from_merkmale("TEST-003", 0.0, 0.0, merkmale)
self.assertEqual(obj.hight_zwischen, 2.0)
if __name__ == "__main__":
unittest.main()