Implemented Crop method, and added tests

This commit is contained in:
Leonetienne
2022-03-06 17:42:28 +01:00
parent d5a1e4f93f
commit 2f0d39a797
10 changed files with 143 additions and 1 deletions

View File

@@ -30,6 +30,7 @@ add_executable(Test
SwapChannels.cpp
Rotate.cpp
ConvertColormode.cpp
Crop.cpp
)
# Move test images to build dir

100
Test/Crop.cpp Normal file
View File

@@ -0,0 +1,100 @@
#include <Bmp.h>
#include <stdexcept>
#include "Catch2.h"
using namespace Leonetienne::BmpPP;
using namespace 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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB