-
Notifications
You must be signed in to change notification settings - Fork 153
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
maint: improves
between.py
and length.py
- follows google's python style guide for docstrings - adds `flake8-docstrings` as dev dependency - update `README`'s workflow badge - improves `between.py` and `length.py` scripts - adapts associated test cases as well - makes `_extremes.py` a private module
- Loading branch information
Showing
16 changed files
with
442 additions
and
278 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
"""Test Extremes.""" | ||
# -*- coding: utf-8 -*- | ||
|
||
# standard | ||
from typing import Any | ||
|
||
# external | ||
import pytest | ||
|
||
# project | ||
from validators._extremes import AbsMax, AbsMin | ||
|
||
abs_max = AbsMax() | ||
abs_min = AbsMin() | ||
|
||
|
||
@pytest.mark.parametrize( | ||
("value",), | ||
[(None,), ("",), (12,), (abs_min,)], | ||
) | ||
def test_abs_max_is_greater_than_every_other_value(value: Any): | ||
"""Test if AbsMax is greater than every other value.""" | ||
assert value < abs_max | ||
assert abs_max > value | ||
|
||
|
||
def test_abs_max_is_not_greater_than_itself(): | ||
"""Test if AbsMax is not greater than itself.""" | ||
assert not (abs_max > abs_max) | ||
|
||
|
||
def test_other_comparison_methods_for_abs_max(): | ||
"""Test other comparison methods for AbsMax.""" | ||
assert abs_max <= abs_max | ||
assert abs_max == abs_max | ||
assert abs_max == abs_max | ||
|
||
|
||
@pytest.mark.parametrize( | ||
("value",), | ||
[(None,), ("",), (12,), (abs_max,)], | ||
) | ||
def test_abs_min_is_smaller_than_every_other_value(value: Any): | ||
"""Test if AbsMin is less than every other value.""" | ||
assert value > abs_min | ||
|
||
|
||
def test_abs_min_is_not_greater_than_itself(): | ||
"""Test if AbsMin is not less than itself.""" | ||
assert not (abs_min < abs_min) | ||
|
||
|
||
def test_other_comparison_methods_for_abs_min(): | ||
"""Test other comparison methods for AbsMin.""" | ||
assert abs_min <= abs_min | ||
assert abs_min == abs_min | ||
assert abs_min == abs_min |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,58 @@ | ||
"""Test Between.""" | ||
# -*- coding: utf-8 -*- | ||
|
||
# standard | ||
from datetime import datetime | ||
from typing import TypeVar | ||
|
||
# external | ||
import pytest | ||
|
||
import validators | ||
# project | ||
from validators import between, ValidationFailure | ||
|
||
|
||
T = TypeVar("T", int, float, str, datetime) | ||
|
||
@pytest.mark.parametrize(('value', 'min', 'max'), [ | ||
(12, 11, 13), | ||
(12, None, 14), | ||
(12, 11, None), | ||
(12, 12, 12) | ||
]) | ||
def test_returns_true_on_valid_range(value, min, max): | ||
assert validators.between(value, min=min, max=max) | ||
|
||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[(12, 11, 13), (12, None, 14), (12, 11, None), (12, 12, 12)], | ||
) | ||
def test_returns_true_on_valid_range(value: T, min_val: T, max_val: T) -> None: | ||
"""Test returns true on valid range.""" | ||
assert between(value, min_val=min_val, max_val=max_val) | ||
|
||
@pytest.mark.parametrize(('value', 'min', 'max'), [ | ||
(12, 13, 12), | ||
(12, None, None), | ||
]) | ||
def test_raises_assertion_error_for_invalid_args(value, min, max): | ||
|
||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[(12, 13, 12), (12, None, None)], | ||
) | ||
def test_raises_assertion_error_for_invalid_args(value: T, min_val: T, max_val: T) -> None: | ||
"""Test raises assertion error for invalid args.""" | ||
with pytest.raises(AssertionError): | ||
assert validators.between(value, min=min, max=max) | ||
assert between(value, min_val=min_val, max_val=max_val) | ||
|
||
|
||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[ | ||
(12, "13.5", datetime(1970, 1, 1)), | ||
("12", 20.5, "None"), | ||
(datetime(1970, 1, 1), 20, "string"), | ||
], | ||
) | ||
def test_raises_type_error_for_invalid_args(value: T, min_val: T, max_val: T) -> None: | ||
"""Test raises type error for invalid args.""" | ||
with pytest.raises(TypeError): | ||
assert between(value, min_val=min_val, max_val=max_val) | ||
|
||
|
||
@pytest.mark.parametrize(('value', 'min', 'max'), [ | ||
(12, 13, 14), | ||
(12, None, 11), | ||
(12, 13, None) | ||
]) | ||
def test_returns_failed_validation_on_invalid_range(value, min, max): | ||
result = validators.between(value, min=min, max=max) | ||
assert isinstance(result, validators.ValidationFailure) | ||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[(12, 13, 14), (12, None, 11), (12, 13, None)], | ||
) | ||
def test_returns_failed_validation_on_invalid_range(value: T, min_val: T, max_val: T) -> None: | ||
"""Test returns failed validation on invalid range.""" | ||
result = between(value, min_val=min_val, max_val=max_val) | ||
assert isinstance(result, ValidationFailure) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,36 @@ | ||
"""Test Length.""" | ||
# -*- coding: utf-8 -*- | ||
|
||
# external | ||
import pytest | ||
|
||
import validators | ||
# project | ||
from validators import length, ValidationFailure | ||
|
||
|
||
@pytest.mark.parametrize(('value', 'min', 'max'), [ | ||
('password', 2, 10), | ||
('password', None, 10), | ||
('password', 2, None), | ||
('password', 8, 8) | ||
]) | ||
def test_returns_true_on_valid_length(value, min, max): | ||
assert validators.length(value, min=min, max=max) | ||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[("password", 2, 10), ("password", 0, 10), ("password", 8, 8)], | ||
) | ||
def test_returns_true_on_valid_length(value: str, min_val: int, max_val: int): | ||
"""Test returns true on valid length.""" | ||
assert length(value, min_val=min_val, max_val=max_val) | ||
|
||
|
||
@pytest.mark.parametrize(('value', 'min', 'max'), [ | ||
('something', 13, 12), | ||
('something', -1, None), | ||
('something', -1, None), | ||
('something', -3, -2) | ||
]) | ||
def test_raises_assertion_error_for_invalid_args(value, min, max): | ||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[("something", 14, 12), ("something", -10, -20), ("something", 0, -2)], | ||
) | ||
def test_raises_assertion_error_for_invalid_args(value: str, min_val: int, max_val: int): | ||
"""Test raises assertion error for invalid args.""" | ||
with pytest.raises(AssertionError): | ||
assert validators.length(value, min=min, max=max) | ||
|
||
|
||
@pytest.mark.parametrize(('value', 'min', 'max'), [ | ||
('something', 13, 14), | ||
('something', None, 6), | ||
('something', 13, None) | ||
]) | ||
def test_returns_failed_validation_on_invalid_range(value, min, max): | ||
assert isinstance( | ||
validators.length(value, min=min, max=max), | ||
validators.ValidationFailure | ||
) | ||
assert length(value, min_val=min_val, max_val=max_val) | ||
|
||
|
||
@pytest.mark.parametrize( | ||
("value", "min_val", "max_val"), | ||
[("something", 13, 14), ("something", 0, 6), ("something", 14, 20)], | ||
) | ||
def test_returns_failed_validation_on_invalid_range(value: str, min_val: int, max_val: int): | ||
"""Test returns failed validation on invalid range.""" | ||
assert isinstance(length(value, min_val=min_val, max_val=max_val), ValidationFailure) |
Oops, something went wrong.