class TestVector3: vec_default = geo.Vector3(1, 2, 3) def test_constructor(self): assert self.vec_default.x == 1 assert self.vec_default.y == 2 assert self.vec_default.z == 3 # TODO convert this to working with Vector3s # def test_polar(self): # vec = geo.Vector3.polar(1, math.pi) # assert vec == geo.Vector3(-1, 0) def test_copy(self): copy = self.vec_default.copy() assert copy is not self.vec_default assert copy == self.vec_default def test_repr(self): assert str(self.vec_default) == 'Vector3(1.00, 2.00, 3.00)' def test_eq(self): other_vec = geo.Vector3(1, 2, 3) assert self.vec_default == other_vec def test_ne(self): other_vec = geo.Vector3(2, 4, 6) assert self.vec_default != other_vec def test_bool_true(self): assert self.vec_default def test_bool_false(self): vec = geo.Vector3(0, 0, 0) assert not vec def test_add(self): vec_add = geo.Vector3(2, 4, 6) vec_answer = self.vec_default + vec_add assert vec_answer == geo.Vector3(3, 6, 9) def test_radd(self): vec_add = geo.Vector3(2, 4, 6) vec_answer = vec_add + self.vec_default assert vec_answer == geo.Vector3(3, 6, 9) def test_iadd(self): vec = geo.Vector3(1, 2, 3) vec += geo.Vector3(2, 4, 6) assert vec == geo.Vector3(3, 6, 9) def test_vector_sub_vector(self): vec_other = geo.Vector3(2, 4, 6) answer = self.vec_default - vec_other assert isinstance(answer, geo.Vector3) assert answer == geo.Vector3(-1, -2, -3) def test_vector_sub_point(self): point_other = geo.Point3(2, 4, 6) answer = self.vec_default - point_other assert isinstance(answer, geo.Point3) assert answer == geo.Point3(-1, -2, -3) def test_point_sub_vector(self): point_other = geo.Point3(2, 4, 6) answer = point_other - self.vec_default assert isinstance(answer, geo.Point3) assert answer == geo.Point3(1, 2, 3) def test_point_sub_point(self): point_left = geo.Point3(1, 2, 3) point_right = geo.Point3(2, 4, 6) answer = point_left - point_right assert isinstance(answer, geo.Vector3) assert answer == geo.Vector3(-1, -2, -3) def test_mul(self): vec_answer = 2 * self.vec_default assert vec_answer == geo.Vector3(2, 4, 6) def test_rmul(self): vec_answer = self.vec_default * 2 assert vec_answer == geo.Vector3(2, 4, 6) def test_imul(self): vec = geo.Vector3(1, 2, 3) vec *= 2 assert vec == geo.Vector3(2, 4, 6) def test_div(self): vec_answer = self.vec_default / 2 assert vec_answer == geo.Vector3(0.5, 1, 1.5) def test_rdiv(self): vec_answer = 2 / self.vec_default assert vec_answer == geo.Vector3(2, 1, 2/3) def test_floordiv(self): vec_answer = self.vec_default // 2 assert vec_answer == geo.Vector3(0, 1, 1) def test_rfloordiv(self): vec_answer = 3 // self.vec_default assert vec_answer == geo.Vector3(3, 1, 1) def test_neg(self): assert -self.vec_default == geo.Vector3(-1, -2, -3) def test_pos(self): vec_pos = +self.vec_default assert vec_pos is not self.vec_default assert vec_pos == geo.Vector3(1, 2, 3) def test_magnitude(self): magnitude = math.sqrt(14) assert self.vec_default.magnitude() == magnitude assert abs(self.vec_default) == magnitude def test_magnitude_squared(self): magnitude_squared = 14 assert self.vec_default.magnitude_squared() == magnitude_squared def test_normalized(self): vec = geo.Vector3(4, 0, 0) assert vec.normalized() == geo.Vector3(1, 0, 0) def test_normalize(self): vec = geo.Vector3(4, 0, 0) vec.normalize() assert vec == geo.Vector3(1, 0, 0) def test_dot(self): vec_other = geo.Vector3(2, 4, 6) assert self.vec_default.dot(vec_other) == 28 def test_cross(self): vec_other = geo.Vector3(-1, 1, -1) assert self.vec_default.cross(vec_other) == geo.Vector3(-5, -2, 3)
def test_iadd(self): vec = geo.Vector3(1, 2, 3) vec += geo.Vector3(2, 4, 6) assert vec == geo.Vector3(3, 6, 9)
def test_vector_sub_vector(self): vec_other = geo.Vector3(2, 4, 6) answer = self.vec_default - vec_other assert isinstance(answer, geo.Vector3) assert answer == geo.Vector3(-1, -2, -3)
def test_floordiv(self): vec_answer = self.vec_default // 2 assert vec_answer == geo.Vector3(0, 1, 1)
def test_radd(self): vec_add = geo.Vector3(2, 4, 6) vec_answer = vec_add + self.vec_default assert vec_answer == geo.Vector3(3, 6, 9)
def test_rmul(self): vec_answer = self.vec_default * 2 assert vec_answer == geo.Vector3(2, 4, 6)
def test_div(self): vec_answer = self.vec_default / 2 assert vec_answer == geo.Vector3(0.5, 1, 1.5)
def test_cross(self): vec_other = geo.Vector3(-1, 1, -1) assert self.vec_default.cross(vec_other) == geo.Vector3(-5, -2, 3)
def test_eq(self): other_vec = geo.Vector3(1, 2, 3) assert self.vec_default == other_vec
def test_normalize(self): vec = geo.Vector3(4, 0, 0) vec.normalize() assert vec == geo.Vector3(1, 0, 0)
def test_dot(self): vec_other = geo.Vector3(2, 4, 6) assert self.vec_default.dot(vec_other) == 28
def test_pos(self): vec_pos = +self.vec_default assert vec_pos is not self.vec_default assert vec_pos == geo.Vector3(1, 2, 3)
def test_neg(self): assert -self.vec_default == geo.Vector3(-1, -2, -3)
def test_rfloordiv(self): vec_answer = 3 // self.vec_default assert vec_answer == geo.Vector3(3, 1, 1)
def test_point_sub_point(self): point_left = geo.Point3(1, 2, 3) point_right = geo.Point3(2, 4, 6) answer = point_left - point_right assert isinstance(answer, geo.Vector3) assert answer == geo.Vector3(-1, -2, -3)
def test_ne(self): other_vec = geo.Vector3(2, 4, 6) assert self.vec_default != other_vec
def test_mul(self): vec_answer = 2 * self.vec_default assert vec_answer == geo.Vector3(2, 4, 6)
def test_bool_false(self): vec = geo.Vector3(0, 0, 0) assert not vec
def test_imul(self): vec = geo.Vector3(1, 2, 3) vec *= 2 assert vec == geo.Vector3(2, 4, 6)
def test_add(self): vec_add = geo.Vector3(2, 4, 6) vec_answer = self.vec_default + vec_add assert vec_answer == geo.Vector3(3, 6, 9)
def test_constructor(self): assert self.line_default.position == geo.Point3(1, 1, 1) assert self.line_default.vector == geo.Vector3(2, 0, 0) assert self.line_default.p1 == geo.Point3(1, 1, 1) assert self.line_default.p2 == geo.Point3(3, 1, 1)
def test_rdiv(self): vec_answer = 2 / self.vec_default assert vec_answer == geo.Vector3(2, 1, 2/3)