diff options
author | Devaev Maxim <[email protected]> | 2020-11-23 23:51:26 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-11-23 23:51:26 +0300 |
commit | 9e92a403c05c387b194961e1e22e3cc121957843 (patch) | |
tree | 363f17f89f172719e91731969304ba4d8515578c /testenv/tests/validators/test_ugpio.py | |
parent | 3047114013451c7e6ba54050f550f3fd28433e89 (diff) |
refactoring
Diffstat (limited to 'testenv/tests/validators/test_ugpio.py')
-rw-r--r-- | testenv/tests/validators/test_ugpio.py | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/testenv/tests/validators/test_ugpio.py b/testenv/tests/validators/test_ugpio.py new file mode 100644 index 00000000..196763cf --- /dev/null +++ b/testenv/tests/validators/test_ugpio.py @@ -0,0 +1,114 @@ +# ========================================================================== # +# # +# KVMD - The main Pi-KVM daemon. # +# # +# Copyright (C) 2018 Maxim Devaev <[email protected]> # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see <https://www.gnu.org/licenses/>. # +# # +# ========================================================================== # + + +from typing import Callable +from typing import Any + +import pytest + +from kvmd.validators import ValidatorError +from kvmd.validators.ugpio import valid_ugpio_driver +from kvmd.validators.ugpio import valid_ugpio_channel +from kvmd.validators.ugpio import valid_ugpio_mode +from kvmd.validators.ugpio import valid_ugpio_view_table + +from kvmd.plugins.ugpio import UserGpioModes + + +# ===== [email protected]("validator", [valid_ugpio_driver, valid_ugpio_channel]) [email protected]("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() + + [email protected]("validator", [valid_ugpio_driver, valid_ugpio_channel]) [email protected]("arg", [ + "ัะตัั", + "-molestia", + "te~st", + "-", + "-foo_bar", + "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)) + + +# ===== [email protected]("arg", ["foo", " bar", " baz "]) +def test_ok__valid_ugpio_driver_variants(arg: Any) -> None: + value = valid_ugpio_driver(arg, set(["foo", "bar", "baz"])) + assert type(value) == str # pylint: disable=unidiomatic-typecheck + assert value == str(arg).strip() + + [email protected]("arg", ["BAR", " ", "", None]) +def test_fail__valid_ugpio_driver_variants(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_ugpio_driver(arg, set(["foo", "bar", "baz"]))) + + +# ===== [email protected]("arg", ["Input ", " OUTPUT "]) +def test_ok__valid_ugpio_mode(arg: Any) -> None: + assert valid_ugpio_mode(arg, UserGpioModes.ALL) == arg.strip().lower() + + [email protected]("arg", ["test", "", None]) +def test_fail__valid_ugpio_mode(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_ugpio_mode(arg, UserGpioModes.ALL)) + + +# ===== [email protected]("arg,retval", [ + ([], []), + ({}, []), + ([[]], [[]]), + ([{}], [[]]), + ([[[]]], [["[]"]]), + ("", []), + ("ab", [["a"], ["b"]]), + ([[1, 2], [None], "ab", {}, [3, 4]], [["1", "2"], ["None"], ["a", "b"], [], ["3", "4"]]), +]) +def test_ok__valid_ugpio_view_table(arg: Any, retval: Any) -> None: + assert valid_ugpio_view_table(arg) == retval + + [email protected]("arg", [None, [None], 1]) +def test_fail__valid_ugpio_view_table(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_ugpio_view_table(arg)) |