|
|
- #include "gp/containers/array.hpp"
- #include "gp/containers/vector.hpp"
- #include "gp/algorithms/partition.hpp"
- #include "test_scaffold.h"
- #include "allocator.hpp"
- #include <memory>
-
- #include <random>
- #include <iostream>
- #include <string>
- #include <algorithm>
-
- 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<uint32_t, 200> 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<uint32_t, 200> 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{});
|