Skip to content

Commit ed7d872

Browse files
committed
Added ValueErrors
1 parent 2d9945e commit ed7d872

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

codonPython/nhsNumberGenerator.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
def nhsNumberGenerator(to_generate: int, random_state: int = None)->list:
55
"""
6-
Generates random NHS number(s) compliant with modulus 11 checks recorded
6+
Generates up to 1M random NHS number(s) compliant with modulus 11 checks recorded
77
in the data dictonary.
88
https://www.datadictionary.nhs.uk/data_dictionary/attributes/n/nhs/nhs_number_de.asp?shownav=1
99
@@ -12,7 +12,7 @@ def nhsNumberGenerator(to_generate: int, random_state: int = None)->list:
1212
to_generate : int
1313
number of NHS numbers to generate
1414
random_state : int, default : None
15-
Optional seed for random number generation, for testing and reproducability.
15+
Optional seed for random number generation, for testing and reproducibility.
1616
1717
Returns
1818
----------
@@ -27,7 +27,13 @@ def nhsNumberGenerator(to_generate: int, random_state: int = None)->list:
2727

2828
if random_state:
2929
random.seed(random_state)
30-
30+
if not isinstance(to_generate, int) :
31+
raise ValueError("Please input a positive integer to generate numbers.")
32+
if to_generate > 1000000 :
33+
raise ValueError("More than one million values requested")
34+
if to_generate < 0:
35+
raise ValueError("Please input a postitive integer to generate numbers.")
36+
3137
generated = []
3238
while len(generated) < to_generate:
3339
# Random 9 digit number starting with non-zero digit
@@ -41,3 +47,7 @@ def nhsNumberGenerator(to_generate: int, random_state: int = None)->list:
4147
number = int(str(number) + "0")
4248
generated.append(number)
4349
return generated
50+
51+
import numpy as np
52+
nhsNumberGenerator(np.inf)
53+
nhsNumberGenerator(4.2)

codonPython/tests/nhsNumberGenerator_test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,12 @@
1010
])
1111
def test_nhsNumberGenerator_BAU(to_generate, random_state, expected):
1212
assert expected == nhsNumberGenerator(to_generate, random_state=random_state)
13+
14+
@pytest.mark.parametrize("to_generate", [
15+
4.2,
16+
1000001,
17+
-1
18+
])
19+
def test_nhsNumberGenerator_valueErrors(to_generate):
20+
with pytest.raises(ValueError):
21+
nhsNumberGenerator(to_generate)

0 commit comments

Comments
 (0)