From 112abc1ab744b4e2e100f0d09adf50006de74d16 Mon Sep 17 00:00:00 2001 From: Chris Thrasher Date: Mon, 23 Dec 2024 20:07:14 -0600 Subject: [PATCH] Add tests for `sfView` --- test/CMakeLists.txt | 1 + test/Graphics/View.test.cpp | 157 ++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 test/Graphics/View.test.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index aef78c1..7c4c75b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -53,6 +53,7 @@ add_executable(test-csfml-graphics Graphics/StencilMode.test.cpp Graphics/Transform.test.cpp Graphics/VertexArray.test.cpp + Graphics/View.test.cpp ) target_link_libraries(test-csfml-graphics PRIVATE csfml-graphics Catch2::Catch2WithMain SFML::Graphics) set_target_warnings(test-csfml-graphics) diff --git a/test/Graphics/View.test.cpp b/test/Graphics/View.test.cpp new file mode 100644 index 0000000..367a15f --- /dev/null +++ b/test/Graphics/View.test.cpp @@ -0,0 +1,157 @@ +#include + +#include + +TEST_CASE("[Graphics] sfView") +{ + SECTION("sfView_create") + { + const sfView* view = sfView_create(); + const sfVector2f center = sfView_getCenter(view); + CHECK(center.x == 500); + CHECK(center.y == 500); + const sfVector2f size = sfView_getSize(view); + CHECK(size.x == 1000); + CHECK(size.y == 1000); + CHECK(sfView_getRotation(view) == 0); + const sfFloatRect viewport = sfView_getViewport(view); + CHECK(viewport.position.x == 0); + CHECK(viewport.position.y == 0); + CHECK(viewport.size.x == 1); + CHECK(viewport.size.y == 1); + const sfFloatRect scissor = sfView_getScissor(view); + CHECK(scissor.position.x == 0); + CHECK(scissor.position.y == 0); + CHECK(scissor.size.x == 1); + CHECK(scissor.size.y == 1); + sfView_destroy(view); + } + + SECTION("sfView_createFromRect") + { + const sfView* view = sfView_createFromRect({{50, 100}, {240, 360}}); + const sfVector2f center = sfView_getCenter(view); + CHECK(center.x == 170); + CHECK(center.y == 280); + const sfVector2f size = sfView_getSize(view); + CHECK(size.x == 240); + CHECK(size.y == 360); + CHECK(sfView_getRotation(view) == 0); + const sfFloatRect viewport = sfView_getViewport(view); + CHECK(viewport.position.x == 0); + CHECK(viewport.position.y == 0); + CHECK(viewport.size.x == 1); + CHECK(viewport.size.y == 1); + const sfFloatRect scissor = sfView_getScissor(view); + CHECK(scissor.position.x == 0); + CHECK(scissor.position.y == 0); + CHECK(scissor.size.x == 1); + CHECK(scissor.size.y == 1); + sfView_destroy(view); + } + + SECTION("sfView_copy") + { + sfView* view1 = sfView_createFromRect({{50, 100}, {240, 360}}); + sfView_setViewport(view1, {{25, 40}, {100, 200}}); + sfView_setScissor(view1, {{0.75f, 0.25f}, {0, 0.5f}}); + const sfView* view2 = sfView_copy(view1); + const sfVector2f center = sfView_getCenter(view2); + CHECK(center.x == 170); + CHECK(center.y == 280); + const sfVector2f size = sfView_getSize(view2); + CHECK(size.x == 240); + CHECK(size.y == 360); + CHECK(sfView_getRotation(view2) == 0); + const sfFloatRect viewport = sfView_getViewport(view2); + CHECK(viewport.position.x == 25); + CHECK(viewport.position.y == 40); + CHECK(viewport.size.x == 100); + CHECK(viewport.size.y == 200); + const sfFloatRect scissor = sfView_getScissor(view2); + CHECK(scissor.position.x == 0.75f); + CHECK(scissor.position.y == 0.25f); + CHECK(scissor.size.x == 0); + CHECK(scissor.size.y == 0.5f); + sfView_destroy(view2); + sfView_destroy(view1); + } + + SECTION("sfView_setCenter") + { + sfView* view = sfView_create(); + sfView_setCenter(view, {400, 600}); + const sfVector2f center = sfView_getCenter(view); + CHECK(center.x == 400); + CHECK(center.y == 600); + sfView_destroy(view); + } + + SECTION("sfView_setSize") + { + sfView* view = sfView_create(); + sfView_setSize(view, {150, 350}); + const sfVector2f size = sfView_getSize(view); + CHECK(size.x == 150); + CHECK(size.y == 350); + sfView_destroy(view); + } + + SECTION("sfView_setRotation") + { + sfView* view = sfView_create(); + sfView_setRotation(view, 45); + CHECK(sfView_getRotation(view) == 45); + sfView_destroy(view); + } + + SECTION("sfView_setViewport") + { + sfView* view = sfView_create(); + sfView_setViewport(view, {{25, 40}, {100, 200}}); + const sfFloatRect viewport = sfView_getViewport(view); + CHECK(viewport.position.x == 25); + CHECK(viewport.position.y == 40); + CHECK(viewport.size.x == 100); + CHECK(viewport.size.y == 200); + sfView_destroy(view); + } + + SECTION("sfView_setScissor") + { + sfView* view = sfView_create(); + sfView_setScissor(view, {{0.75f, 0.25f}, {0, 0.5f}}); + const sfFloatRect scissor = sfView_getScissor(view); + CHECK(scissor.position.x == 0.75f); + CHECK(scissor.position.y == 0.25f); + CHECK(scissor.size.x == 0); + CHECK(scissor.size.y == 0.5f); + sfView_destroy(view); + } + + SECTION("sfView_move, sfView_rotate, sfView_zoom") + { + sfView* view = sfView_create(); + sfView_move(view, {15, 35}); + sfView_rotate(view, 180); + sfView_zoom(view, 2); + const sfVector2f center = sfView_getCenter(view); + CHECK(center.x == 515); + CHECK(center.y == 535); + const sfVector2f size = sfView_getSize(view); + CHECK(size.x == 2000); + CHECK(size.y == 2000); + CHECK(sfView_getRotation(view) == 180); + const sfFloatRect viewport = sfView_getViewport(view); + CHECK(viewport.position.x == 0); + CHECK(viewport.position.y == 0); + CHECK(viewport.size.x == 1); + CHECK(viewport.size.y == 1); + const sfFloatRect scissor = sfView_getScissor(view); + CHECK(scissor.position.x == 0); + CHECK(scissor.position.y == 0); + CHECK(scissor.size.x == 1); + CHECK(scissor.size.y == 1); + sfView_destroy(view); + } +}