@@ -2339,3 +2339,54 @@ def test_signal_prefixing(fcn):
23392339 assert sys .output_labels == ['yy[0]' ]
23402340 if sys .nstates :
23412341 assert sys .state_labels == ['xx[0]' , 'xx[1]' ]
2342+
2343+ @slycotonly
2344+ @pytest .mark .parametrize ("fcn, spec, expected, missing" , [
2345+ (ct .ss , {}, "\n states=4, outputs=3, inputs=2" , r"dt|name" ),
2346+ (ct .tf , {}, "\n outputs=3, inputs=2" , r"dt|name|states" ),
2347+ (ct .frd , {}, "\n outputs=3, inputs=2" , r"dt|states|name" ),
2348+ (ct .ss , {'dt' : 0.1 }, ".*\n dt=0.1,\n states=4, outputs=3, inputs=2" , r"name" ),
2349+ (ct .tf , {'dt' : 0.1 }, ".*\n dt=0.1,\n outputs=3, inputs=2" , r"name|states" ),
2350+ (ct .frd , {'dt' : 0.1 },
2351+ ".*\n dt=0.1,\n outputs=3, inputs=2" , r"name|states" ),
2352+ (ct .ss , {'dt' : True }, "\n dt=True,\n states=4, outputs=3, inputs=2" , r"name" ),
2353+ (ct .ss , {'dt' : None }, "\n dt=None,\n states=4, outputs=3, inputs=2" , r"name" ),
2354+ (ct .ss , {'dt' : 0 }, "\n states=4, outputs=3, inputs=2" , r"dt|name" ),
2355+ (ct .ss , {'name' : 'mysys' }, "\n name='mysys'," , r"dt" ),
2356+ (ct .tf , {'name' : 'mysys' }, "\n name='mysys'," , r"dt|states" ),
2357+ (ct .frd , {'name' : 'mysys' }, "\n name='mysys'," , r"dt|states" ),
2358+ (ct .ss , {'inputs' : ['u1' ]},
2359+ r"[\n]states=4, outputs=3, inputs=\['u1'\]" , r"dt|name" ),
2360+ (ct .tf , {'inputs' : ['u1' ]},
2361+ r"[\n]outputs=3, inputs=\['u1'\]" , r"dt|name" ),
2362+ (ct .frd , {'inputs' : ['u1' ], 'name' : 'sampled' },
2363+ r"[\n]name='sampled', outputs=3, inputs=\['u1'\]" , r"dt" ),
2364+ (ct .ss , {'outputs' : ['y1' ]},
2365+ r"[\n]states=4, outputs=\['y1'\], inputs=2" , r"dt|name" ),
2366+ (ct .ss , {'name' : 'mysys' , 'inputs' : ['u1' ]},
2367+ r"[\n]name='mysys', states=4, outputs=3, inputs=\['u1'\]" , r"dt" ),
2368+ (ct .ss , {'name' : 'mysys' , 'states' : [
2369+ 'long_state_1' , 'long_state_2' , 'long_state_3' ]},
2370+ r"[\n]name='.*', states=\[.*\],[\n]outputs=3, inputs=2\)" , r"dt" ),
2371+ ])
2372+ def test_system_repr (fcn , spec , expected , missing ):
2373+ spec ['outputs' ] = spec .get ('outputs' , 3 )
2374+ spec ['inputs' ] = spec .get ('inputs' , 2 )
2375+ if fcn is ct .ss :
2376+ spec ['states' ] = spec .get ('states' , 4 )
2377+
2378+ sys = ct .rss (** spec )
2379+ match fcn :
2380+ case ct .frd :
2381+ omega = np .logspace (- 1 , 1 )
2382+ sys = fcn (sys , omega , name = spec .get ('name' ))
2383+ case ct .tf :
2384+ sys = fcn (sys , name = spec .get ('name' ))
2385+
2386+ assert sys .shape == (sys .noutputs , sys .ninputs )
2387+
2388+ out = repr (sys )
2389+ assert re .search (expected , out ) != None
2390+
2391+ if missing is not None :
2392+ assert re .search (missing , out ) is None
0 commit comments