improved tvect test coverage · python-control/python-control@abca69d

@@ -50,7 +50,7 @@ def sys221(self):

5050

D221 = [[1., -1.]]

5151

return StateSpace(A222, B222, C221, D221)

525253-

def test_sisotool(self, sys, sysdt, sys222, sys221):

53+

def test_sisotool(self, sys):

5454

sisotool(sys, Hz=False)

5555

fig = plt.gcf()

5656

ax_mag, ax_rlocus, ax_phase, ax_step = fig.axes[:4]

@@ -122,18 +122,46 @@ def test_sisotool(self, sys, sysdt, sys222, sys221):

122122

assert_array_almost_equal(

123123

ax_step.lines[0].get_data()[1][:10], step_response_moved, 4)

124124125+

def test_sisotool_tvect(self, sys):

125126

# test supply tvect

126-

sisotool(sys, tvect=np.arange(0, 1, .1))

127+

tvect = np.linspace(0, 1, 10)

128+

sisotool(sys, tvect=tvect)

129+

fig = plt.gcf()

130+

ax_rlocus, ax_step = fig.axes[1], fig.axes[3]

131+132+

# Move the rootlocus to another point and confirm same tvect

133+

event = type('test', (object,), {'xdata': 2.31206868287,

134+

'ydata': 15.5983051046,

135+

'inaxes': ax_rlocus.axes})()

136+

_RLClickDispatcher(event=event, sys=sys, fig=fig,

137+

ax_rlocus=ax_rlocus, sisotool=True, plotstr='-',

138+

bode_plot_params=dict(), tvect=tvect)

139+

assert_array_almost_equal(tvect, ax_step.lines[0].get_data()[0])

140+141+

def test_sisotool_tvect_dt(self, sysdt):

142+

# test supply tvect

143+

tvect = np.linspace(0, 1, 10)

144+

sisotool(sysdt, tvect=tvect)

145+

fig = plt.gcf()

146+

ax_rlocus, ax_step = fig.axes[1], fig.axes[3]

127147128-

# test discrete-time

129-

sisotool(sysdt, tvect=5)

148+

# Move the rootlocus to another point and confirm same tvect

149+

event = type('test', (object,), {'xdata': 2.31206868287,

150+

'ydata': 15.5983051046,

151+

'inaxes': ax_rlocus.axes})()

152+

_RLClickDispatcher(event=event, sys=sysdt, fig=fig,

153+

ax_rlocus=ax_rlocus, sisotool=True, plotstr='-',

154+

bode_plot_params=dict(), tvect=tvect)

155+

assert_array_almost_equal(tvect, ax_step.lines[0].get_data()[0])

130156131-

# test MIMO compatibility

132-

# sys must be siso or 2 input, 2 output

157+

def test_sisotool_mimo(self, sys222, sys221):

158+

# a 2x2 should not raise an error:

159+

sisotool(sys222)

160+161+

# but 2 input, 1 output should

133162

with pytest.raises(ControlMIMONotImplemented):

134163

sisotool(sys221)

135-

# does not raise an error:

136-

sisotool(sys222)

164+137165138166139167