|
|
@@ -83,3 +83,40 @@ std::vector<std::pair<point, float>> diag_orthos{
|
|
|
{{{-1, 2}}, 0.5f}, {{{1, -2}}, -0.5f}, {{{2, -1}}, 0.5f}};
|
|
|
|
|
|
INSTANTIATE_TEST_CASE_P(LineOrthogonal, DiagonalTest, ValuesIn(diag_orthos));
|
|
|
+
|
|
|
+struct QuadTest : TestWithParam<std::tuple<float, float>> {};
|
|
|
+
|
|
|
+TEST_P(QuadTest, SquareProducesQuadWithCornersAtX) {
|
|
|
+ float x = std::get<0>(GetParam());
|
|
|
+ square const square{{{0, 0}}, x};
|
|
|
+ quad const expected{{{0, 0}}, {{x, 0}}, {{x, x}}, {{0, x}}};
|
|
|
+ EXPECT_THAT(quad(square), Eq(expected));
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(QuadTest, SquareProducesRectangleWithXX) {
|
|
|
+ float side = std::get<0>(GetParam());
|
|
|
+ square const square{{{0, 0}}, side};
|
|
|
+ EXPECT_THAT(rectangle(square).origin, Eq(square.origin));
|
|
|
+ EXPECT_THAT(rectangle(square).size[0], Eq(side));
|
|
|
+ EXPECT_THAT(rectangle(square).size[0], Eq(side));
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(QuadTest, OffsetSquareProducesRectangleWithXX) {
|
|
|
+ float side = std::get<0>(GetParam());
|
|
|
+ square const square{{{1, 1}}, side};
|
|
|
+ EXPECT_THAT(rectangle(square).origin, Eq(square.origin));
|
|
|
+ EXPECT_THAT(rectangle(square).size[0], Eq(side));
|
|
|
+ EXPECT_THAT(rectangle(square).size[0], Eq(side));
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(QuadTest, RectProducesQuadWithCornersAtXY) {
|
|
|
+ float x = std::get<0>(GetParam());
|
|
|
+ float y = std::get<1>(GetParam());
|
|
|
+ rectangle const square{{{0, 0}}, {{x, y}}};
|
|
|
+ quad const expected{{{0, 0}}, {{x, 0}}, {{x, y}}, {{0, y}}};
|
|
|
+ EXPECT_THAT(quad(square), Eq(expected));
|
|
|
+}
|
|
|
+
|
|
|
+INSTANTIATE_TEST_CASE_P(Upcast, QuadTest,
|
|
|
+ Combine(Values(0.5, 1.0, 1.5, 2.0),
|
|
|
+ Values(0.5, 1.0, 1.5, 2.0)));
|