fix error when an IOSystem is combined with a TransferFunction system · python-control/python-control@3729027
@@ -230,3 +230,25 @@ def test_string_inputoutput():
230230231231P_s2 = ct.interconnect([P1_iosys, P2_iosys], inputs=['u1'], output='y2')
232232assert P_s2.output_index == {'y2' : 0}
233+234+def test_linear_interconnect():
235+tf_ctrl = ct.tf(1, (10.1, 1), inputs='e', outputs='u')
236+tf_plant = ct.tf(1, (10.1, 1), inputs='u', outputs='y')
237+ss_ctrl = ct.ss(1, 2, 1, 2, inputs='e', outputs='u')
238+ss_plant = ct.ss(1, 2, 1, 2, inputs='u', outputs='y')
239+nl_ctrl = ct.NonlinearIOSystem(
240+lambda t, x, u, params: x*x,
241+lambda t, x, u, params: u*x, states=1, inputs='e', outputs='u')
242+nl_plant = ct.NonlinearIOSystem(
243+lambda t, x, u, params: x*x,
244+lambda t, x, u, params: u*x, states=1, inputs='u', outputs='y')
245+246+assert isinstance(ct.interconnect((tf_ctrl, tf_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
247+assert isinstance(ct.interconnect((ss_ctrl, ss_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
248+assert isinstance(ct.interconnect((tf_ctrl, ss_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
249+assert isinstance(ct.interconnect((ss_ctrl, tf_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
250+251+assert ~isinstance(ct.interconnect((nl_ctrl, ss_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
252+assert ~isinstance(ct.interconnect((nl_ctrl, tf_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
253+assert ~isinstance(ct.interconnect((ss_ctrl, nl_plant), inputs='e', outputs='y'), ct.LinearIOSystem)
254+assert ~isinstance(ct.interconnect((tf_ctrl, nl_plant), inputs='e', outputs='y'), ct.LinearIOSystem)