mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-07 18:10:55 +00:00
133 lines
4.2 KiB
Python
133 lines
4.2 KiB
Python
|
# -*- 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 *
|
||
|
|
||
|
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(x.__str__(),"(0,0,0,0,0,1)")
|
||
|
def test_size(self):
|
||
|
"""
|
||
|
test for size()-method
|
||
|
"""
|
||
|
x = Vector([1,2,3,4])
|
||
|
self.assertEqual(x.size(),4)
|
||
|
def test_euclidLength(self):
|
||
|
"""
|
||
|
test for the eulidean length
|
||
|
"""
|
||
|
x = Vector([1,2])
|
||
|
self.assertAlmostEqual(x.eulidLength(),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((x*3.0).__str__(),"(3.0,6.0,9.0)")
|
||
|
self.assertEqual((a*b),0)
|
||
|
def test_zeroVector(self):
|
||
|
"""
|
||
|
test for the global function zeroVector(...)
|
||
|
"""
|
||
|
self.assertTrue(zeroVector(10).__str__().count("0") == 10)
|
||
|
def test_unitBasisVector(self):
|
||
|
"""
|
||
|
test for the global function unitBasisVector(...)
|
||
|
"""
|
||
|
self.assertEqual(unitBasisVector(3,1).__str__(),"(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(axpy(2,x,y).__str__(),"(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(x.__str__(),y.__str__())
|
||
|
def test_changeComponent(self):
|
||
|
"""
|
||
|
test for the changeComponent(...)-method
|
||
|
"""
|
||
|
x = Vector([1,0,0])
|
||
|
x.changeComponent(0,0)
|
||
|
x.changeComponent(1,1)
|
||
|
self.assertEqual(x.__str__(),"(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",A.__str__())
|
||
|
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)",(A*x).__str__())
|
||
|
self.assertEqual("|2,4,6|\n|8,10,12|\n|14,16,18|\n",(A*2).__str__())
|
||
|
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",A.__str__())
|
||
|
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",(A+B).__str__())
|
||
|
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",(A-B).__str__())
|
||
|
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',squareZeroMatrix(5).__str__())
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|