Skip to content

Commit 8b29e45

Browse files
committed
make frd timebase duplication testing consistent + unit tests
1 parent f25e625 commit 8b29e45

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

control/frdata.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,12 @@ def __init__(self, *args, **kwargs):
135135
#
136136
if len(args) == 3:
137137
# Discrete time transfer function
138+
dt = args[-1]
138139
if 'dt' in kwargs:
139-
raise TypeError(
140-
"timebase specified as positional argument and keyword")
141-
kwargs['dt'] = args.pop()
140+
warn("received multiple dt arguments, "
141+
"using positional arg dt = %s" % dt)
142+
kwargs['dt'] = dt
143+
args = args[:-1]
142144

143145
if len(args) == 2:
144146
if not isinstance(args[0], FRD) and isinstance(args[0], LTI):

control/tests/timebase_test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,12 @@ def test_composition_override(dt):
119119
def test_default(fcn, args, kwargs, expected):
120120
sys = fcn(*args, **kwargs)
121121
assert sys.dt == expected
122+
123+
# Some commands allow dt via extra argument
124+
if fcn in [ct.ss, ct.tf, ct.zpk, ct.frd] and kwargs.get('dt'):
125+
sys = fcn(*args, kwargs['dt'])
126+
assert sys.dt == expected
127+
128+
# Make sure an error is generated if dt is redundant
129+
with pytest.warns(UserWarning, match="received multiple dt"):
130+
sys = fcn(*args, kwargs['dt'], **kwargs)

0 commit comments

Comments
 (0)