95 lines
2.8 KiB
Python
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()
|