Implement Unit Testing for fancymath #8

Merged
TimDiller merged 17 commits from unit_tests into main 2025-10-24 17:10:59 +00:00
6 changed files with 102 additions and 0 deletions
Showing only changes of commit 5850743394 - Show all commits

View File

@@ -36,6 +36,14 @@ class Vector(object):
z = self.z + other.z z = self.z + other.z
return self.__class__(x, y, z) return self.__class__(x, y, z)
def __mul__(self, other):
if not isinstance(other, Vector):
Review

Do we want to handle scalar multiplication here? If so we should implement __rmul__ and __imul__.

Do we want to handle scalar multiplication here? If so we should implement `__rmul__` and `__imul__`.
return NotImplemented
x = self.y * other.z - self.z * other.y
y = self.z * other.x - self.x * other.z
z = self.x * other.y - self.y * other.x
return self.__class__(x, y, z)
if __name__ == "__main__": if __name__ == "__main__":
v1 = Vector(3, 4, 0) v1 = Vector(3, 4, 0)

View File

@@ -4,6 +4,28 @@ from fancymath.vector import Vector
class TestVector(unittest.TestCase): class TestVector(unittest.TestCase):
def test_cross_product(self):
# given
v1 = Vector(1, 2, 3)
v2 = Vector(3, 2, 1)
# when
v3 = v1 * v2
# then
self.assertIsInstance(v3, Vector)
self.assertEqual(v3.x, -4)
self.assertEqual(v3.y, 8)
self.assertEqual(v3.z, -4)
def test_cross_product_failure(self):
v1 = Vector(1, 2, 3)
v2 = (3, 2, 1)
with self.assertRaises(TypeError):
v1 * v2
def test_add_vector(self): def test_add_vector(self):
v1 = Vector(1, 2, 3) v1 = Vector(1, 2, 3)
v2 = Vector(-3, -2, -1) v2 = Vector(-3, -2, -1)
@@ -17,4 +39,17 @@ class TestVector(unittest.TestCase):
v3 = Vector(1, -2, 2) v3 = Vector(1, -2, 2)
self.assertEqual(v1.abs(), 0) self.assertEqual(v1.abs(), 0)
self.assertEqual(v2.abs(), 3) self.assertEqual(v2.abs(), 3)
self.assertEqual(v2.abs(), v3.abs()) self.assertEqual(v2.abs(), v3.abs())
def test_dot_failure(self):
with self.assertRaises(ValueError):
v1 = Vector(1, 2, 3)
v1.dot(3)
def test_dot_product(self):
v1 = Vector(1, 2, 3)
v2 = Vector(-3, -2, -1)
v3 = v1.dot(v2)
self.assertEqual(v3,v1.x * v2.x + v1.y * v2.y + v1.z * v2.z)
vzero = Vector(0, 0, 0)
self.assertEqual(v1.dot(vzero),0)