Skip to content

Commit a007fcc

Browse files
authored
Merge pull request #221 from murrayrm/test_timebase
TST: add unit tests for timebase conversions
2 parents 11bf14c + 03d6e05 commit a007fcc

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

control/tests/discrete_test.py

+64
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,70 @@ def test_timebase(self):
9393
self.assertEqual(timebase(self.siso_tf3d), True);
9494
self.assertEqual(timebase(self.siso_tf3d, strict=False), 1);
9595

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+
96160
def testisdtime(self):
97161
# Constant
98162
self.assertEqual(isdtime(1), True);

0 commit comments

Comments
 (0)