def test_scalar_multiply_float(self): v1 = Vector((1.671, -1.012, -0.318)) scalar = 7.41 resultV = v1.scalar_multiply(scalar) resultV.round_coordinates(3) self.assertEqual(resultV, Vector((12.382, -7.499, -2.356)), 'scalar multiply does not work')
def test_is_parallel_simple(self): vector = self.vector3d.scalar_multiply(0.5) vector2 = Vector((6, 29, 100)) result = vector.is_parallel_to(self.vector3d) result2 = vector2.is_parallel_to(self.vector3d) self.assertEqual(result, True, 'is_parallel_to does not work') self.assertEqual(result2, False, 'is_parallel_to does not work')
def test_plus_float(self): v1 = Vector((8.218, -9.341)) v2 = Vector((-1.129, 2.111)) resultV = v1.plus(v2) resultV.round_coordinates(3) self.assertEqual(resultV, Vector((7.089, -7.230)), 'plus does not work')
def test_minus_float(self): v1 = Vector((7.119, 8.215)) v2 = Vector((-8.223, 0.878)) resultV = v1.minus(v2) resultV.round_coordinates(3) self.assertEqual(resultV, Vector((15.342, 7.337)), 'minus does not work')
def test_angle_assert(self): with self.assertRaises( ZeroDivisionError, msg= 'angle_with does not throw ZeroDivisionError if magnitude of either vector is 0' ): Vector((0, 0, 0)).angle_with(Vector((1, 2, 3)))
def test_round_coordinates(self): vector = Vector((1.00001, 2.12348, -8274.125, 2)) vector.round_coordinates(2) self.assertEqual(vector.coordinates, (Decimal('1.00'), Decimal('2.12'), Decimal('-8274.13'), Decimal('2.00')), 'round_coordinates does not work')
def test_is_orthogonal_simple(self): v1 = Vector((0, 1)) v2 = Vector((4, 0)) v3 = Vector((4, 1)) v4 = Vector((1, -4)) self.assertEqual(v1.is_orthogonal_to(v2), True, 'is_orthogonal_to does not work') self.assertEqual(v3.is_orthogonal_to(v2), False, 'is_orthogonal_to does not work') self.assertEqual(v4.is_orthogonal_to(v3), True, 'is_orthogonal_to does not work')
def test_direction_assert(self): with self.assertRaises( ZeroDivisionError, msg= 'direction does not throw ZeroDivisionError if magnitude is 0' ): Vector((0, 0, 0)).direction()
def test_init_not_iterable(self): with self.assertRaises( TypeError, msg= 'init does not throw TypeError if coordinates are not iterable' ): Vector(1)
def test_is_orthogonal_float_2d_2(self): v1 = Vector((2.118, 4.827)) v2 = Vector((0, 0)) self.assertEqual(v1.is_orthogonal_to(v2), True, 'is_orthogonal_to does not work')
def test_is_orthogonal_float_3d_2(self): v1 = Vector((-2.328, -7.284, -1.214)) v2 = Vector((-1.821, 1.072, -2.94)) self.assertEqual(v1.is_orthogonal_to(v2), True, 'is_orthogonal_to does not work')
def test_is_orthogonal_float_3d(self): v1 = Vector((-2.029, 9.97, 4.172)) v2 = Vector((-9.231, -6.639, -7.245)) self.assertEqual(v1.is_orthogonal_to(v2), False, 'is_orthogonal_to does not work')
def test_is_orthogonal_float_2d(self): v1 = Vector((-7.579, -7.88)) v2 = Vector((22.737, 23.64)) self.assertEqual(v1.is_orthogonal_to(v2), False, 'is_orthogonal_to does not work')
def test_is_orthogonal_zero(self): v1 = Vector((0, 0)) v2 = Vector((99, 34)) self.assertEqual(v1.is_orthogonal_to(v2), True, 'is_orthogonal_to does not work')
def test_init_empty_tuple(self): with self.assertRaises( ValueError, msg='init does not throw ValueError if coordinates are empty'): Vector(())
def test_angle_degrees_simple(self): v1 = Vector((1, 2, -1)) v2 = Vector((3, 1, 0)) result = v1.angle_with(v2, Vector.DEGREES) self.assertEqual(round(result), 50, 'angle_with does not work')
def test_is_parallel_float_3d_2(self): v1 = Vector((-2.328, -7.284, -1.214)) v2 = Vector((-1.821, 1.072, -2.94)) self.assertEqual(v1.is_parallel_to(v2), False, 'is_parallel_to does not work')
def test_dot_product_float_3d(self): v1 = Vector((-5.955, -4.904, -1.874)) v2 = Vector((-4.496, -8.755, 7.103)) result = v1.dot_product(v2) result = round_float(result, 3) self.assertEqual(result, 56.397, 'dot product does not work')
def test_dot_product_simple(self): v1 = Vector((1, 2, -1)) v2 = Vector((3, 1, 0)) result = v1.dot_product(v2) self.assertEqual(result, 5, 'dot product does not work')
def test_eq_float_3d(self): self.assertEqual(Vector((1.234, 4.543, 9.000)), Vector((1.234, 4.543, 9.000)), 'eq does not work')
def test_angle_rad_simple(self): v1 = Vector((1, 2, -1)) v2 = Vector((3, 1, 0)) result = v1.angle_with(v2) result = round_float(result, 2) self.assertEqual(result, 0.87, 'angle_with does not work')
def test_angle_degrees_float(self): v1 = Vector((7.35, 0.221, 5.188)) v2 = Vector((2.751, 8.259, 3.985)) result = v1.angle_with(v2, Vector.DEGREES) result = round_float(result, 3) self.assertEqual(result, 60.276, 'angle_with does not work')
def test_angle_same_vector(self): v1 = Vector((1, 2, -1)) result = v1.angle_with(v1) self.assertEqual(round(result), 0, 'angle_with does not work')
def test_dot_product_float_2d(self): v1 = Vector((7.887, 4.138)) v2 = Vector((-8.802, 6.776)) result = v1.dot_product(v2) result = round_float(result, 3) self.assertEqual(result, -41.382, 'dot product does not work')
def test_eq_three_dimensions(self): self.assertEqual(self.vector3d == Vector((1, 2, 3)), True, 'eq does not work') self.assertEqual( Vector((-1, 2, 3)) == self.vector3d, False, 'eq does not work')
def test_angle_rad_float(self): v1 = Vector((3.183, -7.627)) v2 = Vector((-2.668, 5.319)) result = v1.angle_with(v2) result = round_float(result, 3) self.assertEqual(result, 3.072, 'angle_with does not work')
def test_eq_one_dimension(self): self.assertEqual(self.vector1d == Vector((1, )), True, 'eq does not work') self.assertEqual(self.vector1d == Vector((-1, )), False, 'eq does not work')
def test_zero_is_parallel_zero(self): vector = Vector((0, 0, 0)) result = vector.is_parallel_to(vector) self.assertEqual(result, True, 'is_parallel_to does not work')
def test_plus_1d(self): self.assertEqual(self.vector1d.plus(Vector((-1, ))), Vector((0, )), 'plus does not work') self.assertEqual(self.vector1d, Vector((1, )), 'plus does not work - changes vector')
def test_is_parallel_float_2d(self): v1 = Vector((-7.579, -7.88)) v2 = Vector((22.737, 23.64)) self.assertEqual(v1.is_parallel_to(v2), True, 'is_parallel_to does not work')