Files
Jungfraujoch/tests/JFPedestalTest.cpp
Filip Leonarski 1757d42182 Initial commit
Signed-off-by: Filip Leonarski <filip.leonarski@psi.ch>
2023-04-06 11:17:59 +02:00

64 lines
1.9 KiB
C++

// Copyright (2019-2022) Paul Scherrer Institute
// SPDX-License-Identifier: GPL-3.0-or-later
#include <catch2/catch.hpp>
#include <random>
#include "../jungfrau/JFModulePedestal.h"
TEST_CASE("JFPedestal_Serialize","[ProtoBuf][JFModulePedestal]") {
// Predictable random number generator
std::mt19937 g1(1576);
std::normal_distribution<double> distribution(12000, 100);
JFModulePedestal pedestal;
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
pedestal.GetPedestal()[i] = static_cast<uint16_t>(distribution(g1));
pedestal.GetPedestalMask()[i] = static_cast<uint8_t>(i % UINT8_MAX);
}
pedestal.SetCollectionTime(3456);
pedestal.SetFrameCount(5000);
JFJochProtoBuf::JFPedestal serialized = pedestal;
JFModulePedestal deserialized = serialized;
size_t diff = 0, diff_rms = 0, diff_mask = 0;
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
if (pedestal.GetPedestal()[i] != deserialized.GetPedestal()[i])
diff++;
if (pedestal.GetPedestalMask()[i] != deserialized.GetPedestalMask()[i])
diff_mask++;
}
REQUIRE(diff == 0);
REQUIRE(diff_rms == 0);
REQUIRE(diff_mask == 0);
REQUIRE(deserialized.GetCollectionTime() == pedestal.GetCollectionTime());
REQUIRE(deserialized.GetFrameCount() == pedestal.GetFrameCount());
}
TEST_CASE("JFPedestal_Mean","[JFModulePedestal]") {
JFModulePedestal pedestal;
auto pedestal_arr = pedestal.GetPedestal();
for (int i = 0; i < RAW_MODULE_SIZE; i++)
pedestal_arr[i] = 2455;
REQUIRE(pedestal.Mean() == Approx(2455));
}
TEST_CASE("JFPedestal_GetPedestal","[JFModulePedestal]") {
JFModulePedestal pedestal;
auto pedestal_arr = pedestal.GetPedestal();
for (int i = 0; i < RAW_MODULE_SIZE; i++)
pedestal_arr[i] = i;
auto fp = pedestal.GetPedestal();
REQUIRE(fp[0] == 0.0);
REQUIRE(fp[1] == 1);
REQUIRE(fp[2] == 2);
REQUIRE(fp[65535] == 65535);
}