From 560c2a8fe5db8702555d93109dfcd3ec2d51d2e3 Mon Sep 17 00:00:00 2001 From: Codecalec Date: Thu, 24 Oct 2019 11:52:54 +0200 Subject: [PATCH 1/6] Fixes in methods and tests --- linear_algebra/src/lib.py | 4 ++-- linear_algebra/src/tests.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 2f7a1775371f..15d176cc6392 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -119,7 +119,7 @@ def __sub__(self, other): size = len(self) if size == len(other): result = [self.__components[i] - other.component(i) for i in range(size)] - return result + return Vector(result) else: # error case raise Exception("must have the same size") @@ -130,7 +130,7 @@ def __mul__(self, other): """ if isinstance(other, float) or isinstance(other, int): ans = [c * other for c in self.__components] - return ans + return Vector(ans) elif isinstance(other, Vector) and (len(self) == len(other)): size = len(self) summe = 0 diff --git a/linear_algebra/src/tests.py b/linear_algebra/src/tests.py index 4123a7c9e663..6dd28c78e20e 100644 --- a/linear_algebra/src/tests.py +++ b/linear_algebra/src/tests.py @@ -45,7 +45,7 @@ def test_euclidLength(self): test for the eulidean length """ x = Vector([1, 2]) - self.assertAlmostEqual(x.eulidLength(), 2.236, 3) + self.assertAlmostEqual(x.euclidLength(), 2.236, 3) def test_add(self): """ From 01954af7e0181ef3be99df4e64fb5c528e2d50f3 Mon Sep 17 00:00:00 2001 From: Codecalec Date: Thu, 24 Oct 2019 12:17:54 +0200 Subject: [PATCH 2/6] Renamed tests.py to test_linear_algebra.py --- linear_algebra/src/{tests.py => test_linear_algebra.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename linear_algebra/src/{tests.py => test_linear_algebra.py} (100%) diff --git a/linear_algebra/src/tests.py b/linear_algebra/src/test_linear_algebra.py similarity index 100% rename from linear_algebra/src/tests.py rename to linear_algebra/src/test_linear_algebra.py From f11ed8720ab0cec8acfef668703791ce896b2b64 Mon Sep 17 00:00:00 2001 From: Codecalec Date: Thu, 24 Oct 2019 12:23:29 +0200 Subject: [PATCH 3/6] removed force_test() --- linear_algebra/src/tests.py | 160 ++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 linear_algebra/src/tests.py diff --git a/linear_algebra/src/tests.py b/linear_algebra/src/tests.py new file mode 100644 index 000000000000..fb456bf3b8d7 --- /dev/null +++ b/linear_algebra/src/tests.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Feb 26 15:40:07 2018 + +@author: Christian Bender +@license: MIT-license + +This file contains the test-suite for the linear algebra library. +""" + +import unittest +from lib import Matrix, Vector, axpy, squareZeroMatrix, unitBasisVector, zeroVector + + +class Test(unittest.TestCase): + def test_component(self): + """ + test for method component + """ + x = Vector([1, 2, 3]) + self.assertEqual(x.component(0), 1) + self.assertEqual(x.component(2), 3) + try: + y = Vector() + self.assertTrue(False) + except: + self.assertTrue(True) + + def test_str(self): + """ + test for toString() method + """ + x = Vector([0, 0, 0, 0, 0, 1]) + self.assertEqual(str(x), "(0,0,0,0,0,1)") + + def test_size(self): + """ + test for size()-method + """ + x = Vector([1, 2, 3, 4]) + self.assertEqual(len(x), 4) + + def test_euclidLength(self): + """ + test for the eulidean length + """ + x = Vector([1, 2]) + self.assertAlmostEqual(x.euclidLength(), 2.236, 3) + + def test_add(self): + """ + test for + operator + """ + x = Vector([1, 2, 3]) + y = Vector([1, 1, 1]) + self.assertEqual((x + y).component(0), 2) + self.assertEqual((x + y).component(1), 3) + self.assertEqual((x + y).component(2), 4) + + def test_sub(self): + """ + test for - operator + """ + x = Vector([1, 2, 3]) + y = Vector([1, 1, 1]) + self.assertEqual((x - y).component(0), 0) + self.assertEqual((x - y).component(1), 1) + self.assertEqual((x - y).component(2), 2) + + def test_mul(self): + """ + test for * operator + """ + x = Vector([1, 2, 3]) + a = Vector([2, -1, 4]) # for test of dot-product + b = Vector([1, -2, -1]) + self.assertEqual(str(x * 3.0), "(3.0,6.0,9.0)") + self.assertEqual((a * b), 0) + + def test_zeroVector(self): + """ + test for the global function zeroVector(...) + """ + self.assertTrue(str(zeroVector(10)).count("0") == 10) + + def test_unitBasisVector(self): + """ + test for the global function unitBasisVector(...) + """ + self.assertEqual(str(unitBasisVector(3, 1)), "(0,1,0)") + + def test_axpy(self): + """ + test for the global function axpy(...) (operation) + """ + x = Vector([1, 2, 3]) + y = Vector([1, 0, 1]) + self.assertEqual(str(axpy(2, x, y)), "(3,4,7)") + + def test_copy(self): + """ + test for the copy()-method + """ + x = Vector([1, 0, 0, 0, 0, 0]) + y = x.copy() + self.assertEqual(str(x), str(y)) + + def test_changeComponent(self): + """ + test for the changeComponent(...)-method + """ + x = Vector([1, 0, 0]) + x.changeComponent(0, 0) + x.changeComponent(1, 1) + self.assertEqual(str(x), "(0,1,0)") + + def test_str_matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + self.assertEqual("|1,2,3|\n|2,4,5|\n|6,7,8|\n", str(A)) + + def test_determinate(self): + """ + test for determinate() + """ + A = Matrix([[1, 1, 4, 5], [3, 3, 3, 2], [5, 1, 9, 0], [9, 7, 7, 9]], 4, 4) + self.assertEqual(-376, A.determinate()) + + def test__mul__matrix(self): + A = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 3, 3) + x = Vector([1, 2, 3]) + self.assertEqual("(14,32,50)", str(A * x)) + self.assertEqual("|2,4,6|\n|8,10,12|\n|14,16,18|\n", str(A * 2)) + + def test_changeComponent_matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + A.changeComponent(0, 2, 5) + self.assertEqual("|1,2,5|\n|2,4,5|\n|6,7,8|\n", str(A)) + + def test_component_matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + self.assertEqual(7, A.component(2, 1), 0.01) + + def test__add__matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) + self.assertEqual("|2,4,10|\n|4,8,10|\n|12,14,18|\n", str(A + B)) + + def test__sub__matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) + self.assertEqual("|0,0,-4|\n|0,0,0|\n|0,0,-2|\n", str(A - B)) + + def test_squareZeroMatrix(self): + self.assertEqual( + "|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|" + "\n|0,0,0,0,0|\n", + str(squareZeroMatrix(5)), + ) + +if __name__ == "__main__": + unittest.main() From 4d4f81fc287ad069c9f72b223ffa12b3dc395b54 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Thu, 24 Oct 2019 12:28:25 +0200 Subject: [PATCH 4/6] Delete test_linear_algebra.py --- linear_algebra/src/test_linear_algebra.py | 168 ---------------------- 1 file changed, 168 deletions(-) delete mode 100644 linear_algebra/src/test_linear_algebra.py diff --git a/linear_algebra/src/test_linear_algebra.py b/linear_algebra/src/test_linear_algebra.py deleted file mode 100644 index 6dd28c78e20e..000000000000 --- a/linear_algebra/src/test_linear_algebra.py +++ /dev/null @@ -1,168 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Mon Feb 26 15:40:07 2018 - -@author: Christian Bender -@license: MIT-license - -This file contains the test-suite for the linear algebra library. -""" - -import unittest -from lib import Matrix, Vector, axpy, squareZeroMatrix, unitBasisVector, zeroVector - - -class Test(unittest.TestCase): - def test_component(self): - """ - test for method component - """ - x = Vector([1, 2, 3]) - self.assertEqual(x.component(0), 1) - self.assertEqual(x.component(2), 3) - try: - y = Vector() - self.assertTrue(False) - except: - self.assertTrue(True) - - def test_str(self): - """ - test for toString() method - """ - x = Vector([0, 0, 0, 0, 0, 1]) - self.assertEqual(str(x), "(0,0,0,0,0,1)") - - def test_size(self): - """ - test for size()-method - """ - x = Vector([1, 2, 3, 4]) - self.assertEqual(len(x), 4) - - def test_euclidLength(self): - """ - test for the eulidean length - """ - x = Vector([1, 2]) - self.assertAlmostEqual(x.euclidLength(), 2.236, 3) - - def test_add(self): - """ - test for + operator - """ - x = Vector([1, 2, 3]) - y = Vector([1, 1, 1]) - self.assertEqual((x + y).component(0), 2) - self.assertEqual((x + y).component(1), 3) - self.assertEqual((x + y).component(2), 4) - - def test_sub(self): - """ - test for - operator - """ - x = Vector([1, 2, 3]) - y = Vector([1, 1, 1]) - self.assertEqual((x - y).component(0), 0) - self.assertEqual((x - y).component(1), 1) - self.assertEqual((x - y).component(2), 2) - - def test_mul(self): - """ - test for * operator - """ - x = Vector([1, 2, 3]) - a = Vector([2, -1, 4]) # for test of dot-product - b = Vector([1, -2, -1]) - self.assertEqual(str(x * 3.0), "(3.0,6.0,9.0)") - self.assertEqual((a * b), 0) - - def test_zeroVector(self): - """ - test for the global function zeroVector(...) - """ - self.assertTrue(str(zeroVector(10)).count("0") == 10) - - def test_unitBasisVector(self): - """ - test for the global function unitBasisVector(...) - """ - self.assertEqual(str(unitBasisVector(3, 1)), "(0,1,0)") - - def test_axpy(self): - """ - test for the global function axpy(...) (operation) - """ - x = Vector([1, 2, 3]) - y = Vector([1, 0, 1]) - self.assertEqual(str(axpy(2, x, y)), "(3,4,7)") - - def test_copy(self): - """ - test for the copy()-method - """ - x = Vector([1, 0, 0, 0, 0, 0]) - y = x.copy() - self.assertEqual(str(x), str(y)) - - def test_changeComponent(self): - """ - test for the changeComponent(...)-method - """ - x = Vector([1, 0, 0]) - x.changeComponent(0, 0) - x.changeComponent(1, 1) - self.assertEqual(str(x), "(0,1,0)") - - def test_str_matrix(self): - A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) - self.assertEqual("|1,2,3|\n|2,4,5|\n|6,7,8|\n", str(A)) - - def test_determinate(self): - """ - test for determinate() - """ - A = Matrix([[1, 1, 4, 5], [3, 3, 3, 2], [5, 1, 9, 0], [9, 7, 7, 9]], 4, 4) - self.assertEqual(-376, A.determinate()) - - def test__mul__matrix(self): - A = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 3, 3) - x = Vector([1, 2, 3]) - self.assertEqual("(14,32,50)", str(A * x)) - self.assertEqual("|2,4,6|\n|8,10,12|\n|14,16,18|\n", str(A * 2)) - - def test_changeComponent_matrix(self): - A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) - A.changeComponent(0, 2, 5) - self.assertEqual("|1,2,5|\n|2,4,5|\n|6,7,8|\n", str(A)) - - def test_component_matrix(self): - A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) - self.assertEqual(7, A.component(2, 1), 0.01) - - def test__add__matrix(self): - A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) - B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) - self.assertEqual("|2,4,10|\n|4,8,10|\n|12,14,18|\n", str(A + B)) - - def test__sub__matrix(self): - A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) - B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) - self.assertEqual("|0,0,-4|\n|0,0,0|\n|0,0,-2|\n", str(A - B)) - - def test_squareZeroMatrix(self): - self.assertEqual( - "|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|" + "\n|0,0,0,0,0|\n", - str(squareZeroMatrix(5)), - ) - -def force_test() -> None: - """ - This will ensure that pytest runs the unit tests above. - To explore https://github.com/TheAlgorithms/Python/pull/1124 uncomment the line below. - >>> # unittest.main() - """ - pass - -if __name__ == "__main__": - unittest.main() From 29333e489c8c465e0409f6fafa4327f828a99ad4 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Thu, 24 Oct 2019 12:29:01 +0200 Subject: [PATCH 5/6] Format code with psf/black --- linear_algebra/src/tests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/linear_algebra/src/tests.py b/linear_algebra/src/tests.py index fb456bf3b8d7..f8e7db7de6cc 100644 --- a/linear_algebra/src/tests.py +++ b/linear_algebra/src/tests.py @@ -155,6 +155,7 @@ def test_squareZeroMatrix(self): "|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|" + "\n|0,0,0,0,0|\n", str(squareZeroMatrix(5)), ) - + + if __name__ == "__main__": unittest.main() From 9378d70c72155f9451ecd618a116245182776911 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Thu, 24 Oct 2019 12:34:22 +0200 Subject: [PATCH 6/6] Rename tests.py to test_linear_algebra.py --- linear_algebra/src/{tests.py => test_linear_algebra.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename linear_algebra/src/{tests.py => test_linear_algebra.py} (100%) diff --git a/linear_algebra/src/tests.py b/linear_algebra/src/test_linear_algebra.py similarity index 100% rename from linear_algebra/src/tests.py rename to linear_algebra/src/test_linear_algebra.py