// Copyright (2019-2024) Paul Scherrer Institute #include #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(accepted) / static_cast(count); REQUIRE(frac < 0.51); REQUIRE(frac > 0.49); }