Skip to content
Snippets Groups Projects
Commit 526671eb authored by Brandon Lai-Cheong's avatar Brandon Lai-Cheong
Browse files

refactored union tests

parent 607ece8f
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
......@@ -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
#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);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment