64 lines
1.9 KiB
C++
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);
|
|
} |