|
|
- #include "gp/utils/pair.hpp"
- #include "gp/algorithms/min_max.hpp"
- #include "test_scaffold.h"
-
- #include <random>
- #include <string>
-
- 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<double, std::string> 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<double, std::string>(a, std::to_string(a)) == v ? result : false;
- }
-
- return !result;
- }
- };
-
- append_test dummy_rsly21r43(new pair_test{});
-
- template<typename T>
- 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<T> dist{-1.0, 1.0};
- for(int i = 0 ; i < 10000; i++)
- {
- gp::pair<T, T> v{dist(setter), dist(setter)};
- gp::pair<T, T>
- 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<float>(0.25,v.first, 0.5), gp::min(0.5, v.first, v.second)},
- minmaxed{gp::min<T>(dist(setter), dist(setter), dist(setter)), gp::max<T>(dist(setter), dist(setter), dist(setter))},
- rngclamp{gp::clamp<T>(dist(setter),dist(setter), dist(setter)), gp::clamp<T>(dist(setter), dist(setter), dist(setter))};
- result = ascending.first == descending.second ? result : false;
- }
-
- return !result;
- }
- };
-
- append_test dummy_5qsd5r43(new sort_pair_test<float>{});
- append_test dummy_4365xv43(new sort_pair_test<double>{});
-
- template<typename T>
- 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<T> dist{0, 4096};
- for(int i = 0 ; i < 10000; i++)
- {
- gp::pair<T, T> v{dist(setter), dist(setter)};
- gp::pair<T, T>
- ascending{gp::min<T>(v.first, v.second), gp::max<T>(v.first, v.second)},
- descending{gp::max<T>(v.first, v.second), gp::min<T>(v.first, v.second)},
- clamped{gp::clamp<T>(512,v.first, 1024), gp::min(1024, v.first, v.second)},
- minmaxed{gp::min<T>(dist(setter),dist(setter), dist(setter)), gp::max<T>(dist(setter), dist(setter), dist(setter))},
- rngclamp{gp::clamp<T>(dist(setter),dist(setter), dist(setter)), gp::clamp<T>(dist(setter), dist(setter), dist(setter))};
- result = ascending.first == descending.second ? result : false;
- }
-
- return !result;
- }
- };
-
- append_test dummy_5zegfh43(new sort_pair_test2<int>{});
- append_test dummy_sdghtfh4(new sort_pair_test2<unsigned long>{});
- append_test dummy_judlg8gb(new sort_pair_test2<long>{});
- append_test dummy_5egkzbcd(new sort_pair_test2<long long>{});
|