#include "gp/containers/array.hpp" #include "gp/containers/vector.hpp" #include "gp/algorithms/partition.hpp" #include "test_scaffold.h" #include "allocator.hpp" #include #include #include #include #include typedef std::mt19937_64 cheap_rand; struct partition_array_test : public test_scaffold { uint32_t seed; partition_array_test() { name = __FILE__ ":1_seed"; seed = std::random_device{}(); name += std::to_string(seed); } virtual int run() { cheap_rand setter(seed); for(int i = 0; i < 250; ++i) { gp::array ary; for(auto& elem : ary) { elem = setter(); } auto pivot = gp::hoare_partition(ary.begin(), ary.end(), [](const auto& v){return v % 2;}); for(auto it = ary.begin(); it != pivot;++it) { gp_config::assertion(!!(*it % 2), "partition failed"); } for(auto it = pivot; it != ary.end();++it) { gp_config::assertion(!(*it % 2), "partition failed"); } } return 0; } }; append_test dummy_s5f468e43(new partition_array_test{}); struct partition_array_lomuto_test : public test_scaffold { uint32_t seed; partition_array_lomuto_test() { name = __FILE__ ":2_seed"; seed = std::random_device{}(); name += std::to_string(seed); } virtual int run() { cheap_rand setter(seed); for(int i = 0; i < 250; ++i) { gp::array ary; for(auto& elem : ary) { elem = setter(); } auto pivot = gp::lomuto_partition(ary.begin(), ary.end(), [](const auto& v){return v % 2;}); for(auto it = ary.begin(); it != pivot;++it) { gp_config::assertion(!!(*it % 2), "partition failed"); } for(auto it = pivot; it != ary.end();++it) { gp_config::assertion(!(*it % 2), "partition failed"); } } return 0; } }; append_test dummy_lcvudg8e43(new partition_array_lomuto_test{});