2022-12-04 11:03:45 +00:00
|
|
|
// SPDX-FileCopyrightText: 2019-2022 Connor McLaughlin <stenzek@gmail.com>
|
|
|
|
// SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0)
|
|
|
|
|
2024-06-01 14:10:20 +00:00
|
|
|
#include "common/gsvector.h"
|
2020-04-02 15:31:58 +00:00
|
|
|
#include <gtest/gtest.h>
|
|
|
|
|
|
|
|
TEST(Rectangle, AdjacentRectanglesNotIntersecting)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r1(0, 0, 10, 10);
|
|
|
|
GSVector4i r2(10, 10, 20, 20);
|
|
|
|
ASSERT_FALSE(r1.rintersects(r2));
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, IntersectingRectanglesIntersecting)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r1(0, 0, 10, 10);
|
|
|
|
GSVector4i r2(9, 9, 14, 14);
|
|
|
|
ASSERT_TRUE(r1.rintersects(r2));
|
|
|
|
ASSERT_TRUE(r2.rintersects(r1));
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, PointContainedInRectangle)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r1(0, 0, 10, 10);
|
|
|
|
GSVector4i r2(5, 5, 6, 6);
|
|
|
|
ASSERT_TRUE(r1.rcontains(r2));
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, PointOutsideRectangleNotContained)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r1(0, 0, 10, 10);
|
|
|
|
GSVector4i r2(10, 10, 11, 11);
|
|
|
|
ASSERT_FALSE(r1.rcontains(r2));
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, RectangleSize)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r(0, 0, 10, 10);
|
|
|
|
ASSERT_EQ(r.width(), 10);
|
|
|
|
ASSERT_EQ(r.height(), 10);
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, IncludeAfterInvalid)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r(0, 0, 1, 1);
|
|
|
|
GSVector4i r2(5, 5, 10, 10);
|
|
|
|
GSVector4i ru(0, 0, 10, 10);
|
|
|
|
ASSERT_TRUE(r.runion(r2).eq(ru));
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, EmptyRectangleHasNoExtents)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r(0, 0, 0, 0);
|
|
|
|
ASSERT_EQ(r.width(), 0);
|
|
|
|
ASSERT_EQ(r.height(), 0);
|
|
|
|
ASSERT_TRUE(r.rempty());
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, NonEmptyRectangleHasExtents)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r(0, 0, 1, 1);
|
|
|
|
ASSERT_EQ(r.width(), 1);
|
|
|
|
ASSERT_EQ(r.height(), 1);
|
|
|
|
ASSERT_FALSE(r.rempty());
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST(Rectangle, RelationalOperators)
|
|
|
|
{
|
2024-06-01 14:10:20 +00:00
|
|
|
GSVector4i r1(0, 0, 1, 1);
|
|
|
|
GSVector4i r2(1, 1, 2, 2);
|
2020-04-02 15:31:58 +00:00
|
|
|
|
2024-06-01 14:10:20 +00:00
|
|
|
ASSERT_TRUE(r1.eq(r1));
|
|
|
|
ASSERT_TRUE(r1.lt32(r2).alltrue());
|
|
|
|
ASSERT_TRUE(r2.eq(r2));
|
|
|
|
ASSERT_TRUE(r2.gt32(r1).alltrue());
|
|
|
|
ASSERT_FALSE(r2.lt32(r1).alltrue());
|
|
|
|
ASSERT_FALSE(r1.eq(r2));
|
2020-04-02 15:31:58 +00:00
|
|
|
}
|
|
|
|
|