@@ -2314,7 +2314,8 @@ def test_signal_indexing():
23142314 'long_state_1' , 'long_state_2' , 'long_state_3' ]},
23152315 r"[\n]name='.*', states=\[.*\],[\n]outputs=3, inputs=2\)" , r"dt" ),
23162316])
2317- def test_system_repr (fcn , spec , expected , missing ):
2317+ @pytest .mark .parametrize ("format" , ['iosys' , 'loadable' ])
2318+ def test_loadable_system_repr (fcn , spec , expected , missing , format ):
23182319 spec ['outputs' ] = spec .get ('outputs' , 3 )
23192320 spec ['inputs' ] = spec .get ('inputs' , 2 )
23202321 if fcn is ct .ss :
@@ -2327,11 +2328,31 @@ def test_system_repr(fcn, spec, expected, missing):
23272328 sys = fcn (sys , omega , name = spec .get ('name' ))
23282329 case ct .tf :
23292330 sys = fcn (sys , name = spec .get ('name' ))
2330-
23312331 assert sys .shape == (sys .noutputs , sys .ninputs )
23322332
2333+ # Construct the 'iosys' format
2334+ iosys_expected = f"<{ sys .__class__ .__name__ } :{ sys .name } :" \
2335+ f"{ sys .input_labels } ->{ sys .output_labels } >"
2336+
2337+ # Make sure the default format is OK
2338+ out = repr (sys )
2339+ if ct .config .defaults ['iosys.repr_format' ] == 'iosys' :
2340+ assert out == iosys_expected
2341+ else :
2342+ assert re .search (expected , out ) != None
2343+
2344+ # Now set the format to the given type and make sure things look right
2345+ sys .repr_format = format
23332346 out = repr (sys )
2334- assert re .search (expected , out ) != None
2347+ if format == 'loadable' :
2348+ assert re .search (expected , out ) != None
23352349
2336- if missing is not None :
2337- assert re .search (missing , out ) is None
2350+ if missing is not None :
2351+ assert re .search (missing , out ) is None
2352+
2353+ # Make sure we can change the default format back to 'iosys'
2354+ sys .repr_format = None
2355+
2356+ # Test 'iosys', either set explicitly or via config.defaults
2357+ out = repr (sys )
2358+ assert out == iosys_expected
0 commit comments