v1.0.0-rc.72
This commit is contained in:
@@ -822,6 +822,66 @@ TEST_CASE("CBORSerialize_Image_Spots", "[CBOR]") {
|
||||
REQUIRE(image_array.spots[1].indexed);
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_Reflections") {
|
||||
// Prepare a few reflections with distinct values
|
||||
std::vector<Reflection> refs_in;
|
||||
refs_in.push_back(Reflection{
|
||||
.h = 1, .k = 0, .l = -1,
|
||||
.predicted_x = 1024.5f, .predicted_y = 768.25f,
|
||||
.d = 2.345f
|
||||
});
|
||||
refs_in.push_back(Reflection{
|
||||
.h = -3, .k = 2, .l = 7,
|
||||
.predicted_x = 5.0f, .predicted_y = 10.0f,
|
||||
.d = 4.0f
|
||||
});
|
||||
refs_in.push_back(Reflection{
|
||||
.h = 0, .k = 0, .l = 1,
|
||||
.predicted_x = 0.0f, .predicted_y = 0.0f,
|
||||
.d = 10.0f
|
||||
});
|
||||
|
||||
// Minimal DataMessage carrying reflections
|
||||
std::vector<uint16_t> test(512);
|
||||
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
DataMessage msg_in {
|
||||
.number = 789,
|
||||
.image = image,
|
||||
.reflections = refs_in
|
||||
};
|
||||
|
||||
// Serialize
|
||||
std::vector<uint8_t> buffer(1 << 20); // 1 MB buffer for safety
|
||||
CBORStream2Serializer ser(buffer.data(), buffer.size());
|
||||
ser.SerializeImage(msg_in);
|
||||
|
||||
// Deserialize
|
||||
auto deserialized = CBORStream2Deserialize(buffer.data(), ser.GetBufferSize());
|
||||
REQUIRE(deserialized);
|
||||
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
|
||||
REQUIRE(deserialized->data_message);
|
||||
DataMessage &msg_out = *deserialized->data_message;
|
||||
|
||||
// Check reflections
|
||||
REQUIRE(msg_out.reflections.size() == refs_in.size());
|
||||
for (size_t i = 0; i < refs_in.size(); ++i) {
|
||||
const auto& a = refs_in[i];
|
||||
const auto& b = msg_out.reflections[i];
|
||||
|
||||
CHECK(a.h == b.h);
|
||||
CHECK(a.k == b.k);
|
||||
CHECK(a.l == b.l);
|
||||
|
||||
CHECK(b.predicted_x == Catch::Approx(a.predicted_x).margin(1e-6f));
|
||||
CHECK(b.predicted_y == Catch::Approx(a.predicted_y).margin(1e-6f));
|
||||
|
||||
CHECK(b.d == Catch::Approx(a.d).margin(1e-6f));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_ROI", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
Reference in New Issue
Block a user