Files
Jungfraujoch/tests/LossyFilterTest.cpp

55 lines
1.3 KiB
C++

// Copyright (2019-2024) Paul Scherrer Institute
#include <catch2/catch.hpp>
#include "../receiver/LossyFilter.h"
TEST_CASE("LossyFilterDisabled","[LossyFilter]") {
LossyFilter filter(false, 0.0);
DataMessage message{
.number = 123,
.indexing_result = 0
};
REQUIRE(filter.ApplyFilter(message));
REQUIRE(filter.ApplyFilter(message));
REQUIRE(filter.ApplyFilter(message));
}
TEST_CASE("LossyFilterEnable","[LossyFilter]") {
LossyFilter filter(true, 0.0);
DataMessage message_1{
.number = 123,
.indexing_result = 1
};
DataMessage message_2{
.number = 124,
.indexing_result = 0
};
REQUIRE(filter.ApplyFilter(message_1));
REQUIRE(!filter.ApplyFilter(message_2));
REQUIRE(filter.ApplyFilter(message_1));
REQUIRE(filter.ApplyFilter(message_1));
}
TEST_CASE("LossyFilterEnable_Prob","[LossyFilter]") {
LossyFilter filter(true, 0.5);
int64_t accepted = 0;
int64_t count = 0;
for (int i = 0; i < 1000000; i++) {
DataMessage message{
.number = 124,
.indexing_result = 0
};
accepted += filter.ApplyFilter(message);
count++;
}
double frac = static_cast<double>(accepted) / static_cast<double>(count);
REQUIRE(frac < 0.51);
REQUIRE(frac > 0.49);
}