diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index 164630d..89b3659 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -6,3 +6,5 @@ jobs: steps: - uses: actions/checkout@v4 - uses: astral-sh/ruff-action@v3 + - run: ruff check . + diff --git a/src/bin_search.py b/src/bin_search.py index 713abfc..0f28a9b 100644 --- a/src/bin_search.py +++ b/src/bin_search.py @@ -1,6 +1,8 @@ def binSearch(xs: list[int], x: int): + if type(x) != int: + return "wrong type" left, right = 0, len(xs) - 1 - while left < right: + while left <= right: mid = (left + right) // 2 if xs[mid] == x: return mid diff --git a/src/checksum.py b/src/checksum.py index 74b4fb0..613636a 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -1,12 +1,23 @@ def modulo11Checksum(ISBNNumber: str): - digits = [int(char) for char in ISBNNumber if char.isdigit()] + digits = [] + for char in ISBNNumber: + if char.isdigit(): + digits.append(int(char)) + elif (len(digits) == 9) and char == 'X': + digits.append(10) + elif char != '-' and char != ' ': + return False + + + if len(digits) != 10: + return False checkDigit = digits[-1] total = 0 for i in range(len(digits) - 1): - weight = 10 + weight = 10 - i digit = digits[i] total += digit * weight diff --git a/test/test_bin_searh.py b/test/test_bin_searh.py index d18d85b..0b70656 100644 --- a/test/test_bin_searh.py +++ b/test/test_bin_searh.py @@ -11,3 +11,9 @@ def test_start(): def test_not_in_list(): assert binSearch([1, 2, 3, 4], 5) == -1 + +def test_wrong_type(): + assert binSearch([1,2,3,4,5], 'a') == 'wrong type' + +def test_end(): + assert binSearch([1,2,3,4,5],5) == 4 \ No newline at end of file diff --git a/test/test_checksum.py b/test/test_checksum.py index f64a64c..9b86077 100644 --- a/test/test_checksum.py +++ b/test/test_checksum.py @@ -1,9 +1,10 @@ from src.checksum import modulo11Checksum -def test_good(): - assert modulo11Checksum("2-266-11156-8") - - def test_bad(): - assert not modulo11Checksum("2-266-11156-3") + assert not modulo11Checksum("2-266-11156-8") + assert not modulo11Checksum("1-563-9873X-X") + +def test_good(): + assert modulo11Checksum("2-266-11156-3") + assert modulo11Checksum("1-563-68745-X")