diff --git a/tests/feature/intersections/aabb-intersect.cc b/tests/feature/intersections/aabb-intersect.cc index 687c8936bdbefb26feee5176aeead70f72c37af7..8807b580a78536338de1357ce489cace9ea8392b 100644 --- a/tests/feature/intersections/aabb-intersect.cc +++ b/tests/feature/intersections/aabb-intersect.cc @@ -204,31 +204,25 @@ TG_FUZZ_TEST(AABB, RayIntersection) TG_FUZZ_TEST(AABB, ObjectIntersection) { - auto const padding = 0.25f; auto const numSamples = 250; - auto const maxNumSamples = 250000; auto const test_obj = [&](auto const& bb, auto const& o) { - auto bbPadded = bb; - bbPadded.min -= padding; - bbPadded.max += padding; - if (intersects(o, bbPadded)) + if (!intersects(o, bb)) { - auto someInside = false; - for (auto i = 0; i < maxNumSamples && !someInside; ++i) + for (auto i = 0; i < numSamples; ++i) { - auto pBox = uniform(rng, bbPadded); - if (contains(o, pBox, padding)) - someInside = true; + auto pBox = uniform(rng, bb); + CHECK(!contains(o, pBox)); } - CHECK(someInside); } - else + + for (auto i = 0; i < numSamples; ++i) { - for (auto i = 0; i < numSamples; ++i) + auto pBox = uniform(rng, bb); + if (contains(o, pBox)) { - auto pBox = uniform(rng, bb); - CHECK(!contains(o, pBox, padding)); + CHECK(intersects(o, bb)); + break; } } @@ -237,23 +231,22 @@ TG_FUZZ_TEST(AABB, ObjectIntersection) auto const objBounds = aabb_of(o); CHECK(intersects(o, objBounds)); - if (intersects(o, bb)) + if (!intersects(o, bb)) { - auto someInside = false; - for (auto i = 0; i < maxNumSamples && !someInside; ++i) + for (auto i = 0; i < numSamples; ++i) { auto pObj = uniform(rng, o); - if (contains(bb, pObj)) - someInside = true; + CHECK(!contains(bb, pObj)); } - CHECK(someInside); } - else + + for (auto i = 0; i < numSamples; ++i) { - for (auto i = 0; i < numSamples; ++i) + auto pObj = uniform(rng, o); + if (contains(bb, pObj)) { - auto pObj = uniform(rng, o); - CHECK(!contains(bb, pObj)); + CHECK(intersects(o, bb)); + break; } } }