aboutsummaryrefslogtreecommitdiff
path: root/tests/qc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/qc')
-rw-r--r--tests/qc/test_checks.py50
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