diff options
author | Frederick Muriuki Muriithi | 2024-02-12 12:10:44 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2024-02-12 18:17:42 +0300 |
commit | 68696caeedde3636aff34db048a4490fbf51edf3 (patch) | |
tree | 8a7fd555aa6b867043a6e4cf662102a2a0d004fa /tests/qc | |
parent | abb55d7e03bf207ebf00b4c71f1bbdd8f58a0ad3 (diff) | |
download | gn-uploader-68696caeedde3636aff34db048a4490fbf51edf3.tar.gz |
Build generic decimal places checker.
Diffstat (limited to 'tests/qc')
-rw-r--r-- | tests/qc/test_checks.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/qc/test_checks.py b/tests/qc/test_checks.py new file mode 100644 index 0000000..e91cd19 --- /dev/null +++ b/tests/qc/test_checks.py @@ -0,0 +1,50 @@ +"""Test that the checks run correct.""" +import pytest +from hypothesis import given +from hypothesis import strategies as st + +from quality_control.checks import decimal_places_pattern + +@pytest.mark.unit_test +@given(numstr=st.from_regex(r"^[0-9]+$", fullmatch=True)) +def test_matches_whole_numbers(numstr): + """ + GIVEN: 'numstr' is an arbitrary string that represents a whole number, + e.g. 45342 + WHEN: We test for a match made by 'decimal_places_pattern' + THEN: The string in 'numstr' always matches. + """ + assert bool(decimal_places_pattern(3, 6).search(numstr)) + +@pytest.mark.unit_test +@given(numstr=st.from_regex(r"^0+\.?0*$", fullmatch=True)) +def test_matches_zeroes(numstr): + """ + GIVEN: 'numstr' is an arbitrary string that represents zero, + e.g. 0, 00, 000, 0.0, 00.00, 000.0 + WHEN: We test for a match made by 'decimal_places_pattern' + THEN: The string in 'numstr' always matches. + """ + assert bool(decimal_places_pattern(3, 6).search(numstr)) + +@pytest.mark.unit_test +@given(numstr=st.from_regex(r"^[0-9]+\.[1-9]{1,5}$", fullmatch=True)) +def test_does_not_match_fewer_decimal_places(numstr): + """ + GIVEN: 'numstr' is an arbitrary string that represents a non-whole decimal + number with fewer decimal places than allowed + WHEN: We test for a match made by 'decimal_places_pattern' + THEN: The string in 'numstr' always fails to match + """ + assert decimal_places_pattern(6).match(numstr) is None + +@pytest.mark.unit_test +@given(numstr=st.from_regex(r"^[0-9]+\.[1-9]{7}$", fullmatch=True)) +def test_does_not_match_more_decimal_places(numstr): + """ + GIVEN: 'numstr' is an arbitrary string that represents a non-whole decimal + number with more decimal places than allowed + WHEN: We test for a match made by 'decimal_places_pattern' + THEN: The string in 'numstr' always fails to match + """ + assert decimal_places_pattern(3, 6).match(numstr) is None |