Files
SystemSimulationApp/tests/test_amesim_pnor001_component.py
T

62 lines
1.7 KiB
Python

from __future__ import annotations
import unittest
from app.simulation.components.amesim.flow.orifices import AmesimPnor001
from app.simulation.core.medium import IdealGasMedium
from app.simulation.registry import COMPONENT_MODEL_REGISTRY
class AmesimPnor001ComponentTests(unittest.TestCase):
def setUp(self) -> None:
self.medium = IdealGasMedium()
def test_default_create_preserves_amesim_parameter_contract(self) -> None:
orifice = COMPONENT_MODEL_REGISTRY["amesim_pnor001"].create(
"pnor_1",
self.medium,
{},
)
self.assertIsInstance(orifice, AmesimPnor001)
self.assertEqual(set(orifice.ports), {"port_1", "port_2"})
self.assertEqual(
set(orifice.parameter_values),
{"cq", "area", "Cv", "Kv", "gi", "flowset"},
)
self.assertEqual(orifice.parameter_values["area"], 5.0e-6)
self.assertEqual(orifice.flowset, 1)
def test_rejects_fractional_integer_parameters(self) -> None:
with self.assertRaisesRegex(ValueError, "must be one of"):
COMPONENT_MODEL_REGISTRY["amesim_pnor001"].create(
"pnor_1",
self.medium,
{"flowset": 1.5},
)
def test_cv_and_kv_modes_produce_positive_equivalent_area(self) -> None:
cv_orifice = AmesimPnor001(
"pnor_cv",
self.medium,
flowset=2.0,
Cv=0.5,
)
kv_orifice = AmesimPnor001(
"pnor_kv",
self.medium,
flowset=3.0,
Kv=0.4,
)
self.assertGreater(cv_orifice.effective_area, 0.0)
self.assertGreater(kv_orifice.effective_area, 0.0)
if __name__ == "__main__":
unittest.main()