This commit is contained in:
Devaev Maxim 2020-09-09 05:23:37 +03:00
parent 2211124ecb
commit a9a6f477bc
3 changed files with 53 additions and 5 deletions

View File

@ -84,8 +84,8 @@ from ..validators.kvm import valid_stream_resolution
from ..validators.kvm import valid_hid_key
from ..validators.kvm import valid_hid_mouse_move
from ..validators.kvm import valid_ugpio_driver
from ..validators.kvm import valid_ugpio_mode
from ..validators.kvm import valid_ugpio_channel
from ..validators.kvm import valid_ugpio_mode
from ..validators.kvm import valid_ugpio_view_table
from ..validators.hw import valid_gpio_pin

View File

@ -111,15 +111,15 @@ def valid_ugpio_driver(arg: Any, variants: Optional[Set[str]]=None) -> str:
return arg
def valid_ugpio_mode(arg: Any) -> str:
return check_string_in_list(arg, "GPIO mode", ["input", "output"])
def valid_ugpio_channel(arg: Any) -> str:
name = "GPIO channel"
return check_len(check_re_match(arg, name, r"^[a-zA-Z_][a-zA-Z0-9_-]*$"), name, 255)
def valid_ugpio_mode(arg: Any) -> str:
return check_string_in_list(arg, "GPIO mode", ["input", "output"])
def valid_ugpio_view_table(arg: Any) -> List[List[str]]:
try:
return [list(map(str, row)) for row in list(arg)]

View File

@ -20,6 +20,7 @@
# ========================================================================== #
from typing import Callable
from typing import Any
import pytest
@ -38,6 +39,9 @@ from kvmd.validators.kvm import valid_hid_key
from kvmd.validators.kvm import valid_hid_mouse_move
from kvmd.validators.kvm import valid_hid_mouse_button
from kvmd.validators.kvm import valid_hid_mouse_wheel
from kvmd.validators.kvm import valid_ugpio_driver
from kvmd.validators.kvm import valid_ugpio_channel
from kvmd.validators.kvm import valid_ugpio_mode
# =====
@ -197,3 +201,47 @@ def test_ok__valid_hid_mouse_wheel__p200() -> None:
def test_fail__valid_hid_mouse_wheel(arg: Any) -> None:
with pytest.raises(ValidatorError):
print(valid_hid_mouse_wheel(arg))
# =====
@pytest.mark.parametrize("validator", [valid_ugpio_driver, valid_ugpio_channel])
@pytest.mark.parametrize("arg", [
"test-",
"glados",
"test",
"_",
"_foo_bar_",
" aix",
"a" * 255,
])
def test_ok__valid_ugpio_item(validator: Callable[[Any], str], arg: Any) -> None:
assert validator(arg) == arg.strip()
@pytest.mark.parametrize("validator", [valid_ugpio_driver, valid_ugpio_channel])
@pytest.mark.parametrize("arg", [
"тест",
"-molestia",
"te~st",
"-",
"-foo_bar",
"a" * 256,
" ",
"",
None,
])
def test_fail__valid_ugpio_item(validator: Callable[[Any], str], arg: Any) -> None:
with pytest.raises(ValidatorError):
print(validator(arg))
# =====
@pytest.mark.parametrize("arg", ["Input ", " OUTPUT "])
def test_ok__valid_ugpio_mode(arg: Any) -> None:
assert valid_ugpio_mode(arg) == arg.strip().lower()
@pytest.mark.parametrize("arg", ["test", "", None])
def test_fail__valid_ugpio_mode(arg: Any) -> None:
with pytest.raises(ValidatorError):
print(valid_ugpio_mode(arg))