#include #include #include #include #include #include class DrawableTest : public sf::Drawable { public: int callCount() const { return m_callCount; } private: void draw(sf::RenderTarget&, sf::RenderStates) const override { ++m_callCount; } mutable int m_callCount{}; }; TEST_CASE("[Graphics] sf::Drawable", runDisplayTests()) { SECTION("Type traits") { STATIC_CHECK(!std::is_constructible_v); STATIC_CHECK(!std::is_copy_constructible_v); STATIC_CHECK(std::is_copy_assignable_v); STATIC_CHECK(!std::is_nothrow_move_constructible_v); STATIC_CHECK(std::is_nothrow_move_assignable_v); STATIC_CHECK(std::is_abstract_v); STATIC_CHECK(std::has_virtual_destructor_v); } SECTION("Construction") { const DrawableTest drawableTest; CHECK(drawableTest.callCount() == 0); } SECTION("draw()") { const DrawableTest drawableTest; auto renderTexture = sf::RenderTexture::create({32, 32}).value(); CHECK(drawableTest.callCount() == 0); renderTexture.draw(drawableTest); CHECK(drawableTest.callCount() == 1); } }