feat: integrate AMESim media models and editor UI
This commit is contained in:
1 parent
3e4f466114
commit
e7177ab03e
181 files changed
+7042
-25270
No files matched your search
@@ -0,0 +1,65 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from app.main import (
|
||||
ReactFlowProjectPayload,
|
||||
build_reactflow_system_xml,
|
||||
pydantic_to_jsonable,
|
||||
)
|
||||
|
||||
|
||||
class ReactFlowProjectMediumReferenceVersionTests(unittest.TestCase):
|
||||
def test_version_one_is_accepted_and_serialized(self) -> None:
|
||||
project = ReactFlowProjectPayload(
|
||||
name="versioned-medium-references",
|
||||
mediumReferenceVersion=1,
|
||||
)
|
||||
|
||||
self.assertEqual(project.mediumReferenceVersion, 1)
|
||||
self.assertEqual(
|
||||
pydantic_to_jsonable(project)["mediumReferenceVersion"],
|
||||
1,
|
||||
)
|
||||
|
||||
def test_other_medium_reference_versions_are_rejected(self) -> None:
|
||||
for version in (0, 2, -1, "1"):
|
||||
with self.subTest(version=version):
|
||||
with self.assertRaises(ValueError):
|
||||
ReactFlowProjectPayload(
|
||||
name="unsupported-medium-references",
|
||||
mediumReferenceVersion=version,
|
||||
)
|
||||
|
||||
def test_legacy_project_without_version_remains_compatible(self) -> None:
|
||||
project = ReactFlowProjectPayload(name="legacy-project")
|
||||
|
||||
self.assertIsNone(project.mediumReferenceVersion)
|
||||
|
||||
def test_xml_export_adds_default_property_model_to_legacy_medium_node(self) -> None:
|
||||
project = ReactFlowProjectPayload(
|
||||
name="legacy-medium-node",
|
||||
mediumReferenceVersion=1,
|
||||
nodes=[
|
||||
{
|
||||
"id": "air_1",
|
||||
"position": {"x": 10, "y": 20},
|
||||
"data": {
|
||||
"label": "Air 1",
|
||||
"componentType": "amesim_ideal_air_medium",
|
||||
"modelType": "amesim_ideal_air_medium",
|
||||
"ports": [],
|
||||
"parameters": {"gi": 1},
|
||||
},
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
xml = build_reactflow_system_xml(project).decode("utf-8")
|
||||
|
||||
self.assertIn('<Parameter name="gi" value="1"', xml)
|
||||
self.assertIn('<Parameter name="property_model" value="0.0"', xml)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user