Add more tests for sf::Shape

This commit is contained in:
Chris Thrasher 2023-10-29 22:41:59 -06:00
parent 133bcda6cb
commit d672b3504e

View File

@ -1,5 +1,8 @@
#include <SFML/Graphics/Shape.hpp> #include <SFML/Graphics/Shape.hpp>
// Other 1st party headers
#include <SFML/Graphics/Texture.hpp>
#include <catch2/catch_test_macros.hpp> #include <catch2/catch_test_macros.hpp>
#include <GraphicsUtil.hpp> #include <GraphicsUtil.hpp>
@ -36,7 +39,7 @@ private:
sf::Vector2f m_size; sf::Vector2f m_size;
}; };
TEST_CASE("[Graphics] sf::Shape") TEST_CASE("[Graphics] sf::Shape", runDisplayTests())
{ {
SECTION("Type traits") SECTION("Type traits")
{ {
@ -60,6 +63,14 @@ TEST_CASE("[Graphics] sf::Shape")
CHECK(triangleShape.getGlobalBounds() == sf::FloatRect()); CHECK(triangleShape.getGlobalBounds() == sf::FloatRect());
} }
SECTION("Set/get texture")
{
const sf::Texture texture;
TriangleShape triangleShape({});
triangleShape.setTexture(&texture, true);
CHECK(triangleShape.getTexture() == &texture);
}
SECTION("Set/get texture rect") SECTION("Set/get texture rect")
{ {
TriangleShape triangleShape({}); TriangleShape triangleShape({});
@ -100,15 +111,23 @@ TEST_CASE("[Graphics] sf::Shape")
SECTION("Get bounds") SECTION("Get bounds")
{ {
TriangleShape triangleShape({2, 3}); TriangleShape triangleShape({30, 40});
CHECK(triangleShape.getLocalBounds() == sf::FloatRect({0, 0}, {2, 3})); CHECK(triangleShape.getLocalBounds() == sf::FloatRect({0, 0}, {30, 40}));
CHECK(triangleShape.getGlobalBounds() == sf::FloatRect({0, 0}, {2, 3})); CHECK(triangleShape.getGlobalBounds() == sf::FloatRect({0, 0}, {30, 40}));
triangleShape.move({1, 1});
triangleShape.rotate(sf::degrees(90)); SECTION("Move and rotate")
CHECK(triangleShape.getLocalBounds() == sf::FloatRect({0, 0}, {2, 3})); {
CHECK(triangleShape.getGlobalBounds().left == Approx(-2.f)); triangleShape.move({1, 1});
CHECK(triangleShape.getGlobalBounds().top == Approx(1.f)); triangleShape.rotate(sf::degrees(90));
CHECK(triangleShape.getGlobalBounds().width == Approx(3.f)); CHECK(triangleShape.getLocalBounds() == sf::FloatRect({0, 0}, {30, 40}));
CHECK(triangleShape.getGlobalBounds().height == Approx(2.f)); CHECK(triangleShape.getGlobalBounds() == Approx(sf::FloatRect({-39, 1}, {40, 30})));
}
SECTION("Add outline")
{
triangleShape.setOutlineThickness(5);
CHECK(triangleShape.getLocalBounds() == Approx(sf::FloatRect({-7.2150f, -14.2400f}, {44.4300f, 59.2400f})));
CHECK(triangleShape.getGlobalBounds() == Approx(sf::FloatRect({-7.2150f, -14.2400f}, {44.4300f, 59.2400f})));
}
} }
} }