#include "gp/utils/pair.hpp" #include "gp/algorithms/min_max.hpp" #include "test_scaffold.h" #include #include typedef std::mt19937_64 cheap_rand; struct pair_test : public test_scaffold { uint32_t seed; pair_test() { seed = std::random_device{}(); name = __FILE__ ":1_seed"; name += std::to_string(seed); } virtual int run() { cheap_rand setter(seed); gp::pair v{0, "zero"}; bool result = true; for(int i = 0 ; i < 100; i++) { auto a = setter(); v = gp::pair(a, std::to_string(a)); result = gp::pair(a, std::to_string(a)) == v ? result : false; } return !result; } }; append_test dummy_rsly21r43(new pair_test{}); template struct sort_pair_test : public test_scaffold { uint32_t seed; sort_pair_test() { seed = std::random_device{}(); name = __FILE__ ":2_sort_pair"; name += std::to_string(seed); } virtual int run() { // TODO: Verify things, like, for real cheap_rand setter(seed); bool result = true; std::uniform_real_distribution dist{-1.0, 1.0}; for(int i = 0 ; i < 10000; i++) { gp::pair v{dist(setter), dist(setter)}; gp::pair ascending{gp::min(v.first, v.second), gp::max(v.first, v.second)}, descending{gp::max(v.first, v.second), gp::min(v.first, v.second)}, clamped{gp::clamp(0.25,v.first, 0.5), gp::min(0.5, v.first, v.second)}, minmaxed{gp::min(dist(setter), dist(setter), dist(setter)), gp::max(dist(setter), dist(setter), dist(setter))}, rngclamp{gp::clamp(dist(setter),dist(setter), dist(setter)), gp::clamp(dist(setter), dist(setter), dist(setter))}; result = ascending.first == descending.second ? result : false; } return !result; } }; append_test dummy_5qsd5r43(new sort_pair_test{}); append_test dummy_4365xv43(new sort_pair_test{}); template struct sort_pair_test2 : public test_scaffold { uint32_t seed; sort_pair_test2() { seed = std::random_device{}(); name = __FILE__ ":3_sort_pair2"; name += std::to_string(seed); } virtual int run() { // TODO: Verify things, like, for real cheap_rand setter(seed); bool result = true; std::uniform_int_distribution dist{0, 4096}; for(int i = 0 ; i < 10000; i++) { gp::pair v{dist(setter), dist(setter)}; gp::pair ascending{gp::min(v.first, v.second), gp::max(v.first, v.second)}, descending{gp::max(v.first, v.second), gp::min(v.first, v.second)}, clamped{gp::clamp(512,v.first, 1024), gp::min(1024, v.first, v.second)}, minmaxed{gp::min(dist(setter),dist(setter), dist(setter)), gp::max(dist(setter), dist(setter), dist(setter))}, rngclamp{gp::clamp(dist(setter),dist(setter), dist(setter)), gp::clamp(dist(setter), dist(setter), dist(setter))}; result = ascending.first == descending.second ? result : false; } return !result; } }; append_test dummy_5zegfh43(new sort_pair_test2{}); append_test dummy_sdghtfh4(new sort_pair_test2{}); append_test dummy_judlg8gb(new sort_pair_test2{}); append_test dummy_5egkzbcd(new sort_pair_test2{});