I have a class Vector that represents a point in 3-dimensional space. This vector has a method normalize(self, length = 1)
which scales the vector down/up to be length == vec.normalize(length).length
.
The unittest for this method sometimes fails because of the imprecision of floating-point numbers. My question is, how can I make sure this test does not fail when the methods are implemented correctly? Is it possible to do it without testing for an approximate value?
Additional information:
def testNormalize(self):
vec = Vector(random.random(), random.random(), random.random())
self.assertEqual(vec.normalize(5).length, 5)
This sometimes results in either AssertionError: 4.999999999999999 != 5
or AssertionError: 5.000000000000001 != 5
.
Note: I am aware that the floating-point issue may be in the Vector.length
property or in Vector.normalize()
.