forked from MIT-Emerging-Talent/ET6-practice-code-review
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
95 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on XX XX XX | ||
A module for checking to see if an integer is even. | ||
@author: Luyando .E. Chitindi | ||
""" | ||
|
||
|
||
def is_even(number: int) -> bool: | ||
""" | ||
This checks if an integer is even. | ||
Parameters: | ||
number: int, the number to check | ||
Returns -> bool: | ||
True if the number is even, false otherwise. | ||
Raises: | ||
AssertionError: if the input is not an integer | ||
Example: | ||
>>> is_even(4) | ||
True | ||
>>> is_even(3) | ||
False | ||
>>> is_even(0) | ||
True | ||
>>> is_even("hello") | ||
Traceback (most recent call last): | ||
... | ||
AssertionError: Input must be an integer. | ||
""" | ||
assert isinstance(number, int), "Input must be an integer" | ||
if number % 2 == 0: | ||
return True | ||
return False |
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,55 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: utf-8 -*- | ||
import unittest | ||
from solutions.is_even import is_even | ||
|
||
|
||
class TestIsEven(unittest.TestCase): | ||
"""Test the is_even function""" | ||
|
||
def test_even_number(self): | ||
"""It should evaluate 4 to true""" | ||
actual = is_even(4) | ||
expected = True | ||
self.assertEqual(actual, expected) | ||
|
||
def test_odd_number(self): | ||
"""It should evaluate 3 to False""" | ||
actual = is_even(3) | ||
expected = False | ||
self.assertEqual(actual, expected) | ||
|
||
def test_zero(self): | ||
"""It should evaluate 0 to True""" | ||
actual = is_even(0) | ||
expected = True | ||
self.assertEqual(actual, expected) | ||
|
||
def test_negative_even_number(self): | ||
"""It should evaluate -2 to True""" | ||
actual = is_even(-2) | ||
expected = True | ||
self.assertEqual(actual, expected) | ||
|
||
def test_negative_odd_number(self): | ||
"""It should evaluate -3 to False""" | ||
actual = is_even(-3) | ||
expected = False | ||
self.assertEqual(actual, expected) | ||
|
||
def test_non_integer_input(self): | ||
"""It should raise an assertion error if the argument is not an integer""" | ||
with self.assertRaises(AssertionError): | ||
is_even(3.5) | ||
|
||
with self.assertRaises(AssertionError): | ||
is_even("string") | ||
|
||
def test_less_than_0(self): | ||
"""It should raise an assertion error if the argument is less than 0""" | ||
with self.assertRaises(AssertionError): | ||
is_even(-2.5) | ||
|
||
|
||
if __name__ == "__main__": | ||
unittest.main() |