diff --git a/unitTests/CMakeLists.txt b/unitTests/CMakeLists.txt index d2e3dd01..a1da54ab 100644 --- a/unitTests/CMakeLists.txt +++ b/unitTests/CMakeLists.txt @@ -3,6 +3,7 @@ add_executable(unit_tests mainTestRunner.cpp test_types.cpp test_tiffheader.cpp test_futils.cpp + test_enforce.cpp test_safe_op.cpp ) diff --git a/unitTests/test_enforce.cpp b/unitTests/test_enforce.cpp new file mode 100644 index 00000000..acc88957 --- /dev/null +++ b/unitTests/test_enforce.cpp @@ -0,0 +1,24 @@ +#include + +#include "gtestwrapper.h" + +TEST(enforce, errMessage) +{ + try { + enforce(false, Exiv2::kerErrorMessage, "an error occurred"); + } catch (const Exiv2::Error& e) { + ASSERT_STREQ(e.what(), "an error occurred"); + } +} + +TEST(enforce, exceptionThrown) +{ + ASSERT_NO_THROW(enforce(true, Exiv2::kerErrorMessage)); + + ASSERT_THROW(enforce(false, Exiv2::kerErrorMessage), Exiv2::Error); + ASSERT_THROW(enforce(false, "error message"), std::overflow_error); + ASSERT_THROW(enforce(false, Exiv2::kerMallocFailed), Exiv2::Error); + ASSERT_THROW(enforce(false, Exiv2::kerErrorMessage, "error message"), Exiv2::Error); + ASSERT_THROW(enforce(false, Exiv2::kerDataSourceOpenFailed, "path", "strerror"), Exiv2::Error); + ASSERT_THROW(enforce(false, Exiv2::kerCallFailed, "path", "strerror", "function"), Exiv2::Error); +}