示例#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)
示例#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
示例#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
示例#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)
示例#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
示例#6
0
 def test_creates_a_vector(self):
     vector = Vector(1, 1, 1)
     assert vector.w == 0.0
示例#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)
示例#8
0
 def test_unit_X_vector_has_a_magnitude_of_1(self):
     assert Vector(1, 0, 0).magnitude() == 1
示例#9
0
 def test_unit_Z_vector_has_a_magnitude_of_1(self):
     assert Vector(0, 0, 1).magnitude() == 1
示例#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)
示例#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)
示例#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)
示例#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)
示例#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)
示例#15
0
 def test_incomplete_tuple_is_not_a_vector(self):
     tup = (1, 1, 1)
     assert not Vector.tuple_is_vector(tup)
示例#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)
示例#17
0
 def test_builds_a_vector_from_a_tuple(self):
     point = Vector.from_tuple((1, 1, 1))
     assert Vector.object_is_vector(point)
示例#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
示例#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)
示例#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)
示例#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)
示例#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)
示例#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
示例#24
0
 def test_malformed_tuple_is_not_a_vector(self):
     tup = (1, 1, 1, 1)
     assert not Vector.tuple_is_vector(tup)
示例#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)
示例#26
0
 def test_vector_dot_product(self):
     v1 = Vector(1, 2, 3)
     v2 = Vector(2, 3, 4)
     assert v1.dot(v2) == 20
示例#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
示例#28
0
 def test_point_tuple_is_not_a_vector(self):
     tup = (1, 1, 1, 1)
     assert not Vector.tuple_is_vector(tup)
示例#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)
示例#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)