Ejemplo n.º 1
0
 def test_subtraction_of_two_vectors_results_in_a_vector(self):
     v1 = Vector(3, 2, 1)
     v2 = Vector(5, 6, 7)
     rv = v1.sub(v2)
     assert rv.to_tuple() == (-2, -4, -6, 0)
Ejemplo n.º 2
0
 def test_tuple_as_point_addition_results_in_new_tuple(self):
     start = (3, -2, 5, 1)  # emulates a Point
     vector = Vector(-2, 3, 1)
     dest = vector.add(start)
     assert isinstance(dest, tuple)
     assert dest is not start
Ejemplo n.º 3
0
 def test_invalid_tuple_addition_raises_value_error(self):
     vector = Vector(-2, 3, 1)
     with pytest.raises(ValueError):
         vector.add((1, 2, 3, 4))  # tuple that is not a Point or a Vector
Ejemplo n.º 4
0
 def test_addition_to_tuple_as_vector(self):
     v1 = Vector(2, 3, 1)
     v2 = (3, 2, 1, 0)
     vr = v1.add(v2)
     # a vector added to a vector results in a resulting vector (w=0)
     assert vr == (5, 5, 2, 0)
Ejemplo n.º 5
0
 def test_point_addition_results_in_new_point_object(self):
     starting_point = Point(3, -2, 5)
     vector = Vector(-2, 3, 1)
     destination = vector.add(starting_point)
     assert isinstance(destination, Point)
     assert destination is not starting_point
Ejemplo n.º 6
0
 def test_creates_a_vector(self):
     vector = Vector(1, 1, 1)
     assert vector.w == 0.0
Ejemplo n.º 7
0
 def test_addition_to_point_object(self):
     point = Point(3, -2, 5)
     vector = Vector(-2, 3, 1)
     destination = vector.add(point)
     # a point added to a vector results in a translated point (w=1)
     assert destination.to_tuple() == (1, 1, 6, 1)
Ejemplo n.º 8
0
 def test_unit_X_vector_has_a_magnitude_of_1(self):
     assert Vector(1, 0, 0).magnitude() == 1
Ejemplo n.º 9
0
 def test_unit_Z_vector_has_a_magnitude_of_1(self):
     assert Vector(0, 0, 1).magnitude() == 1
Ejemplo n.º 10
0
 def test_vector_scaling(self):
     v1 = Vector(1, -2, 3)
     assert v1.scale(3.5).to_tuple() == (3.5, -7, 10.5, 0)
     assert v1.scale(0.5).to_tuple() == (0.5, -1, 1.5, 0)
     assert v1.scale(-2).to_tuple() == (-2, 4, -6, 0)
Ejemplo n.º 11
0
 def test_vector_scale_by_alias_is_implemented(self):
     v1 = Vector(1, -2, 3)
     assert v1.scale_by(3.5).to_tuple() == (3.5, -7, 10.5, 0)
Ejemplo n.º 12
0
 def test_the_opposite_of_a_vector_is_its_negative(self):
     v1 = Vector(3, 2, 1)
     assert v1.opposite().to_tuple() == (-3, -2, -1, 0)
Ejemplo n.º 13
0
 def test_recognizes_a_vector_in_a_tuple(self):
     tup = (1.0, 1.0, 1.0, 0.0)
     assert Vector.tuple_is_vector(tup)
Ejemplo n.º 14
0
 def test_subtraction_of_a_point_from_a_vector_raises_type_error(self):
     v1 = Vector(3, 2, 1)
     pt = Point(5, 6, 7)
     with pytest.raises(TypeError):
         # subtract a point from a vector makes no sense
         v1.sub(pt)
Ejemplo n.º 15
0
 def test_incomplete_tuple_is_not_a_vector(self):
     tup = (1, 1, 1)
     assert not Vector.tuple_is_vector(tup)
Ejemplo n.º 16
0
 def test_arbitrary_vector_has_a_magnitude(self):
     assert Vector(1, 2, 3).magnitude() == math.sqrt(14)
     assert Vector(-1, -2, -3).magnitude() == math.sqrt(14)
Ejemplo n.º 17
0
 def test_builds_a_vector_from_a_tuple(self):
     point = Vector.from_tuple((1, 1, 1))
     assert Vector.object_is_vector(point)
Ejemplo n.º 18
0
 def test_vector_magnitude_aliases_are_implemented(self):
     assert Vector(1, 0, 0).length() == 1
     assert Vector(1, 0, 0).len() == 1
     assert Vector(1, 0, 0).mag() == 1
Ejemplo n.º 19
0
 def test_vector_as_tuple(self):
     vector = Vector(1, 1, 1)
     assert vector.to_tuple() == (1.0, 1.0, 1.0, 0.0)
Ejemplo n.º 20
0
 def test_arbitrary_vector_normalization(self):
     assert Vector(1, 2, 3).normalize().mag() == 1
     assert Vector(4, 0, 0).normalize().to_tuple() == (1, 0, 0, 0)
Ejemplo n.º 21
0
 def test_addition_to_vector_object(self):
     v1 = Vector(2, 3, 1)
     v2 = Vector(3, 2, 1)
     vr = v1.add(v2)
     # a vector added to a vector results in a resulting vector (w=0)
     assert vr.to_tuple() == (5, 5, 2, 0)
Ejemplo n.º 22
0
 def test_vector_normalization_aliases_are_implemented(self):
     assert Vector(4, 0, 0).normalized().to_tuple() == (1, 0, 0, 0)
     assert Vector(4, 0, 0).norm().to_tuple() == (1, 0, 0, 0)
Ejemplo n.º 23
0
 def test_vector_addition_results_in_new_vector_object(self):
     v1 = Vector(2, 3, 1)
     v2 = Vector(3, 2, 1)
     vr = v1.add(v2)
     assert isinstance(vr, Vector)
     assert vr is not v1
Ejemplo n.º 24
0
 def test_malformed_tuple_is_not_a_vector(self):
     tup = (1, 1, 1, 1)
     assert not Vector.tuple_is_vector(tup)
Ejemplo n.º 25
0
 def test_recognizes_a_vector_in_a_vector_object(self):
     vector = Vector(1.0, 1.0, 1.0)
     assert Vector.object_is_vector(vector)
Ejemplo n.º 26
0
 def test_vector_dot_product(self):
     v1 = Vector(1, 2, 3)
     v2 = Vector(2, 3, 4)
     assert v1.dot(v2) == 20
Ejemplo n.º 27
0
 def test_tuple_as_vector_addition_results_in_new_tuple(self):
     v1 = (3, -2, 5, 0)  # emulates a Vector
     v2 = Vector(-2, 3, 1)
     vr = v2.add(v1)
     assert isinstance(vr, tuple)
     assert vr is not v1
Ejemplo n.º 28
0
 def test_point_tuple_is_not_a_vector(self):
     tup = (1, 1, 1, 1)
     assert not Vector.tuple_is_vector(tup)
Ejemplo n.º 29
0
 def test_addition_invalid_type_argument_raises_type_error(self):
     vector = Vector(-2, 3, 1)
     with pytest.raises(TypeError):
         # one can not add a scalar to a vector
         vector.add(1)
Ejemplo n.º 30
0
 def test_subtraction_of_a_vector_from_a_point_results_in_a_point(self):
     p1 = Point(3, 2, 1)
     v1 = Vector(5, 6, 7)
     dp = p1.sub(v1)
     assert dp.to_tuple() == (-2, -4, -6, 1)