JFJochFrameSerializer: add functions to append image to buffer

This commit is contained in:
2023-05-01 21:09:03 +02:00
parent af2ed525a0
commit dce186f9f9
3 changed files with 80 additions and 2 deletions

View File

@@ -254,6 +254,54 @@ TEST_CASE("CBORSerialize_Image_2", "[CBOR]") {
REQUIRE(memcmp(image_array.image.data, test.data(), test.size()) == 0);
}
TEST_CASE("CBORSerialize_Image_Append", "[CBOR]") {
JFJochFrameSerializer serializer(8*1024*1024);
std::vector<SpotToSave> spots;
std::vector<uint8_t> test(512*1024);
for (int i = 0; i < test.size(); i++)
test[i] = (i * 253 + 56) % 256;
CBORImage image {
.data = nullptr,
.size = 0,
.xpixel = 1024,
.ypixel = 512,
.pixel_depth_bytes = 1,
.pixel_is_signed = false,
.algorithm = CompressionAlgorithm::NO_COMPRESSION,
.channel = "default"
};
DataMessage message {
.number = 480,
.image = image,
.spots = spots,
.indexing_result = 3
};
REQUIRE_NOTHROW(serializer.SerializeImage(message));
memcpy(serializer.GetImageAppendLocation(), test.data(), 512*1024);
REQUIRE_NOTHROW(serializer.AppendImage(512*1024));
JFJochFrameDeserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(serializer.GetBuffer(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == JFJochFrameDeserializer::Type::IMAGE);
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.image.algorithm == CompressionAlgorithm::NO_COMPRESSION);
REQUIRE(image_array.image.xpixel == 1024);
REQUIRE(image_array.image.ypixel == 512);
REQUIRE(image_array.image.pixel_depth_bytes == 1);
REQUIRE(!image_array.image.pixel_is_signed);
REQUIRE(image_array.image.channel == "default");
REQUIRE(image_array.image.size == test.size());
REQUIRE(image_array.indexing_result == message.indexing_result);
REQUIRE(image_array.number == 480);
REQUIRE(memcmp(image_array.image.data, test.data(), test.size()) == 0);
}
TEST_CASE("CBORSerialize_Image_Compressed", "[CBOR]") {
JFJochFrameSerializer serializer(8*1024*1024);