def test___eq__(self): """ """ self.assertTrue(self.v == Vector(1, 2, 3)) self.assertTrue(self.v == (1, 2, 3)) self.assertTrue(self.v != Vector(1, 2, 4)) self.assertTrue(self.v == Vector(1, 2, 3.00000000001)) self.assertTrue(self.v != Vector(1, 2, 3.00000000010))
def test___mul__2(self): """ """ v1 = Vector(1, 2, 3) v2 = Vector(4, 5, 6) self.assertEqual(v1 * v2, 1 * 4 + 2 * 5 + 3 * 6) self.assertEqual( v1 * v2, v1.magnitude * v2.magnitude * np.cos(np.radians(v1.get_angle(v2))))
def test___matmul__(self): """ """ v1 = Vector(1, 2, 3) v2 = Vector(4, 5, 6) v = v1 @ v2 self.assertTrue( abs(v.magnitude - (v1.magnitude * v2.magnitude * np.sin(np.radians(v1.get_angle(v2))))) < 10**-PRECISION)
def test_unit(self): """ """ u = self.v.unit self.assertEqual(u.get_angle(self.v), 0) self.assertEqual(u.magnitude, 1) self.assertEqual(Vector(0, 0, 0).unit, None)
def test_translate2(self): """ """ p = Point(1, 2, 3) v = Vector(*(2, 4, 6)) p = p.translate(v) self.assertEqual(p.x, 3) self.assertEqual(p.y, 6) self.assertEqual(p.z, 9)
def test___truediv__(self): """ """ v1 = Vector(1.5, 3, 4.5) v2 = v1 / 3 self.assertEqual(v2.x, 0.5) self.assertEqual(v2.y, 1.0) self.assertEqual(v2.z, 1.5) self.assertEqual(v2.magnitude, v1.magnitude / 3)
def test___mul__1(self): """ """ v1 = Vector(1, 2, 3) v2 = v1 * 3 self.assertEqual(v2.x, 3) self.assertEqual(v2.y, 6) self.assertEqual(v2.z, 9) self.assertEqual(v2.magnitude, v1.magnitude * 3)
def test___sub__(self): """ """ v = self.v - Vector(3, 2, 1) self.assertEqual(type(v), Vector) self.assertEqual(v.x, -2) self.assertEqual(v.y, 0) self.assertEqual(v.z, 2) v = self.v - (3, 2, 1) self.assertEqual(type(v), Vector) self.assertEqual(v.x, -2) self.assertEqual(v.y, 0) self.assertEqual(v.z, 2)
def test___add__(self): """ """ v = self.v + Vector(1, 2, 3) self.assertEqual(type(v), Vector) self.assertEqual(v.x, 2) self.assertEqual(v.y, 4) self.assertEqual(v.z, 6) v = self.v + (1, 2, 3) self.assertEqual(type(v), Vector) self.assertEqual(v.x, 2) self.assertEqual(v.y, 4) self.assertEqual(v.z, 6)
def test_angle(self): """ """ v1 = Vector(1, 0, 0) v2 = Vector(0, 1, 0) self.assertTrue(abs(v1.get_angle(v2) - 90) < 10**-PRECISION) v1 = Vector(1, 0, 0) v2 = Vector(2, 0, 0) self.assertTrue(abs(v1.get_angle(v2) - 0) < 10**-PRECISION) v1 = Vector(1, 0, 0) v2 = Vector(1, 1, 0) self.assertTrue(abs(v1.get_angle(v2) - 45) < 10**-PRECISION) a = Vector(0, 0, 0).get_angle((1, 1, 1)) self.assertEqual(a, None) a = Vector(1, 1, 1).get_angle((0, 0, 0)) self.assertEqual(a, None)
def test_magnitude(self): """ """ m = Vector(1, 1, 1).magnitude self.assertTrue(is_number(m)) self.assertEqual(m, np.sqrt(3))
class TestVector(unittest.TestCase): """ """ v = Vector(1, 2, 3) def test_properties(self): """ """ self.assertEqual(self.v.x, 1) self.assertEqual(self.v.y, 2) self.assertEqual(self.v.z, 3) def test___getitem__(self): """ """ x, y, z = self.v self.assertEqual(x, 1) self.assertEqual(y, 2) self.assertEqual(z, 3) def test___eq__(self): """ """ self.assertTrue(self.v == Vector(1, 2, 3)) self.assertTrue(self.v == (1, 2, 3)) self.assertTrue(self.v != Vector(1, 2, 4)) self.assertTrue(self.v == Vector(1, 2, 3.00000000001)) self.assertTrue(self.v != Vector(1, 2, 3.00000000010)) def test___add__(self): """ """ v = self.v + Vector(1, 2, 3) self.assertEqual(type(v), Vector) self.assertEqual(v.x, 2) self.assertEqual(v.y, 4) self.assertEqual(v.z, 6) v = self.v + (1, 2, 3) self.assertEqual(type(v), Vector) self.assertEqual(v.x, 2) self.assertEqual(v.y, 4) self.assertEqual(v.z, 6) def test___sub__(self): """ """ v = self.v - Vector(3, 2, 1) self.assertEqual(type(v), Vector) self.assertEqual(v.x, -2) self.assertEqual(v.y, 0) self.assertEqual(v.z, 2) v = self.v - (3, 2, 1) self.assertEqual(type(v), Vector) self.assertEqual(v.x, -2) self.assertEqual(v.y, 0) self.assertEqual(v.z, 2) def test___mul__1(self): """ """ v1 = Vector(1, 2, 3) v2 = v1 * 3 self.assertEqual(v2.x, 3) self.assertEqual(v2.y, 6) self.assertEqual(v2.z, 9) self.assertEqual(v2.magnitude, v1.magnitude * 3) def test___mul__2(self): """ """ v1 = Vector(1, 2, 3) v2 = Vector(4, 5, 6) self.assertEqual(v1 * v2, 1 * 4 + 2 * 5 + 3 * 6) self.assertEqual( v1 * v2, v1.magnitude * v2.magnitude * np.cos(np.radians(v1.get_angle(v2)))) def test___truediv__(self): """ """ v1 = Vector(1.5, 3, 4.5) v2 = v1 / 3 self.assertEqual(v2.x, 0.5) self.assertEqual(v2.y, 1.0) self.assertEqual(v2.z, 1.5) self.assertEqual(v2.magnitude, v1.magnitude / 3) def test___matmul__(self): """ """ v1 = Vector(1, 2, 3) v2 = Vector(4, 5, 6) v = v1 @ v2 self.assertTrue( abs(v.magnitude - (v1.magnitude * v2.magnitude * np.sin(np.radians(v1.get_angle(v2))))) < 10**-PRECISION) def test___pos__(self): """ """ v = +self.v self.assertEqual(type(v), Vector) self.assertEqual(v.x, +self.v.x) self.assertEqual(v.y, +self.v.y) self.assertEqual(v.z, +self.v.z) def test___neg__(self): """ """ v = -self.v self.assertEqual(type(v), Vector) self.assertEqual(v.x, -self.v.x) self.assertEqual(v.y, -self.v.y) self.assertEqual(v.z, -self.v.z) def test_row(self): """ """ m = self.v.row self.assertEqual(type(m), Matrix) self.assertEqual(m.order, (1, 3)) def test_col(self): """ """ m = self.v.col self.assertEqual(type(m), Matrix) self.assertEqual(m.order, (3, 1)) def test_magnitude(self): """ """ m = Vector(1, 1, 1).magnitude self.assertTrue(is_number(m)) self.assertEqual(m, np.sqrt(3)) def test_unit(self): """ """ u = self.v.unit self.assertEqual(u.get_angle(self.v), 0) self.assertEqual(u.magnitude, 1) self.assertEqual(Vector(0, 0, 0).unit, None) def test_rotate(self): """ """ v = self.v.rotate(RotationMatrix.from_basic_rotations(z=180)) self.assertEqual(v.x, -1) self.assertEqual(v.y, -2) self.assertEqual(v.z, +3) def test_angle(self): """ """ v1 = Vector(1, 0, 0) v2 = Vector(0, 1, 0) self.assertTrue(abs(v1.get_angle(v2) - 90) < 10**-PRECISION) v1 = Vector(1, 0, 0) v2 = Vector(2, 0, 0) self.assertTrue(abs(v1.get_angle(v2) - 0) < 10**-PRECISION) v1 = Vector(1, 0, 0) v2 = Vector(1, 1, 0) self.assertTrue(abs(v1.get_angle(v2) - 45) < 10**-PRECISION) a = Vector(0, 0, 0).get_angle((1, 1, 1)) self.assertEqual(a, None) a = Vector(1, 1, 1).get_angle((0, 0, 0)) self.assertEqual(a, None)