@@ -253,6 +253,50 @@ def test_multiple_dependent_parameters(self, clear_global_map):
253253 assert new_params ["y" ].value == 10.0 # 2 * 5
254254 assert new_params ["z" ].value == 15.0 # 10 + 5
255255
256+ def test_dependency_with_descriptor_number (self , clear_global_map ):
257+ """Test that dependencies involving DescriptorNumber serialize correctly."""
258+ from easyscience .variable import DescriptorNumber
259+ # When
260+
261+ x = DescriptorNumber (name = "x" , value = 3.0 , unit = "m" )
262+ y = Parameter (name = "y" , value = 4.0 , unit = "m" )
263+ z = Parameter .from_dependency (
264+ name = "z" ,
265+ dependency_expression = "x + y" ,
266+ dependency_map = {"x" : x , "y" : y },
267+ )
268+
269+ # Verify original functionality
270+ assert z .value == 7.0 # 3 + 4
271+
272+ # Then
273+ # Serialize all
274+ params_data = {
275+ "x" : x .as_dict (),
276+ "y" : y .as_dict (),
277+ "z" : z .as_dict ()
278+ }
279+ # Deserialize and resolve
280+ global_object .map ._clear ()
281+ new_params = {}
282+ for name , data in params_data .items ():
283+ if name == "x" :
284+ new_params [name ] = DescriptorNumber .from_dict (data )
285+ else :
286+ new_params [name ] = Parameter .from_dict (data )
287+
288+ resolve_all_parameter_dependencies (new_params )
289+
290+ # Expect
291+ # Test that functionality still works
292+ assert new_params ["z" ].value == 7.0 # 3 + 4
293+ new_x = new_params ["x" ]
294+ new_y = new_params ["y" ]
295+ new_x .value = 4.0
296+ assert new_params ["z" ].value == 8.0 # 4 + 4
297+ new_y .value = 6.0
298+ assert new_params ["z" ].value == 10.0 # 4 + 6
299+
256300 def test_get_parameters_with_pending_dependencies (self , clear_global_map ):
257301 """Test utility function for finding parameters with pending dependencies."""
258302 # Create parameters
0 commit comments