def test_intersecting_a_translated_sphere_with_a_ray():
    sphere = Sphere(transformation=transformations.translation(5, 0, 0))
    ray = Ray(point(0, 0, -5), vector(0, 0, 1))

    xs = sphere.intersect(ray)

    assert(len(xs) == 0)
def test_intersecting_a_scaled_sphere_with_a_ray():
    sphere = Sphere(transformation=transformations.scaling(2, 2, 2))
    ray = Ray(point(0, 0, -5), vector(0, 0, 1))

    xs = sphere.intersect(ray)

    assert(xs[0].t == 3)
    assert(xs[1].t == 7)
def test_intersect_sets_the_object_on_the_intersection():
    r = Ray(point(0, 0, -5), vector(0, 0, 1))
    s = Sphere()

    xs = s.intersect(r)

    assert(len(xs) == 2)
    assert(xs[0].object is s)
    assert(xs[1].object is s)