@@ -33,9 +33,10 @@ def _load_simulation_json(relative_path: str) -> dict:
3333class _AssetCache :
3434 """Simple object to hold asset cache data."""
3535
36- def __init__ (self , project_entity_info , selectors ):
36+ def __init__ (self , project_entity_info , selectors , mirror_status = None ):
3737 self .project_entity_info = project_entity_info
3838 self .selectors = selectors
39+ self .mirror_status = mirror_status
3940
4041
4142class _DummyParams :
@@ -52,8 +53,15 @@ def __init__(self, params_dict: dict, entity_info_obj=None):
5253 entity_info_obj = parse_entity_info_model (entity_info_dict )
5354
5455 selectors = asset_cache_dict .get ("selectors" )
56+ mirror_status = None
57+ mirror_status_dict = asset_cache_dict .get ("mirror_status" )
58+ if isinstance (mirror_status_dict , dict ) and mirror_status_dict :
59+ # pylint: disable=import-outside-toplevel
60+ from flow360 .component .simulation .draft_context .mirror import MirrorStatus
61+
62+ mirror_status = MirrorStatus .model_validate (mirror_status_dict )
5563 self .private_attribute_asset_cache = _AssetCache (
56- project_entity_info = entity_info_obj , selectors = selectors
64+ project_entity_info = entity_info_obj , selectors = selectors , mirror_status = mirror_status
5765 )
5866
5967 def model_dump (self , ** kwargs ):
@@ -89,6 +97,56 @@ def _build_simple_params_dict():
8997 }
9098
9199
100+ def _build_simple_params_dict_with_mirror_status ():
101+ params_as_dict = _build_simple_params_dict ()
102+ params_as_dict ["private_attribute_asset_cache" ]["mirror_status" ] = {
103+ "mirror_planes" : [
104+ {
105+ "name" : "plane-1" ,
106+ "normal" : [0 , 1 , 0 ],
107+ "center" : {"value" : [0 , 0 , 0 ], "units" : "m" },
108+ "private_attribute_entity_type_name" : "MirrorPlane" ,
109+ "private_attribute_id" : "mirror-plane-1" ,
110+ }
111+ ],
112+ "mirrored_geometry_body_groups" : [
113+ {
114+ "name" : "body-1_<mirror>" ,
115+ "geometry_body_group_id" : "body-1" ,
116+ "mirror_plane_id" : "mirror-plane-1" ,
117+ "private_attribute_entity_type_name" : "MirroredGeometryBodyGroup" ,
118+ "private_attribute_id" : "mirrored-body-1" ,
119+ }
120+ ],
121+ "mirrored_surfaces" : [
122+ {
123+ "name" : "wall_<mirror>" ,
124+ "surface_id" : "wall" ,
125+ "mirror_plane_id" : "mirror-plane-1" ,
126+ "private_attribute_entity_type_name" : "MirroredSurface" ,
127+ "private_attribute_id" : "mirrored-surface-1" ,
128+ }
129+ ],
130+ }
131+ return params_as_dict
132+
133+
134+ def test_get_registry_from_params_matches_dict_with_mirror_status ():
135+ params_as_dict = _build_simple_params_dict_with_mirror_status ()
136+ dummy_params = _DummyParams (params_as_dict )
137+
138+ _ , dict_registry = get_entity_info_and_registry_from_dict (params_as_dict )
139+ instance_registry = get_registry_from_params (dummy_params )
140+
141+ dict_mirrored_surfaces = dict_registry .find_by_type_name ("MirroredSurface" )
142+ instance_mirrored_surfaces = instance_registry .find_by_type_name ("MirroredSurface" )
143+ assert _entity_names (dict_mirrored_surfaces ) == _entity_names (instance_mirrored_surfaces )
144+
145+ dict_planes = dict_registry .find_by_type_name ("MirrorPlane" )
146+ instance_planes = instance_registry .find_by_type_name ("MirrorPlane" )
147+ assert _entity_names (dict_planes ) == _entity_names (instance_planes )
148+
149+
92150def test_get_registry_for_geometry_entity_info ():
93151 """
94152 Test get_entity_info_and_registry_from_dict with GeometryEntityInfo.
0 commit comments