You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
3.0 KiB
C++

// SPDX-License-Identifier: GPL-2.0-or-later
#include <exiv2/jp2image.hpp>
#include <gtest/gtest.h>
using namespace Exiv2;
TEST(Jp2Image, canBeCreatedFromScratch) {
auto memIo = std::make_unique<MemIo>();
const bool create{true};
ASSERT_NO_THROW(Jp2Image image(std::move(memIo), create));
}
TEST(Jp2Image, canBeOpenedEvenWithAnEmptyMemIo) {
auto memIo = std::make_unique<MemIo>();
const bool create{false};
ASSERT_NO_THROW(Jp2Image image(std::move(memIo), create));
}
TEST(Jp2Image, mimeTypeIsPng) {
auto memIo = std::make_unique<MemIo>();
const bool create{true};
Jp2Image image(std::move(memIo), create);
ASSERT_EQ("image/jp2", image.mimeType());
}
TEST(Jp2Image, printStructurePrintsNothingWithKpsNone) {
auto memIo = std::make_unique<MemIo>();
const bool create{true};
Jp2Image image(std::move(memIo), create);
std::ostringstream stream;
image.printStructure(stream, Exiv2::kpsNone, 1);
ASSERT_TRUE(stream.str().empty());
}
TEST(Jp2Image, printStructurePrintsDataWithKpsBasic) {
auto memIo = std::make_unique<MemIo>();
const bool create{true};
Jp2Image image(std::move(memIo), create);
std::ostringstream stream;
image.printStructure(stream, Exiv2::kpsBasic, 1);
ASSERT_FALSE(stream.str().empty());
}
TEST(Jp2Image, cannotReadMetadataFromEmptyIo) {
auto memIo = std::make_unique<MemIo>();
const bool create{false};
Jp2Image image(std::move(memIo), create);
try {
image.readMetadata();
FAIL();
} catch (const Exiv2::Error& e) {
ASSERT_EQ(ErrorCode::kerNotAnImage, e.code());
ASSERT_STREQ("This does not look like a JPEG-2000 image", e.what());
}
}
TEST(Jp2Image, cannotReadMetadataFromIoWhichCannotBeOpened) {
auto memIo = std::make_unique<FileIo>("NonExistingPath.jp2");
const bool create{false};
Jp2Image image(std::move(memIo), create);
try {
image.readMetadata();
FAIL();
} catch (const Exiv2::Error& e) {
ASSERT_EQ(ErrorCode::kerDataSourceOpenFailed, e.code());
}
}
TEST(Jp2Image, cannotWriteMetadataToEmptyIo) {
auto memIo = std::make_unique<MemIo>();
const bool create{false};
Jp2Image image(std::move(memIo), create);
try {
image.writeMetadata();
FAIL();
} catch (const Exiv2::Error& e) {
ASSERT_EQ(ErrorCode::kerNoImageInInputData, e.code());
}
}
TEST(Jp2Image, canWriteMetadataFromCreatedJp2Image) {
auto memIo = std::make_unique<MemIo>();
const bool create{true};
Jp2Image image(std::move(memIo), create);
ASSERT_NO_THROW(image.writeMetadata());
}
TEST(Jp2Image, cannotWriteMetadataToIoWhichCannotBeOpened) {
auto memIo = std::make_unique<FileIo>("NonExistingPath.jp2");
const bool create{false};
Jp2Image image(std::move(memIo), create);
try {
image.readMetadata();
FAIL();
} catch (const Exiv2::Error& e) {
ASSERT_EQ(ErrorCode::kerDataSourceOpenFailed, e.code());
}
}
TEST(Jp2Image, canWriteMetadataAndReadAfterwards) {
auto memIo = std::make_unique<MemIo>();
const bool create{true};
Jp2Image image(std::move(memIo), create);
ASSERT_NO_THROW(image.writeMetadata());
ASSERT_NO_THROW(image.readMetadata());
}