diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 928d1d5..f32f988 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -48,6 +48,7 @@ add_executable(test-csfml-graphics Graphics/BlendMode.test.cpp Graphics/Color.test.cpp Graphics/CoordinateType.test.cpp + Graphics/Image.test.cpp Graphics/PrimitiveType.test.cpp Graphics/Rect.test.cpp Graphics/RenderStates.test.cpp @@ -59,7 +60,7 @@ add_executable(test-csfml-graphics ) target_link_libraries(test-csfml-graphics PRIVATE csfml-graphics Catch2::Catch2WithMain SFML::Graphics) set_target_warnings(test-csfml-graphics) -catch_discover_tests(test-csfml-graphics) +catch_discover_tests(test-csfml-graphics WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) add_executable(test-csfml-network Network/Ftp.test.cpp diff --git a/test/Graphics/Image.test.cpp b/test/Graphics/Image.test.cpp new file mode 100644 index 0000000..51a716b --- /dev/null +++ b/test/Graphics/Image.test.cpp @@ -0,0 +1,56 @@ +#include + +#include +#include + +TEST_CASE("[Graphics] sfImage") +{ + SECTION("sfImage_create") + { + const sfImage* image = sfImage_create({100, 100}); + REQUIRE(image); + const auto size = sfImage_getSize(image); + CHECK(size.x == 100); + CHECK(size.y == 100); + const auto pixel = sfImage_getPixel(image, {50, 50}); + CHECK(pixel.r == sfBlack.r); + CHECK(pixel.g == sfBlack.g); + CHECK(pixel.b == sfBlack.b); + CHECK(pixel.a == sfBlack.a); + CHECK(sfImage_getPixelsPtr(image)); + sfImage_destroy(image); + } + + SECTION("sfImage_createFromColor") + { + const sfImage* image = sfImage_createFromColor({100, 100}, sfMagenta); + REQUIRE(image); + const auto size = sfImage_getSize(image); + CHECK(size.x == 100); + CHECK(size.y == 100); + const auto pixel = sfImage_getPixel(image, {50, 50}); + CHECK(pixel.r == sfMagenta.r); + CHECK(pixel.g == sfMagenta.g); + CHECK(pixel.b == sfMagenta.b); + CHECK(pixel.a == sfMagenta.a); + CHECK(sfImage_getPixelsPtr(image)); + sfImage_destroy(image); + } + + SECTION("sfImage_createFromFile") + { + const auto filename = std::string("Graphics/sfml-logo-big.") + GENERATE("bmp", "gif", "jpg", "png", "psd"); + INFO("Filename: " << filename); + const sfImage* image = sfImage_createFromFile(filename.c_str()); + REQUIRE(image); + const auto size = sfImage_getSize(image); + CHECK(size.x == 1001); + CHECK(size.y == 304); + const auto pixel = sfImage_getPixel(image, {0, 0}); + CHECK(pixel.r == sfWhite.r); + CHECK(pixel.g == sfWhite.g); + CHECK(pixel.b == sfWhite.b); + CHECK(sfImage_getPixelsPtr(image)); + sfImage_destroy(image); + } +} diff --git a/test/Graphics/sfml-logo-big.bmp b/test/Graphics/sfml-logo-big.bmp new file mode 100644 index 0000000..615a25e Binary files /dev/null and b/test/Graphics/sfml-logo-big.bmp differ diff --git a/test/Graphics/sfml-logo-big.gif b/test/Graphics/sfml-logo-big.gif new file mode 100644 index 0000000..40d594d Binary files /dev/null and b/test/Graphics/sfml-logo-big.gif differ diff --git a/test/Graphics/sfml-logo-big.jpg b/test/Graphics/sfml-logo-big.jpg new file mode 100644 index 0000000..7b7c5d4 Binary files /dev/null and b/test/Graphics/sfml-logo-big.jpg differ diff --git a/test/Graphics/sfml-logo-big.png b/test/Graphics/sfml-logo-big.png new file mode 100644 index 0000000..d22d46d Binary files /dev/null and b/test/Graphics/sfml-logo-big.png differ diff --git a/test/Graphics/sfml-logo-big.psd b/test/Graphics/sfml-logo-big.psd new file mode 100644 index 0000000..8c107d6 Binary files /dev/null and b/test/Graphics/sfml-logo-big.psd differ