@@ -93,6 +93,70 @@ def test_timebase(self):
93
93
self .assertEqual (timebase (self .siso_tf3d ), True );
94
94
self .assertEqual (timebase (self .siso_tf3d , strict = False ), 1 );
95
95
96
+ def test_timebase_conversions (self ):
97
+ '''Check to make sure timebases transfer properly'''
98
+ tf1 = TransferFunction ([1 ,1 ],[1 ,2 ,3 ]) # unspecified
99
+ tf2 = TransferFunction ([1 ,1 ],[1 ,2 ,3 ], 0 ) # cont time
100
+ tf3 = TransferFunction ([1 ,1 ],[1 ,2 ,3 ], True ) # dtime, unspec
101
+ tf4 = TransferFunction ([1 ,1 ],[1 ,2 ,3 ], 1 ) # dtime, dt=1
102
+
103
+ # Make sure unspecified timebase is converted correctly
104
+ self .assertEqual (timebase (tf1 * tf1 ), timebase (tf1 ))
105
+ self .assertEqual (timebase (tf1 * tf2 ), timebase (tf2 ))
106
+ self .assertEqual (timebase (tf1 * tf3 ), timebase (tf3 ))
107
+ self .assertEqual (timebase (tf1 * tf4 ), timebase (tf4 ))
108
+ self .assertEqual (timebase (tf2 * tf1 ), timebase (tf2 ))
109
+ self .assertEqual (timebase (tf3 * tf1 ), timebase (tf3 ))
110
+ self .assertEqual (timebase (tf4 * tf1 ), timebase (tf4 ))
111
+ self .assertEqual (timebase (tf1 + tf1 ), timebase (tf1 ))
112
+ self .assertEqual (timebase (tf1 + tf2 ), timebase (tf2 ))
113
+ self .assertEqual (timebase (tf1 + tf3 ), timebase (tf3 ))
114
+ self .assertEqual (timebase (tf1 + tf4 ), timebase (tf4 ))
115
+ self .assertEqual (timebase (feedback (tf1 , tf1 )), timebase (tf1 ))
116
+ self .assertEqual (timebase (feedback (tf1 , tf2 )), timebase (tf2 ))
117
+ self .assertEqual (timebase (feedback (tf1 , tf3 )), timebase (tf3 ))
118
+ self .assertEqual (timebase (feedback (tf1 , tf4 )), timebase (tf4 ))
119
+
120
+ # Make sure discrete time without sampling is converted correctly
121
+ self .assertEqual (timebase (tf3 * tf3 ), timebase (tf3 ))
122
+ self .assertEqual (timebase (tf3 * tf4 ), timebase (tf4 ))
123
+ self .assertEqual (timebase (tf3 + tf3 ), timebase (tf3 ))
124
+ self .assertEqual (timebase (tf3 + tf3 ), timebase (tf4 ))
125
+ self .assertEqual (timebase (feedback (tf3 , tf3 )), timebase (tf3 ))
126
+ self .assertEqual (timebase (feedback (tf3 , tf4 )), timebase (tf4 ))
127
+
128
+ # Make sure all other combinations are errors
129
+ try :
130
+ tf2 * tf3 # Error; incompatible timebases
131
+ raise ValueError ("incompatible operation allowed" )
132
+ except ValueError :
133
+ pass
134
+ try :
135
+ tf2 * tf4 # Error; incompatible timebases
136
+ raise ValueError ("incompatible operation allowed" )
137
+ except ValueError :
138
+ pass
139
+ try :
140
+ tf2 + tf3 # Error; incompatible timebases
141
+ raise ValueError ("incompatible operation allowed" )
142
+ except ValueError :
143
+ pass
144
+ try :
145
+ tf2 + tf4 # Error; incompatible timebases
146
+ raise ValueError ("incompatible operation allowed" )
147
+ except ValueError :
148
+ pass
149
+ try :
150
+ feedback (tf2 , tf3 ) # Error; incompatible timebases
151
+ raise ValueError ("incompatible operation allowed" )
152
+ except ValueError :
153
+ pass
154
+ try :
155
+ feedback (tf2 , tf4 ) # Error; incompatible timebases
156
+ raise ValueError ("incompatible operation allowed" )
157
+ except ValueError :
158
+ pass
159
+
96
160
def testisdtime (self ):
97
161
# Constant
98
162
self .assertEqual (isdtime (1 ), True );
0 commit comments