@@ -35,3 +35,28 @@ def test_composition(dt1, dt2, dt3, op, type):
3535 else :
3636 sys3 = op (sys1 , sys2 )
3737 assert sys3 .dt == dt3
38+
39+
40+ @pytest .mark .parametrize ("dt" , [None , 0 , 0.1 ])
41+ def test_composition_override (dt ):
42+ # Define the system
43+ A , B , C , D = [[1 , 1 ], [0 , 1 ]], [[0 ], [1 ]], [[1 , 0 ]], 0
44+ sys1 = ct .ss (A , B , C , D , None , inputs = 'u1' , outputs = 'y1' )
45+ sys2 = ct .ss (A , B , C , D , None , inputs = 'y1' , outputs = 'y2' )
46+
47+ # Show that we can override the type
48+ sys3 = ct .interconnect ([sys1 , sys2 ], inputs = 'u1' , outputs = 'y2' , dt = dt )
49+ assert sys3 .dt == dt
50+
51+ # Overriding the type with an inconsistent type generates an error
52+ sys1 = ct .StateSpace (A , B , C , D , 0.1 , inputs = 'u1' , outputs = 'y1' )
53+ if dt != 0.1 and dt is not None :
54+ with pytest .raises (ValueError , match = "incompatible timebases" ):
55+ sys3 = ct .interconnect (
56+ [sys1 , sys2 ], inputs = 'u1' , outputs = 'y2' , dt = dt )
57+
58+ sys1 = ct .StateSpace (A , B , C , D , 0 , inputs = 'u1' , outputs = 'y1' )
59+ if dt != 0 and dt is not None :
60+ with pytest .raises (ValueError , match = "incompatible timebases" ):
61+ sys3 = ct .interconnect (
62+ [sys1 , sys2 ], inputs = 'u1' , outputs = 'y2' , dt = dt )
0 commit comments