ytdl-sub/tests/unit/script/functions/test_numeric_functions.py
Jesse Bannon c46de048ca
[FEATURE] %range function (#1405)
Add `%range` function, equivalent to Python's `range`.
2025-12-31 09:06:08 -08:00

90 lines
2.9 KiB
Python

import pytest
from unit.script.conftest import single_variable_output
class TestNumericFunctions:
@pytest.mark.parametrize(
"values, expected_output", [("1, 2, 3", 6), ("1", 1), ("-1, -2, -3", -6), ("1.1, 1.2", 2.3)]
)
def test_add(self, values: str, expected_output: int):
output = single_variable_output(f"{{%add({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output", [("1, 2, 3", -4), ("1", 1), ("-1, -2, -3", 4), ("1.5, 2.5", -1)]
)
def test_sub(self, values: str, expected_output: int):
output = single_variable_output(f"{{%sub({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output",
[("1, 2, 3", 6), ("1", 1), ("-1, -2, -3", -6), ("1.5, 2.5", 3.75)],
)
def test_mul(self, values: str, expected_output: int):
output = single_variable_output(f"{{%mul({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output", [("2, 2", 1), ("10, 5", 2), ("4.5, 0.5", 9), ("-3.5, -2", 1.75)]
)
def test_div(self, values: str, expected_output: int):
output = single_variable_output(f"{{%div({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output",
[
("8, 3", 2),
("1, 1", 0),
],
)
def test_mod(self, values: str, expected_output: int):
output = single_variable_output(f"{{%mod({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output",
[
("8, 3, 0.3, 0.2, 1.4, 99.9", 99.9),
("1, 1, 0, 1", 1),
],
)
def test_max(self, values: str, expected_output: int):
output = single_variable_output(f"{{%max({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output",
[
("8, 3, 0.3, 0.2, 1.4, 99.9", 0.2),
("1, 1, 0, 1", 0),
],
)
def test_min(self, values: str, expected_output: int):
output = single_variable_output(f"{{%min({values})}}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output",
[
("2, 2", 2**2),
("9, 0.5", 9**0.5),
("4.4, 2.2", 4.4**2.2),
],
)
def test_pow(self, values: str, expected_output: float):
output = single_variable_output(f"{{ %pow({values}) }}")
assert output == expected_output
@pytest.mark.parametrize(
"values, expected_output",
[
("5", [0, 1, 2, 3, 4]),
("5, 1", [1, 2, 3, 4]),
("5, 1, 2", [1, 3]),
],
)
def test_range(self, values: str, expected_output: float):
output = single_variable_output(f"{{ %range({values}) }}")
assert output == expected_output