#include "gp/algorithms/repeat.hpp" #include "gp/containers/probabilistic/bloomfilter.hpp" #include "test_scaffold.h" #include #include typedef std::mt19937_64 cheap_rand; typedef std::mt19937_64 cheap_rand_bis; struct bfilter_test : public test_scaffold { uint32_t seed; bfilter_test() { seed = std::random_device{}(); name = __FILE__ ":1_seed"; name += std::to_string(seed); } virtual int run() { cheap_rand setter(seed); cheap_rand getter(seed); gp::bloomfilter test_filter; for(int a = 0 ; a < 100; a++) { test_filter.set_hash(setter()); } bool result = true; for(int a = 0 ; a < 100; a++) { result *= test_filter.test_hash(getter()); } return !result; } }; append_test dummy_r21fg6r43(new bfilter_test{}); struct bfilter2_test : public test_scaffold { uint32_t seedA; uint32_t seedB; bfilter2_test() { seedA = std::random_device{}(); seedB = std::random_device{}(); name = __FILE__ ":2_seedA"; name += std::to_string(seedA); name += "&seedB"; name += std::to_string(seedB); } bfilter2_test(uint32_t a, uint32_t b) { seedA = a; seedB = b; name = __FILE__ ":2_seedA"; name += std::to_string(seedA); name += "&seedB"; name += std::to_string(seedB); } virtual int run() { cheap_rand setter(seedA); cheap_rand_bis getter(seedB); int interference = 0; auto cnt = 300; gp::repeat(cnt, [&](){ gp::bloomfilter test_filter; for(int a = 0 ; a < 10000; a++) { test_filter.set_hash(setter()); } for(int a = 0 ; a < 10000; a++) { interference += test_filter.test_hash(getter()) == true; } }); float avg = interference / (float)cnt; return avg >= 210; } }; append_test dummy_r2gflu3(new bfilter2_test{}); append_test dummy_rsdgueiu3(new bfilter2_test{3780040561, 79423740}); struct bfilter3_test : public test_scaffold { uint32_t seed; bfilter3_test() { seed = std::random_device{}(); name = __FILE__ ":3_seed"; name += std::to_string(seed); } virtual int run() { cheap_rand setter(seed); cheap_rand getter(seed); gp::bloomfilter test_filter; for(int a = 0 ; a < 1000; a++) { test_filter.set_hash(setter()); } bool result = true; for(int a = 0 ; a < 1000; a++) { result *= test_filter.test_hash(getter()); } return !result; } }; append_test dummy_56489flu3(new bfilter3_test{});