from __future__ import annotations import unittest from app.simulation.components.amesim.storage.chambers import AmesimPnch023 from app.simulation.core.medium import IdealGasMedium from app.simulation.registry import COMPONENT_MODEL_REGISTRY class AmesimPnch023ComponentTests(unittest.TestCase): def setUp(self) -> None: self.medium = IdealGasMedium() def test_default_create_preserves_amesim_parameter_contract(self) -> None: chamber = COMPONENT_MODEL_REGISTRY["amesim_pnch023"].create( "chamber_1", self.medium, {}, ) self.assertIsInstance(chamber, AmesimPnch023) self.assertEqual(set(chamber.ports), {"port_1", "port_2"}) self.assertEqual( set(chamber.parameter_values), {"cvol", "kth", "sth", "extemp", "gi", "p0", "T0"}, ) self.assertEqual(chamber.parameter_values["cvol"], 0.057) self.assertEqual(chamber.gi, 0) def test_rejects_fractional_gas_index(self) -> None: with self.assertRaisesRegex(ValueError, "gi must be an integer"): COMPONENT_MODEL_REGISTRY["amesim_pnch023"].create( "chamber_1", self.medium, {"gi": 1.5}, ) if __name__ == "__main__": unittest.main()