Build reverse winding tests into all tests (and remove explicit tests for this)

This commit is contained in:
Brian L 2024-03-26 10:57:47 -06:00
parent 6bf2972d7c
commit 11d8a6daa4
1 changed files with 34 additions and 98 deletions

View File

@ -79,13 +79,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (2D overload)") {
rightTriangle[1],
rightTriangle[2],
true},
// Point inside triangle returns true with reversed winding order. (right)
TestCase{
glm::dvec2(0.2, 0.5),
rightTriangle[0],
rightTriangle[2],
rightTriangle[1],
true},
// Point inside triangle returns true. (obtuse)
TestCase{
glm::dvec2(4.0, 0.3),
@ -93,14 +86,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (2D overload)") {
obtuseTriangle[1],
obtuseTriangle[2],
true},
// Point inside triangle returns true with reversed winding order.
// (obtuse)
TestCase{
glm::dvec2(4.0, 0.3),
obtuseTriangle[0],
obtuseTriangle[2],
obtuseTriangle[1],
true},
// Point outside triangle returns false. (right)
TestCase{
glm::dvec2(-2.0, 0.5),
@ -108,14 +93,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (2D overload)") {
rightTriangle[1],
rightTriangle[2],
false},
// Point outside triangle returns false with reversed winding order.
// (right)
TestCase{
glm::dvec2(-2.0, 0.5),
rightTriangle[0],
rightTriangle[2],
rightTriangle[1],
false},
// Point outside triangle returns false. (obtuse)
TestCase{
glm::dvec2(3.0, -0.5),
@ -123,14 +100,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (2D overload)") {
obtuseTriangle[1],
obtuseTriangle[2],
false},
// Point outside triangle returns false with reversed winding order.
// (obtuse)
TestCase{
glm::dvec2(3.0, -0.5),
obtuseTriangle[0],
obtuseTriangle[2],
obtuseTriangle[1],
false},
// Point "inside" degenerate triangle returns false.
TestCase{
rightTriangle[0],
@ -145,6 +114,14 @@ TEST_CASE("IntersectionTests::pointInTriangle (2D overload)") {
testCase.triangleVert2,
testCase.triangleVert3);
CHECK(result == testCase.expected);
// Do same test but with reverse winding
bool reverseResult = IntersectionTests::pointInTriangle(
testCase.point,
testCase.triangleVert3,
testCase.triangleVert2,
testCase.triangleVert1);
CHECK(reverseResult == testCase.expected);
}
TEST_CASE("IntersectionTests::pointInTriangle (3D overload)") {
@ -188,13 +165,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload)") {
rightTriangle[1],
rightTriangle[2],
true},
// Point inside triangle returns true with reversed winding order. (right)
TestCase{
glm::dvec3(0.2, 0.5, 0.0),
rightTriangle[0],
rightTriangle[2],
rightTriangle[1],
true},
// Point inside triangle returns true. (equilateral)
TestCase{
glm::dvec3(0.25, 0.25, 0.5),
@ -202,14 +172,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload)") {
equilateralTriangle[1],
equilateralTriangle[2],
true},
// Point inside triangle returns true with reversed winding order.
// (equilateral)
TestCase{
glm::dvec3(0.25, 0.25, 0.5),
equilateralTriangle[0],
equilateralTriangle[2],
equilateralTriangle[1],
true},
// Point outside triangle on same plane returns false. (right)
TestCase{
glm::dvec3(-2.0, 0.5, 0.0),
@ -224,14 +186,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload)") {
rightTriangle[1],
rightTriangle[2],
false},
// Point outside triangle returns false with reversed winding order.
// (right)
TestCase{
glm::dvec3(-2.0, 0.5, 0.0),
rightTriangle[0],
rightTriangle[2],
rightTriangle[1],
false},
// Point outside triangle on same plane returns false. (equilateral)
TestCase{
glm::dvec3(-1.0, 1.5, 0.5),
@ -246,14 +200,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload)") {
equilateralTriangle[1],
equilateralTriangle[2],
false},
// Point outside triangle returns false with reversed winding order.
// (equilateral)
TestCase{
glm::dvec3(-1.0, 1.5, 0.5),
equilateralTriangle[0],
equilateralTriangle[2],
equilateralTriangle[1],
false},
// Point "inside" degenerate triangle returns false.
TestCase{
rightTriangle[0],
@ -268,6 +214,14 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload)") {
testCase.triangleVert2,
testCase.triangleVert3);
CHECK(result == testCase.expected);
// Do same test but with reverse winding
bool reverseResult = IntersectionTests::pointInTriangle(
testCase.point,
testCase.triangleVert3,
testCase.triangleVert2,
testCase.triangleVert1);
CHECK(reverseResult == testCase.expected);
}
TEST_CASE("IntersectionTests::pointInTriangle (3D overload with barycentric "
@ -316,14 +270,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload with barycentric "
rightTriangle[2],
true,
glm::dvec3(0.25, 0.5, 0.25)},
// Point inside triangle returns true with reversed winding order. (right)
TestCase{
glm::dvec3(0.0, 0.5, 0.0),
rightTriangle[0],
rightTriangle[2],
rightTriangle[1],
true,
glm::dvec3(0.25, 0.25, 0.5)},
// Point inside triangle returns true. (equilateral)
TestCase{
glm::dvec3(0.25, 0.25, 0.5),
@ -332,15 +278,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload with barycentric "
equilateralTriangle[2],
true,
glm::dvec3(0.25, 0.25, 0.5)},
// Point inside triangle returns true with reversed winding order.
// (equilateral)
TestCase{
glm::dvec3(0.25, 0.25, 0.5),
equilateralTriangle[0],
equilateralTriangle[2],
equilateralTriangle[1],
true,
glm::dvec3(0.25, 0.5, 0.25)},
// Point outside triangle on same plane returns false. (right)
TestCase{
glm::dvec3(-2.0, 0.5, 0.0),
@ -357,15 +294,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload with barycentric "
rightTriangle[2],
false,
glm::dvec3()},
// Point outside triangle returns false with reversed winding order.
// (right)
TestCase{
glm::dvec3(-2.0, 0.5, 0.0),
rightTriangle[0],
rightTriangle[2],
rightTriangle[1],
false,
glm::dvec3()},
// Point outside triangle on same plane returns false. (equilateral)
TestCase{
glm::dvec3(-1.0, 1.5, 0.5),
@ -382,15 +310,6 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload with barycentric "
equilateralTriangle[2],
false,
glm::dvec3()},
// Point outside triangle returns false with reversed winding order.
// (equilateral)
TestCase{
glm::dvec3(-1.0, 1.5, 0.5),
equilateralTriangle[0],
equilateralTriangle[2],
equilateralTriangle[1],
false,
glm::dvec3()},
// Point "inside" degenerate triangle returns false.
TestCase{
rightTriangle[0],
@ -409,5 +328,22 @@ TEST_CASE("IntersectionTests::pointInTriangle (3D overload with barycentric "
barycentricCoordinates);
REQUIRE(result == testCase.expected);
REQUIRE(barycentricCoordinates == testCase.expectedCoordinates);
REQUIRE(
(barycentricCoordinates.x == testCase.expectedCoordinates.x &&
barycentricCoordinates.y == testCase.expectedCoordinates.y &&
barycentricCoordinates.z == testCase.expectedCoordinates.z));
// Do same test but with reverse winding
bool reverseResult = IntersectionTests::pointInTriangle(
testCase.point,
testCase.triangleVert3,
testCase.triangleVert2,
testCase.triangleVert1,
barycentricCoordinates);
CHECK(reverseResult == testCase.expected);
REQUIRE(
(barycentricCoordinates.z == testCase.expectedCoordinates.x &&
barycentricCoordinates.y == testCase.expectedCoordinates.y &&
barycentricCoordinates.x == testCase.expectedCoordinates.z));
}