diff --git a/Test/CMakeLists.txt b/Test/CMakeLists.txt index 777aa67..8a2f19b 100644 --- a/Test/CMakeLists.txt +++ b/Test/CMakeLists.txt @@ -24,6 +24,7 @@ add_executable(Test Read.cpp Write.cpp OperatorEquals.cpp + FillChannel.cpp ) # Move test images to build dir diff --git a/Test/FillChannel.cpp b/Test/FillChannel.cpp new file mode 100644 index 0000000..24ab8f9 --- /dev/null +++ b/Test/FillChannel.cpp @@ -0,0 +1,108 @@ +#include +#include "Catch2.h" +#include +#include + +using namespace Leonetienne::BmpPP; +using namespace Eule; + +#define IMSIZE Vector2i(800, 600) + +// Tests that FillChannel works correctly +TEST_CASE(__FILE__"/WillWriteTheCorrectData", "[FillChannel]") +{ + SECTION("RGB image, fill red") { + // Read a red reference image + BMP reference("base_red.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGB); + + // Fill its red channel with 255 + bmp.FillChannel(0, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + SECTION("RGB image, fill green") { + // Read a green reference image + BMP reference("base_green.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGB); + + // Fill its green channel with 255 + bmp.FillChannel(1, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + SECTION("RGB image, fill blue") { + // Read a blue reference image + BMP reference("base_blue.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGB); + + // Fill its blue channel with 255 + bmp.FillChannel(2, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + + SECTION("RGBA image, fill red") { + // Read a red reference image + BMP reference("basea_red.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGBA); + + // Fill its red channel with 255 + bmp.FillChannel(0, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + SECTION("RGBA image, fill green") { + // Read a green reference image + BMP reference("basea_green.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGBA); + + // Fill its green channel with 255 + bmp.FillChannel(1, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + SECTION("RGBA image, fill blue") { + // Read a blue reference image + BMP reference("basea_blue.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGBA); + + // Fill its blue channel with 255 + bmp.FillChannel(2, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + SECTION("RGBA image, fill alpha") { + // Read any reference image with alpha=255 + BMP reference("basea_blue.bmp"); + + // Now create a new image + BMP bmp(IMSIZE, Colormode::RGBA); + + // Fill its blue, and alpha channel with 255 + bmp.FillChannel(2, 0xFF); + bmp.FillChannel(3, 0xFF); + + // Assert that they are equal + REQUIRE(bmp == reference); + } + return; +} diff --git a/Test/TestAssets/base_blue.bmp b/Test/TestAssets/base_blue.bmp new file mode 100644 index 0000000..77f10d8 Binary files /dev/null and b/Test/TestAssets/base_blue.bmp differ diff --git a/Test/TestAssets/base_green.bmp b/Test/TestAssets/base_green.bmp new file mode 100644 index 0000000..984b667 Binary files /dev/null and b/Test/TestAssets/base_green.bmp differ diff --git a/Test/TestAssets/base_red.bmp b/Test/TestAssets/base_red.bmp new file mode 100644 index 0000000..01bfec3 Binary files /dev/null and b/Test/TestAssets/base_red.bmp differ diff --git a/Test/TestAssets/basea_blue.bmp b/Test/TestAssets/basea_blue.bmp new file mode 100644 index 0000000..94a576b Binary files /dev/null and b/Test/TestAssets/basea_blue.bmp differ diff --git a/Test/TestAssets/basea_green.bmp b/Test/TestAssets/basea_green.bmp new file mode 100644 index 0000000..882310c Binary files /dev/null and b/Test/TestAssets/basea_green.bmp differ diff --git a/Test/TestAssets/basea_red.bmp b/Test/TestAssets/basea_red.bmp new file mode 100644 index 0000000..971650d Binary files /dev/null and b/Test/TestAssets/basea_red.bmp differ