#include #include #include "Catch2.h" using namespace Leonetienne::BmpPP; using namespace Leonetienne::Eule; // Tests that cropping produces the correct result TEST_CASE(__FILE__"/HappyPath", "[Cropping]") { SECTION("RGB") { // Read an image BMP bmp("base_hachi.bmp"); // Crop it bmp = bmp.Crop( Vector2i(95, 83), Vector2i(149, 239) ); // Read reference image const BMP reference("base_hachi_cropped.bmp"); // Assert that they are equal REQUIRE(bmp == reference); } SECTION("RGBA") { // Read an image BMP bmp("basea_hachi.bmp"); // Crop it bmp = bmp.Crop( Vector2i(95, 83), Vector2i(149, 239) ); // Read reference image const BMP reference("basea_hachi_cropped.bmp"); // Assert that they are equal REQUIRE(bmp == reference); } return; } // Tests that cropping with extreme points works (like, 0,0, widht, height) TEST_CASE(__FILE__"/ExtremePoints", "[Cropping]") { SECTION("Crop includes {0,0}") { // Read an image BMP bmp("base_hachi.bmp"); // Crop it bmp = bmp.Crop( Vector2i(0, 0), Vector2i(252, 337) ); // Read reference image const BMP reference("base_hachi_cropped_extreme_topleft.bmp"); // Assert that they are equal REQUIRE(bmp == reference); } SECTION("Crop includes {width, height}") { // Read an image BMP bmp("base_hachi.bmp"); // Crop it bmp = bmp.Crop( Vector2i(96, 54), bmp.GetDimensions() - Vector2i(96, 54) // As far-right as we can get ); // Read reference image const BMP reference("base_hachi_cropped_extreme_bottomright.bmp"); // Assert that they are equal REQUIRE(bmp == reference); } SECTION("Crop includes {0, 0, width, height}") { // Read an image BMP bmp("base_hachi.bmp"); // Crop it (without taking away anything, lol) BMP cropped = bmp.Crop( Vector2i(0, 0), bmp.GetDimensions() // As far-right as we can get ); // Assert that the cropped image remains the same (as we cropped from 0,0 to width,height) REQUIRE(bmp == cropped); } return; }