It is now possible to create uninitialized images

This commit is contained in:
Leonetienne
2022-03-05 20:22:36 +01:00
parent b27068a6b6
commit f993241e9f
5 changed files with 133 additions and 4 deletions

View File

@@ -20,4 +20,5 @@ add_executable(Test
BmpHeader.cpp
ReInitialize.cpp
Uninitialized.cpp
)

View File

@@ -30,3 +30,17 @@ TEST_CASE(__FILE__"/ReInitialize", "[ReInitialize]")
return;
}
// Tests that re-initializing images results in initialized images
TEST_CASE(__FILE__"/ReInitializingWillInitialize", "[ReInitialize]")
{
// Create uninitialized image
BMP bmp;
REQUIRE_FALSE(bmp.IsInitialized());
// Now re-initialize it
bmp.ReInitialize({800, 600});
REQUIRE(bmp.IsInitialized());
return;
}

72
Test/Uninitialized.cpp Normal file
View File

@@ -0,0 +1,72 @@
#include <Bmp.h>
#include <stdexcept>
#include "Catch2.h"
using namespace Leonetienne::BmpPP;
// Tests that trying to interrogate any getter/Write() on an uninitialized image results in a runtime error
TEST_CASE(__FILE__"/RuntimeErrorOnUninitialized", "[Uninitialized]")
{
// Create uninitialized image
BMP bmp;
REQUIRE_THROWS_AS(
bmp.GetPixel({50, 60})
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.SetPixel({50, 60}, 1,2,3,4)
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.data()
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.GetDimensions()
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.GetColormode()
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.GetNumColorChannels()
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.GetPixelbufferSize()
, std::runtime_error
);
REQUIRE_THROWS_AS(
bmp.Write("foo.bmp")
, std::runtime_error
);
return;
}
// Tests that an uninitialized image reports to be uninitialized
TEST_CASE(__FILE__"/UninitializedImageIsUninitialized", "[Uninitialized]")
{
BMP bmp;
REQUIRE_FALSE(bmp.IsInitialized());
return;
}
// Tests that an image constructed via dimensions is initialized
TEST_CASE(__FILE__"/ConstructedByDimensionsIsInitialized", "[Uninitialized]")
{
BMP bmp({800, 600});
REQUIRE(bmp.IsInitialized());
return;
}