Skip to content

Commit 514b2c4

Browse files
committed
do not allow empty inputs
1 parent 29201d6 commit 514b2c4

File tree

6 files changed

+34
-23
lines changed

6 files changed

+34
-23
lines changed

tests/conftest.py

Whitespace-only changes.

tests/tendencies/periodic/test_periodic_base.py

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pytest
55
from pytest import approx
66

7+
from tests.utils import filter_kwargs
78
from waveform_editor.tendencies.constant import ConstantTendency
89
from waveform_editor.tendencies.periodic.periodic_base import PeriodicBaseTendency
910

@@ -56,13 +57,11 @@ def test_bounds(
5657
"""
5758
Test the base, amplitude, minimum and maximum values of the periodic base tendency
5859
"""
59-
tendency = PeriodicBaseTendency(
60-
user_duration=1,
61-
user_base=base,
62-
user_amplitude=amplitude,
63-
user_min=min,
64-
user_max=max,
60+
kwargs = filter_kwargs(
61+
user_base=base, user_amplitude=amplitude, user_min=min, user_max=max
6562
)
63+
64+
tendency = PeriodicBaseTendency(user_duration=1, **kwargs)
6665
if has_error:
6766
assert tendency.annotations
6867
else:
@@ -104,13 +103,10 @@ def test_bounds_prev(
104103
when the tendency has a previous tendency.
105104
"""
106105
prev_tendency = ConstantTendency(user_start=0, user_duration=1, user_value=8)
107-
tendency = PeriodicBaseTendency(
108-
user_duration=1,
109-
user_base=base,
110-
user_amplitude=amplitude,
111-
user_min=min,
112-
user_max=max,
106+
kwargs = filter_kwargs(
107+
user_base=base, user_amplitude=amplitude, user_min=min, user_max=max
113108
)
109+
tendency = PeriodicBaseTendency(user_duration=1, **kwargs)
114110
if has_error:
115111
assert tendency.annotations
116112
else:
@@ -151,13 +147,10 @@ def test_bounds_next(
151147
when the tendency has a next tendency.
152148
"""
153149
next_tendency = ConstantTendency(user_duration=1, user_value=8)
154-
tendency = PeriodicBaseTendency(
155-
user_duration=1,
156-
user_base=base,
157-
user_amplitude=amplitude,
158-
user_min=min,
159-
user_max=max,
150+
kwargs = filter_kwargs(
151+
user_base=base, user_amplitude=amplitude, user_min=min, user_max=max
160152
)
153+
tendency = PeriodicBaseTendency(user_duration=1, **kwargs)
161154
tendency.set_next_tendency(next_tendency)
162155
assert tendency.base == approx(expected_base)
163156
assert not tendency.annotations

tests/tendencies/test_base.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
from pytest import approx
33

4+
from tests.utils import filter_kwargs
45
from waveform_editor.tendencies.base import BaseTendency
56

67

@@ -31,7 +32,7 @@ def test_first_base_tendency(
3132
has_error,
3233
):
3334
"""Test validity of the created base tendency when it is the first tendency."""
34-
kwargs = dict(user_start=start, user_duration=duration, user_end=end)
35+
kwargs = filter_kwargs(user_start=start, user_duration=duration, user_end=end)
3536
base_tendency = BaseTendency(**kwargs)
3637

3738
assert base_tendency.start == approx(expected_start)
@@ -71,7 +72,7 @@ def test_second_base_tendency(
7172
):
7273
"""Test validity of the created base tendency when it is the second tendency."""
7374
prev_tendency = BaseTendency(user_start=0, user_end=10)
74-
kwargs = dict(user_start=start, user_duration=duration, user_end=end)
75+
kwargs = filter_kwargs(user_start=start, user_duration=duration, user_end=end)
7576
base_tendency = BaseTendency(**kwargs)
7677
base_tendency.set_previous_tendency(prev_tendency)
7778
prev_tendency.set_next_tendency(base_tendency)

tests/tendencies/test_linear.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import pytest
33
from pytest import approx
44

5+
from tests.utils import filter_kwargs
56
from waveform_editor.tendencies.linear import LinearTendency
67

78

@@ -41,9 +42,12 @@ def test_linear_tendency(
4142
duration, from_, to, rate, expected_from, expected_to, expected_rate, has_error
4243
):
4344
"""Test values of filled tendency."""
44-
tendency = LinearTendency(
45+
# Collect all parameters into a dictionary, **removing None values**
46+
kwargs = filter_kwargs(
4547
user_duration=duration, user_from=from_, user_to=to, user_rate=rate
4648
)
49+
50+
tendency = LinearTendency(**kwargs)
4751
if has_error:
4852
assert tendency.annotations
4953
else:
@@ -78,9 +82,10 @@ def test_linear_tendency_with_prev(
7882
):
7983
"""Test values of tendency that has a previous tendency."""
8084
prev_tendency = LinearTendency(user_duration=10, user_from=1, user_to=5)
81-
tendency = LinearTendency(
85+
kwargs = filter_kwargs(
8286
user_duration=duration, user_from=from_, user_to=to, user_rate=rate
8387
)
88+
tendency = LinearTendency(**kwargs)
8489
if has_error:
8590
assert tendency.annotations
8691
else:
@@ -118,9 +123,10 @@ def test_linear_tendency_with_next(
118123
next_tendency = LinearTendency(
119124
user_start=10, user_duration=10, user_from=5, user_to=10
120125
)
121-
tendency = LinearTendency(
126+
kwargs = filter_kwargs(
122127
user_duration=duration, user_from=from_, user_to=to, user_rate=rate
123128
)
129+
tendency = LinearTendency(**kwargs)
124130
if has_error:
125131
assert tendency.annotations
126132
else:

tests/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def filter_kwargs(**kwargs):
2+
"""Remove None values from keyword arguments."""
3+
return {k: v for k, v in kwargs.items() if v is not None}

waveform_editor/tendencies/base.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ def __init__(self, **kwargs):
8787
super().__init__()
8888
with param.parameterized.batch_call_watchers(self):
8989
for param_name, value in kwargs.items():
90+
if value is None:
91+
self.annotations.add(
92+
self.line_number,
93+
f"The value of {param_name} cannot be empty.\n"
94+
"It will be set to its default value.\n",
95+
is_warning=True,
96+
)
97+
9098
if param_name not in self.param:
9199
unknown_kwargs.append(param_name.replace("user_", ""))
92100
continue

0 commit comments

Comments
 (0)