SFML/test/Graphics/Rect.cpp

107 lines
3.6 KiB
C++
Raw Normal View History

2015-04-28 12:07:19 +08:00
#include <SFML/Graphics/Rect.hpp>
#include <SFML/System/Vector2.hpp>
2018-08-20 15:51:42 +08:00
#include "GraphicsUtil.hpp"
2015-04-28 12:07:19 +08:00
2021-12-24 21:31:27 +08:00
TEST_CASE("sf::Rect class template - [graphics]")
2015-04-28 12:07:19 +08:00
{
2021-12-24 21:31:27 +08:00
SUBCASE("Construction")
2015-04-28 12:07:19 +08:00
{
2021-12-24 21:31:27 +08:00
SUBCASE("Default constructor")
2015-04-28 12:07:19 +08:00
{
sf::IntRect rectangle;
CHECK(rectangle.left == 0);
CHECK(rectangle.top == 0);
CHECK(rectangle.width == 0);
CHECK(rectangle.height == 0);
}
2021-12-24 21:31:27 +08:00
SUBCASE("(left, top, width, height) constructor")
2015-04-28 12:07:19 +08:00
{
sf::IntRect rectangle({1, 2}, {3, 4});
2015-04-28 12:07:19 +08:00
CHECK(rectangle.left == 1);
CHECK(rectangle.top == 2);
CHECK(rectangle.width == 3);
CHECK(rectangle.height == 4);
}
2021-12-24 21:31:27 +08:00
SUBCASE("(Vector2, Vector2) constructor")
2015-04-28 12:07:19 +08:00
{
sf::Vector2i position(1, 2);
sf::Vector2i dimension(3, 4);
sf::IntRect rectangle(position, dimension);
CHECK(rectangle.left == 1);
CHECK(rectangle.top == 2);
CHECK(rectangle.width == 3);
CHECK(rectangle.height == 4);
}
2021-12-24 21:31:27 +08:00
SUBCASE("Conversion constructor")
2015-04-28 12:07:19 +08:00
{
sf::FloatRect sourceRectangle({1.0f, 2.0f}, {3.0f, 4.0f});
2015-04-28 12:07:19 +08:00
sf::IntRect rectangle(sourceRectangle);
CHECK(rectangle.left == static_cast<int>(sourceRectangle.left));
CHECK(rectangle.top == static_cast<int>(sourceRectangle.top));
CHECK(rectangle.width == static_cast<int>(sourceRectangle.width));
CHECK(rectangle.height == static_cast<int>(sourceRectangle.height));
}
}
2021-12-24 21:31:27 +08:00
SUBCASE("Containment")
2015-04-28 12:07:19 +08:00
{
2021-12-24 21:31:27 +08:00
SUBCASE("contains(Vector2)")
2015-04-28 12:07:19 +08:00
{
sf::IntRect rectangle({0, 0}, {10, 10});
2015-04-28 12:07:19 +08:00
CHECK(rectangle.contains(sf::Vector2i(0, 0)) == true);
CHECK(rectangle.contains(sf::Vector2i(9, 0)) == true);
CHECK(rectangle.contains(sf::Vector2i(0, 9)) == true);
CHECK(rectangle.contains(sf::Vector2i(9, 9)) == true);
CHECK(rectangle.contains(sf::Vector2i(9, 10)) == false);
CHECK(rectangle.contains(sf::Vector2i(10, 9)) == false);
CHECK(rectangle.contains(sf::Vector2i(10, 10)) == false);
CHECK(rectangle.contains(sf::Vector2i(15, 15)) == false);
}
}
2021-12-24 21:31:27 +08:00
SUBCASE("Intersection")
2015-04-28 12:07:19 +08:00
{
2021-12-24 21:31:27 +08:00
SUBCASE("intersects(Rect)")
2015-04-28 12:07:19 +08:00
{
sf::IntRect rectangle({0, 0}, {10, 10});
sf::IntRect intersectingRectangle({5, 5}, {10, 10});
sf::IntRect nonIntersectingRectangle({-5, -5}, {5, 5});
2015-04-28 12:07:19 +08:00
CHECK(rectangle.intersects(intersectingRectangle) == true);
CHECK(rectangle.intersects(nonIntersectingRectangle) == false);
}
2021-12-24 21:31:27 +08:00
SUBCASE("intersects(Rect, Rect)")
2015-04-28 12:07:19 +08:00
{
sf::IntRect rectangle({0, 0}, {10, 10});
sf::IntRect intersectingRectangle({5, 5}, {10, 10});
sf::IntRect nonIntersectingRectangle({-5, -5}, {5, 5});
2015-04-28 12:07:19 +08:00
sf::IntRect intersectionResult;
CHECK(rectangle.intersects(intersectingRectangle, intersectionResult) == true);
CHECK(intersectionResult.top == 5);
CHECK(intersectionResult.left == 5);
CHECK(intersectionResult.width == 5);
CHECK(intersectionResult.height == 5);
CHECK(rectangle.intersects(nonIntersectingRectangle, intersectionResult) == false);
}
}
2021-12-24 21:31:27 +08:00
SUBCASE("Comparison operations")
2015-04-28 12:07:19 +08:00
{
sf::IntRect firstRectangle({1, 3}, {2, 5});
sf::IntRect secondRectangle({1, 3}, {2, 5});
sf::IntRect differentRectangle({3, 1}, {5, 2});
2015-04-28 12:07:19 +08:00
CHECK(firstRectangle == secondRectangle);
CHECK(firstRectangle != differentRectangle);
}
}