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