diff --git a/tests/edge_union_cases.cpp b/tests/edge_union_cases.cpp index 35dbc4bcc6d6bae2b49126e4c8bb70cf6e6ec1b6..6efaa5fcac08686d3cd36eaac8ef6ec564d7c3d8 100644 --- a/tests/edge_union_cases.cpp +++ b/tests/edge_union_cases.cpp @@ -2,38 +2,11 @@ #include <union.h> #include <triangle.h> #include <orientation.h> +#include "union_tests.h" -struct UnionParams -{ - Triangle t1; - Triangle t2; - std::vector<Triangle> expected; -}; - -std::ostream &operator<<(std::ostream &os, const UnionParams &u) { - os << u.t1 << "|" << u.t2; - return os; -} - -class InstantiateUnionEdgeTests : public testing::TestWithParam<UnionParams> -{ -}; - -TEST_P(InstantiateUnionEdgeTests, UnionTest) -{ - const Triangle &t1 = GetParam().t1; - const Triangle &t2 = GetParam().t2; - auto expected = GetParam().expected; - - ASSERT_NE(orientation(t1), Clockwise); - ASSERT_NE(orientation(t2), Clockwise); - - auto result = unionize(t1, t2); - EXPECT_EQ(result, expected); -} -INSTANTIATE_TEST_SUITE_P(EdgeUnionTests, InstantiateUnionEdgeTests, testing::Values( +INSTANTIATE_TEST_SUITE_P(EdgeUnionTests, InstantiateUnionTests, testing::Values( // Point on top of triangle UnionParams{Triangle({0, 0, 4}, {5, 0, 4}, {2, 3, 4}, 1), Triangle({1, 1, 0}, {1, 1, 0}, {1, 1, 0}, 2), {Triangle({0, 0, 4}, {5, 0, 4}, {2, 3, 4}, 1), Triangle({1, 1, 0}, {1, 1, 0}, {1, 1, 0}, 2)}}, // Point on edge of triangle @@ -82,3 +55,4 @@ TEST(UnionEdgeTests, TriangleOnSide) EXPECT_EQ(results, expected); } + diff --git a/tests/union_tests.cpp b/tests/union_tests.cpp index a18373ee03eac8c73a2f26ab97ebec895a188684..26f957b44bd02408f4d3f3e2c3d94a5332d38dae 100644 --- a/tests/union_tests.cpp +++ b/tests/union_tests.cpp @@ -3,6 +3,12 @@ #include <triangle.h> #include <orientation.h> #include <shift_triangle.h> +#include "union_tests.h" + +std::ostream &operator<<(std::ostream &os, const UnionParams &u) { + os << u.t1 << "|" << u.t2; + return os; +} TEST(UnionTrivialTests, NotTouching) { @@ -53,7 +59,7 @@ TEST(UnionTests, SharesPointTest) results = unionize(bottom, top); std::vector<Triangle> expected_results_2 { - Triangle({0, 5}, {3, 2}, {5, 3}, 1), + Triangle({0, 5, 10}, {3, 2, 10}, {5, 3, 10}, 1), Triangle({0.1, 7, 5}, {5, 3,5}, {3.2, 9,5}, 2) }; @@ -90,60 +96,59 @@ TEST(UnionTests, FoldTriangleTest) EXPECT_EQ(results, expected_results_2); } -/* -TEST(UnionTests, IceCreamTest) -{ - Triangle bottom = Triangle({0, 5}, {3, 2}, {5, 3}, 2, 1); - Triangle top = Triangle({-1, 5}, {2, 4}, {5, 7}, 1, 2); - - auto results = unionize(bottom, top); - - std::vector<Triangle> expected_results_1; - - EXPECT_EQ(results, expected_results_1); - - top.depth = 3; - - results = unionize(bottom, top); - std::vector<Triangle> expected_results_2; - - EXPECT_EQ(results, expected_results_2); -}*/ TEST(UnionTests, StarTest) { - Triangle bottom = Triangle({0, 3}, {5, 3}, {2.5, 6}, 1); - Triangle top = Triangle({0, 5, 1}, {2, 0, 1}, {5, 5, 1}, 2); + Triangle top = Triangle({0, 3,0}, {5, 3,0}, {2.5, 6,0}, 1); + Triangle bot = Triangle({0, 5, 1}, {2, 0, 1}, {5, 5, 1}, 2); - ASSERT_EQ(orientation(bottom.points[0], bottom.points[1], bottom.points[2]), Counterclockwise); ASSERT_EQ(orientation(top.points[0], top.points[1], top.points[2]), Counterclockwise); + ASSERT_EQ(orientation(bot.points[0], bot.points[1], bot.points[2]), Counterclockwise); - auto results = unionize(bottom, top); + auto results = unionize(top, bot); std::vector<Triangle> expected_results_1 = { - Triangle({2,0}, {3.8, 3}, {0.8, 3}, 2), - Triangle({5,5}, {3.33333, 5}, {4.30233, 3.83721}, 2), - Triangle({0,5}, {0.540541, 3.64865}, {1.66667, 5}, 2), + Triangle({2,0,1}, {3.8, 3,1}, {0.8, 3, 1}, 2), + Triangle({5,5,1}, {3.33333, 5, 1}, {4.30233, 3.83721, 1}, 2), + Triangle({0,5,1}, {0.540541, 3.64865, 1}, {1.66667, 5, 1}, 2), Triangle({0, 3}, {5, 3}, {2.5, 6}, 1) }; EXPECT_EQ(results, expected_results_1); - shiftZ(bottom, 3); + shiftZ(top, 3); - results = unionize(bottom, top); + results = unionize(top, bot); std::vector<Triangle> expected_results_2 = { - Triangle({0,3}, {0.8,3}, {0.540541,3.64865}, 1), - Triangle({5,3}, {4.30233,3.83721}, {3.8,3}, 1), - Triangle({2.5,6}, {1.66667,5}, {3.33333,5}, 1), - Triangle({0,5}, {2,0}, {5,5}, 2) + Triangle({0,3,3}, {0.8,3,3}, {0.540541,3.64865,3}, 1), + Triangle({5,3,3}, {4.30233,3.83721,3}, {3.8,3,3}, 1), + Triangle({2.5,6,3}, {1.66667,5,3}, {3.33333,5,3}, 1), + Triangle({0,5, 1}, {2,0,1}, {5,5,1}, 2) }; EXPECT_EQ(results, expected_results_2); } -TEST (UnionTests, DepthTest) { +TEST_P(InstantiateUnionTests, UnionTest) +{ + const Triangle &t1 = GetParam().t1; + const Triangle &t2 = GetParam().t2; + auto expected = GetParam().expected; + + ASSERT_NE(orientation(t1), Clockwise); + ASSERT_NE(orientation(t2), Clockwise); + + auto result = unionize(t1, t2); + + EXPECT_EQ(result, expected); } + +INSTANTIATE_TEST_SUITE_P(ParameterizedUnionTests, InstantiateUnionTests, testing::Values( + UnionParams{Triangle({0, 0, 0}, {5, 0, 0}, {2, 3, 0}, 1), Triangle(Point{3, 1, 10}, Point{6, 1, 2}, Point{4, 3, 1}, 2), + {Triangle({6,1,2}, {4,3,1}, {3.333333,1.66666,7.23542}, 2), + Triangle({6,1,2}, {3.33333,1.66667,7.23542}, {4,1,7.3680},2), + Triangle({0,0}, {5,0}, {2,3}, 1)}} +)); \ No newline at end of file diff --git a/tests/union_tests.h b/tests/union_tests.h new file mode 100644 index 0000000000000000000000000000000000000000..1b6908ce34ea304ed0787daaf2b3097a0a35ff20 --- /dev/null +++ b/tests/union_tests.h @@ -0,0 +1,15 @@ +#pragma once +#include <triangle.h> + +struct UnionParams +{ + Triangle t1; + Triangle t2; + std::vector<Triangle> expected; +}; + +class InstantiateUnionTests : public testing::TestWithParam<UnionParams>{}; + + +std::ostream &operator<<(std::ostream &os, const UnionParams &u); +