@@ -153,34 +153,35 @@ def inner(fmu, model_description):
153153 assert strings == ["" , "" , "" ], f"Initially fetched values were { strings } , should have been ['', '', '']"
154154
155155 print ("Fetching FMU state" )
156- state = fmu .getFMUstate ()
156+ initial_state = fmu .getFMUstate ()
157157 rerolled_time = sim_time
158158
159159 print (f"Updating inputs at time { sim_time } " )
160160 fmu .setReal ([vrs ["real_a" ],vrs ["real_b" ]],[1.0 ,2.0 ])
161161 fmu .setInteger ([vrs ["integer_a" ],vrs ["integer_b" ]],[1 ,2 ])
162162 fmu .setBoolean ([vrs ["boolean_a" ],vrs ["boolean_b" ]],[True ,False ])
163163 fmu .setString ([vrs ["string_a" ],vrs ["string_b" ]],["Hello, " ,"World!" ])
164+ updated_state = fmu .getFMUstate ()
164165
165166 print (f"Doing a step of size { step_size } at time { sim_time } " )
166- fmu .doStep (sim_time , step_size ) == fmi2OK , f"doStep returned with error , should have been return value: { fmi2OK } "
167+ fmu .doStep (sim_time , step_size ) == fmi2OK , f"doStep returned with error, should have been return value: { fmi2OK } "
167168 sim_time += step_size
168169
169-
170170 print ("Fetching evolved values" )
171- real_c = fmu .getReal ([vrs ["real_c" ]])[0 ]
172- integer_c = fmu .getInteger ([vrs ["integer_c" ]])[0 ]
173- boolean_c = fmu .getBoolean ([vrs ["boolean_c" ]])[0 ]
174- string_c = fmu .getString ([vrs ["string_c" ]])[0 ].decode ("utf-8" )
171+ reals = fmu .getReal ([vrs ["real_a" ], vrs ["real_b" ],vrs ["real_c" ]])
172+ integers = fmu .getInteger ([vrs ["integer_a" ], vrs ["integer_b" ], vrs ["integer_c" ]])
173+ booleans = fmu .getBoolean ([vrs ["boolean_a" ], vrs ["boolean_b" ], vrs ["boolean_c" ]])
174+ strings = fmu .getString ([vrs ["string_a" ], vrs ["string_b" ], vrs ["string_c" ]])
175+ strings = [string .decode ("utf-8" ) for string in strings ]
175176
176177 print ("Asserting evolved values" )
177- assert real_c == 3.0 , f"Evolved value real_c was { real_c } , should have been 0.0 "
178- assert integer_c == 3 , f"Evolved value integer_c was { integer_c } , should have been 0 "
179- assert boolean_c == True , f"Evolved value boolean_c was { boolean_c } , should have been True"
180- assert string_c == "Hello, World!" , f"Evolved value string_c was '{ string_c } ', should have been ' Hello, World!' "
178+ assert reals == [ 1.0 , 2.0 , 3.0 ] , f"Evolved value real_c was { reals } , should have been [1.0, 2.0, 3.0] "
179+ assert integers == [ 1 , 2 , 3 ] , f"Evolved value integer_c was { integers } , should have been [1, 2, 3] "
180+ assert booleans == [ True , False , True ], f"Evolved value boolean_c was { booleans } , should have been [ True, False, True] "
181+ assert strings == [ "Hello, " , " World!" , "Hello, World!" ], f"Evolved value string_c was '{ strings } ', should have been [ Hello, , World!, Hello, World!] "
181182
182183 print ("Rerolling FMU state" )
183- fmu .setFMUstate (state )
184+ fmu .setFMUstate (initial_state )
184185 print ("Resetting time" )
185186 sim_time = rerolled_time
186187
@@ -197,10 +198,11 @@ def inner(fmu, model_description):
197198 assert bools == [False , False , False ], f"Rerolled values were { bools } , should have been [False, False, False]"
198199 assert strings == ["" , "" , "" ], f"Rerolled values were { strings } , should have been ['', '', '']"
199200
200- print ("Will doStep and then reset FMU" )
201+ print ("Testing reset" )
202+ fmu .setFMUstate (updated_state )
201203 fmu .doStep (sim_time , step_size ) == fmi2OK , f"doStep returned with error, should have been return value: { fmi2OK } "
202204 sim_time += step_size
203-
205+
204206 assert fmu .reset () == fmi2OK , f"reset returned with error, should have been return value: { fmi2OK } "
205207 # setupExperiment and enterInitializationMode has to be called after reset()
206208 assert fmu .setupExperiment (startTime = start_time ) == fmi2OK , f"setupExperiment returned with error, should have been return value: { fmi2OK } "
@@ -212,17 +214,17 @@ def inner(fmu, model_description):
212214 integers = fmu .getInteger ([vrs ["integer_a" ], vrs ["integer_b" ], vrs ["integer_c" ]])
213215 bools = fmu .getBoolean ([vrs ["boolean_a" ], vrs ["boolean_b" ], vrs ["boolean_c" ]])
214216 strings = fmu .getString ([vrs ["string_a" ], vrs ["string_b" ], vrs ["string_c" ]])
215- # We need to decode strings from bytes to utf-8
216217 strings = [string .decode ("utf-8" ) for string in strings ]
217218
218219 print ("Asserting values after reset" )
219- assert reals == [0.0 , 0.0 , 0.0 ], f"Initially fetched values were { reals } , should have been [0.0, 0.0, 0.0]"
220+ assert reals == [0.0 , 0.0 , 0.0 ], f"Initially fetched values were { reals } , cshould have been [0.0, 0.0, 0.0]"
220221 assert integers == [0 , 0 , 0 ], f"Initially fetched values were { integers } , should have been [0, 0, 0]"
221222 assert bools == [False , False , False ], f"Initially fetched values were { bools } , should have been [False, False, False]"
222223 assert strings == ["" , "" , "" ], f"Initially fetched values were { strings } , should have been ['', '', '']"
223224
224- print (f"Test is done - freeing FMU state" )
225- fmu .freeFMUState (state )
225+ print (f"Test is done - freeing FMU states" )
226+ fmu .freeFMUState (initial_state )
227+ fmu .freeFMUState (updated_state )
226228 print ("FMU state freed successfully" )
227229 print ("fmi2_simulate: Test Complete" )
228230
0 commit comments