-
Notifications
You must be signed in to change notification settings - Fork 15
/
unit-tests.py
140 lines (110 loc) · 4.61 KB
/
unit-tests.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
132
133
134
135
136
137
138
139
140
import unittest
import numpy as np
from matrix_operations import get_diagonal
#TODO: Consider writing a test that times the execution of the operations
class TestNumpyDiagonalOperations(unittest.TestCase):
"""
This class implements the unit tests for the numpy built-in diagonal-related
matrix operations.
In this class we test for a few different shapes of matrices, as well as the
case of an empty matrix.
For detailed info on how it works, check out the unittest package:
https://docs.python.org/3/library/unittest.html
"""
def test_get_diagonal_square_matrix(self):
"""
Test get_diagonal on a square matrix.
"""
# Create an arbitrary square matrix
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# this is the value that we expect the function to return
expected_output = np.array([1, 5, 9])
# assert that the actual outcome matches the expected outcome
np.testing.assert_array_equal(get_diagonal(matrix, False), expected_output)
def test_get_diagonal_rectangular_matrix(self):
"""
Test get_diagonal on a rectangular (non-square) matrix.
"""
# Create a matrix
matrix = np.array([[10, 20, 30],
[40, 50, 60]])
# Define an execpted value
expected_output = np.array([10, 50])
# Assert that they are equivalent
np.testing.assert_array_equal(get_diagonal(matrix, False), expected_output)
def test_get_diagonal_empty_matrix(self):
"""
Test get_diagonal on an empty matrix.
"""
# Make an empty matrix (no elements)
matrix = np.array([[]])
# Create our expected output
expected_output = np.array([])
# Assert that they are equal
np.testing.assert_array_equal(get_diagonal(matrix, False), expected_output)
def test_get_diagonal_single_element_matrix(self):
"""
Test get_diagonal on a 1x1 matrix.
"""
# Create a matrix with a single value
matrix = np.array([[42]])
# Create an expectation value
expected_output = np.array([42])
# Assert their equality
np.testing.assert_array_equal(get_diagonal(matrix, False), expected_output)
class TestCustomDiagonalOperations(unittest.TestCase):
"""
This class implements the unit tests for the custom implementation of the
diagonal-related matrix operations.
In this class we test for a few different shapes of matrices, as well as the
case of an empty matrix.
For detailed info on how it works, check out the unittest package:
https://docs.python.org/3/library/unittest.html
"""
def test_get_diagonal_square_matrix(self):
"""
Test get_diagonal on a square matrix.
"""
# Create an arbitrary square matrix
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# this is the value that we expect the function to return
expected_output = np.array([1, 5, 9])
# assert that the actual outcome matches the expected outcome
np.testing.assert_array_equal(get_diagonal(matrix, True), expected_output)
def test_get_diagonal_rectangular_matrix(self):
"""
Test get_diagonal on a rectangular (non-square) matrix.
"""
# Create a matrix
matrix = np.array([[10, 20, 30],
[40, 50, 60]])
# Define an execpted value
expected_output = np.array([10, 50])
# Assert that they are equivalent
np.testing.assert_array_equal(get_diagonal(matrix, True), expected_output)
def test_get_diagonal_empty_matrix(self):
"""
Test get_diagonal on an empty matrix.
"""
# Make an empty matrix (no elements)
matrix = np.array([[]])
# Create our expected output
expected_output = np.array([])
# Assert that they are equal
np.testing.assert_array_equal(get_diagonal(matrix, True), expected_output)
def test_get_diagonal_single_element_matrix(self):
"""
Test get_diagonal on a 1x1 matrix.
"""
# Create a matrix with a single value
matrix = np.array([[42]])
# Create an expectation value
expected_output = np.array([42])
# Assert their equality
np.testing.assert_array_equal(get_diagonal(matrix, True), expected_output)
if __name__ == '__main__': # if this file was executed directly
unittest.main() # then run the unit tests defined