-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest.py
131 lines (92 loc) · 3.32 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import unittest
from main import (
find_digits,
filter_zero_digits,
get_divisible_digits
)
# ---------------------------- Tests ---------------------------- #
"""
Tests for problem: findDigits
Script: main.py
"""
VALUE: int = 1024
DIGITS: list[int] = list(map(int, str(VALUE)))
class TestFindDigits(unittest.TestCase):
def test_that_find_digits_returns_int(self) -> None:
""" Test that function has valid and expected output type"""
# Given
expected = type(int)
# When
output = find_digits(VALUE)
actual = type(output)
# Then
self.assertIsInstance(actual, expected)
def test_find_digits_invalid_dividined_argument_exception(self) -> None:
"""
Test that function raises a Type error
if argument passed to dividended paramater
is not an integer
"""
# Given
invalid_argument: float = 1024.87654
expected = 'Required type (int) for argument: dividened'
# When
with self.assertRaises(TypeError) as exp_context:
find_digits(invalid_argument)
actual = str(exp_context.exception)
# Then
self.assertEqual(actual, expected)
class TestFilterOutZeroDigits(unittest.TestCase):
def test_that_filter_zero_digits_returns_list_of_int(self) -> None:
""" Test that function has valid and expected output type"""
# Given
expected = type(list)
# When
output = filter_zero_digits(DIGITS)
actual = type(output)
# Then
self.assertIsInstance(actual, expected)
self.assertIsInstance(output[0], int)
def test_that_filter_zero_digits_filters_out_zero_digits(self) -> None:
"""
Test that function receives a list of digits,
filters out all zero digits from given parameter,
returns new list with no zero digits
"""
# Given
unfiltered_list: list[int] = [1, 2, 0, 3, 0, 4, 5, 0]
expected: list[int] = [1, 2, 3, 4, 5]
# When
actual = filter_zero_digits(unfiltered_list)
# Then
self.assertNotEqual(unfiltered_list, actual)
self.assertNotIn(0, actual)
self.assertEqual(actual, expected)
class TestGetDivisibleDigits(unittest.TestCase):
def test_that_get_divisible_digits_returns_list_of_int(self) -> None:
""" Test that function has valid and expected output type"""
# Given
expected = type(int)
# When
arguement = filter_zero_digits(DIGITS)
output = get_divisible_digits(VALUE, arguement)
actual = type(output)
# Then
self.assertIsInstance(actual, expected)
self.assertIsInstance(output[0], int)
def test_that_get_divisible_digits_returns_valid_list_of_divisors(self) -> None:
""""
Test that function returns a list
of divisible integers giving a
remainder of 0
"""
# Given
expected: list[int] = [1, 2, 4] # Using the constant literal: VALUE
# When
filtered_digits = filter_zero_digits(DIGITS)
actual = get_divisible_digits(VALUE, filtered_digits)
# Then
self.assertAlmostEqual(actual, filtered_digits)
self.assertEqual(actual, expected)
if __name__ == "__main__":
unittest.main()