v1.0.0-rc.34
This commit is contained in:
89
tests/ImageMetadataTest.cpp
Normal file
89
tests/ImageMetadataTest.cpp
Normal file
@@ -0,0 +1,89 @@
|
||||
// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include <catch2/catch_all.hpp>
|
||||
|
||||
#include "../receiver/ImageMetadata.h"
|
||||
|
||||
TEST_CASE("ImageMetadata_ROI") {
|
||||
DetectorGeometry geom(8,2,8,36, true);
|
||||
DiffractionExperiment experiment(geom);
|
||||
|
||||
experiment.ROI().SetROI(ROIDefinition{.boxes = {ROIBox("roi1",1,5,2,8)}});
|
||||
|
||||
int64_t sum = 100;
|
||||
|
||||
ImageMetadata metadata(experiment);
|
||||
DeviceOutput output{};
|
||||
output.module_statistics.module_number = 5;
|
||||
output.module_statistics.frame_number = 0;
|
||||
output.roi_counts[0].sum = sum;
|
||||
output.roi_counts[0].sum_x_weighted = 50 * sum;
|
||||
output.roi_counts[0].sum_y_weighted = 23 * sum;
|
||||
|
||||
metadata.Process(&output);
|
||||
|
||||
DataMessage message;
|
||||
|
||||
REQUIRE_NOTHROW(metadata.Export(message, 123));
|
||||
|
||||
REQUIRE(message.roi.size() == 1);
|
||||
REQUIRE(message.roi.contains("roi1"));
|
||||
REQUIRE(message.roi["roi1"].sum == sum);
|
||||
REQUIRE(message.roi["roi1"].x_weighted == sum * (geom.GetX0(5) + 50));
|
||||
REQUIRE(message.roi["roi1"].y_weighted == sum * (geom.GetY0(5) - 23));
|
||||
}
|
||||
|
||||
TEST_CASE("ImageMetadata_ROI_flipped_module") {
|
||||
DetectorGeometry geom({DetectorModuleGeometry(45,1811,
|
||||
DetectorModuleGeometry::Direction::Yneg,
|
||||
DetectorModuleGeometry::Direction::Xpos)});
|
||||
DiffractionExperiment experiment(geom);
|
||||
|
||||
experiment.ROI().SetROI(ROIDefinition{.boxes = {ROIBox("roi1",1,5,2,8)}});
|
||||
|
||||
int64_t sum = 100;
|
||||
|
||||
ImageMetadata metadata(experiment);
|
||||
DeviceOutput output{};
|
||||
output.module_statistics.module_number = 0;
|
||||
output.module_statistics.frame_number = 0;
|
||||
output.roi_counts[0].sum = sum;
|
||||
output.roi_counts[0].sum_x_weighted = 50 * sum;
|
||||
output.roi_counts[0].sum_y_weighted = 23 * sum;
|
||||
|
||||
metadata.Process(&output);
|
||||
|
||||
DataMessage message;
|
||||
|
||||
REQUIRE_NOTHROW(metadata.Export(message, 123));
|
||||
|
||||
REQUIRE(message.roi.size() == 1);
|
||||
REQUIRE(message.roi.contains("roi1"));
|
||||
REQUIRE(message.roi["roi1"].sum == sum);
|
||||
REQUIRE(message.roi["roi1"].x_weighted == sum * (23 + 45) );
|
||||
REQUIRE(message.roi["roi1"].y_weighted == sum * (1811 - 50));
|
||||
}
|
||||
|
||||
TEST_CASE("ImageMetadata_PulseID_mismatch") {
|
||||
DetectorGeometry geom(8,2,8,36, true);
|
||||
DiffractionExperiment experiment(geom);
|
||||
experiment.PulsedSource(true);
|
||||
|
||||
ImageMetadata metadata(experiment);
|
||||
DeviceOutput output{};
|
||||
output.module_statistics.module_number = 0;
|
||||
output.module_statistics.frame_number = 0;
|
||||
output.module_statistics.pulse_id = 123.0;
|
||||
metadata.Process(&output);
|
||||
|
||||
output.module_statistics.module_number = 1;
|
||||
output.module_statistics.frame_number = 0;
|
||||
output.module_statistics.pulse_id = 124.0;
|
||||
metadata.Process(&output);
|
||||
|
||||
DataMessage message;
|
||||
|
||||
REQUIRE_NOTHROW(metadata.Export(message, 123));
|
||||
REQUIRE(message.xfel_pulse_id == UINT64_MAX);
|
||||
}
|
||||
Reference in New Issue
Block a user