CBOR: Add self describing CBOR tag at the beginning

This commit is contained in:
2023-04-19 09:53:25 +02:00
parent f471e0925d
commit d2df1b3ce3
4 changed files with 63 additions and 16 deletions

View File

@@ -2,7 +2,6 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include <catch2/catch.hpp>
#include <nlohmann/json.hpp>
#include "../frame_serialize/JFJochFrameSerializer.h"
#include "../frame_serialize/JFJochFrameDeserializer.h"
@@ -384,23 +383,61 @@ TEST_CASE("CBORSerialize_Image_Spots", "[CBOR]") {
REQUIRE(image_array.spots[1].intensity == 123);
}
TEST_CASE("CBORSerialize_End_NLohmann", "[CBOR]") {
TEST_CASE("CBORSerialize_Start_stream2", "[CBOR]") {
JFJochFrameSerializer serializer(8*1024*1024);
EndMessage message {
.number_of_images = 57789,
.max_receiver_delay = 3456,
.efficiency = 0.99,
.write_master_file = true,
.end_date = "ccc"
StartMessage message {
.data_file_count = 3,
.detector_distance = 0.0005,
.beam_center_x = 456.6,
.beam_center_y = 124.3,
.number_of_images = 34567,
.image_size_x = 456,
.image_size_y = 457,
.pixel_bit_depth = 32,
.pixel_signed = true,
.incident_energy = 12400,
.incident_wavelength = 0.988,
.frame_time = 0.0001,
.count_time = 0.000098,
.saturation_value = 65535,
.min_value = -32767,
.pixel_size_x = 0.000075,
.pixel_size_y = 0.000075,
.sensor_thickness = 0.0005,
.sensor_material = "Si",
.compression_algorithm = CompressionAlgorithm::BSHUF_LZ4,
.compression_block_size = 8192,
.unit_cell = {45,37,45,90,108,120},
.space_group_number = 154,
.max_spot_count = 250,
.storage_cell_number = 16,
.pixel_mask_enabled = true,
.arm_date = "abc",
.sample_name = "lyso",
.file_prefix = "lyso1/dir/file",
.channels = {"default", "sc2"},
.detector_description = "EIGER 16M",
.detector_serial_number = "123",
.series_unique_id = "bla",
.series_id = 4567,
.goniometer = {{"omega", {
.increment = 0.1f,
.start = 10.0f
}}},
.detector_translation = {0.5f, 0.0f, 0.5f},
.source_name = "Swiss Light Source",
.source_name_short = "SLS",
.instrument_name = "X06SA",
.instrument_name_short = "PXIII",
.rad_int_bin_number = 35,
.summation = 567
};
message.pixel_mask["sc0"] = std::vector<uint32_t>(456*457, 15);
REQUIRE_NOTHROW(serializer.SerializeSequenceEnd(message));
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
auto image = serializer.GetBuffer();
auto serialized = serializer.GetBuffer();
nlohmann::json j ;
REQUIRE_NOTHROW(j = nlohmann::json::from_cbor(serialized));
REQUIRE(j["type"] == "end");
REQUIRE(j["write_master_file"] == true);
REQUIRE(j["end_date"] == "ccc");
}