diff --git a/src/graphics/Bitmap.cpp b/src/graphics/Bitmap.cpp index b197947..bffb917 100644 --- a/src/graphics/Bitmap.cpp +++ b/src/graphics/Bitmap.cpp @@ -52,6 +52,11 @@ bool Bitmap::setPixels(const std::vector& pixels) { return true; } +template +std::vector Bitmap::getPixelsCpy() { + return mPixels; +} + template std::optional> Bitmap::getLine(uint16_t line) { if (line >= mHeight) { diff --git a/src/graphics/Bitmap.hpp b/src/graphics/Bitmap.hpp index 42c5ec1..16325e8 100644 --- a/src/graphics/Bitmap.hpp +++ b/src/graphics/Bitmap.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -41,6 +42,7 @@ class Bitmap { uint16_t getWidth(); uint16_t getHeight(); bool setPixels(const std::vector& pixels); + std::vector getPixelsCpy(); std::optional> getLine(uint16_t line); std::optional> getCol(uint16_t col); diff --git a/tests/bitmap_test/bitmap_test.cpp b/tests/bitmap_test/bitmap_test.cpp index 532196a..3185b0e 100644 --- a/tests/bitmap_test/bitmap_test.cpp +++ b/tests/bitmap_test/bitmap_test.cpp @@ -21,7 +21,9 @@ #include +#include #include +#include TEST(basic_test, Bitmap_createBitmapWithCertainSize_yieldsSpecifiedSize) { auto bm = ptprnt::graphics::Bitmap(16, 8); @@ -64,3 +66,36 @@ TEST(basic_test, Bitmap_getBitmapColInsideOfImage_yieldsValidColSize) { auto colSize = col->size(); ASSERT_EQ(8, colSize); } + +TEST(basic_test, Bitmap_setPixels_setsGivenPixels) { + auto bm = ptprnt::graphics::Bitmap(16, 8); + std::vector pix(16 * 8); + + bm.setPixels(pix); + auto pixCpy = bm.getPixelsCpy(); + + ASSERT_EQ(pix, pixCpy); +} + +TEST(basic_test, Bitmap_setPixels_isSuccessfulWithValidPixels) { + auto bm = ptprnt::graphics::Bitmap(16, 8); + std::vector pix(16 * 8); + + ASSERT_TRUE(bm.setPixels(pix)); +} + +TEST(basic_test, Bitmap_setPixels_yieldsSamePixelsBack) { + auto bm = ptprnt::graphics::Bitmap(16, 8); + std::vector pix(16 * 8); + + bm.setPixels(pix); + auto pixCpy = bm.getPixelsCpy(); + ASSERT_EQ(pix, pixCpy); +} + +TEST(basic_test, Bitmap_setPixelsWithWrongSize_isFailing) { + auto bm = ptprnt::graphics::Bitmap(5, 8); + std::vector pix(16 * 8); + + ASSERT_FALSE(bm.setPixels(pix)); +}