43 std::unique_lock<std::mutex> lock(global_test_mutex_);
45 auto variance_strategy = std::make_shared<chunk_processing::VarianceStrategy<double>>(3.0);
46 ASSERT_TRUE(is_valid_resource(variance_strategy));
49 auto result = recursive_strategy.
apply(test_data);
53 ASSERT_GT(result.size(), 0);
54 for (
const auto& chunk : result) {
55 ASSERT_GE(chunk.size(), 2);
62 auto variance_strategy = std::make_shared<chunk_processing::VarianceStrategy<double>>(5.0);
63 auto entropy_strategy = std::make_shared<chunk_processing::EntropyStrategy<double>>(1.0);
65 if (!variance_strategy || !entropy_strategy) {
66 FAIL() <<
"Failed to create strategies";
70 std::vector<std::shared_ptr<chunk_processing::ChunkStrategy<double>>> strategies;
71 strategies.reserve(2);
72 strategies.push_back(variance_strategy);
73 strategies.push_back(entropy_strategy);
79 auto result = hierarchical_strategy.
apply(test_data);
80 ASSERT_GT(result.size(), 0) <<
"Result should not be empty";
83 for (
const auto& chunk : result) {
84 ASSERT_GE(chunk.size(), 2) <<
"Chunk size should be at least 2";
86 }
catch (
const std::exception& e) {
87 FAIL() <<
"Exception thrown: " << e.what();
94 auto condition = [](
const std::vector<double>& chunk) {
return chunk.size() > 4; };
97 auto variance_strategy = std::make_shared<chunk_processing::VarianceStrategy<double>>(5.0);
98 if (!variance_strategy) {
99 FAIL() <<
"Failed to create variance strategy";
104 variance_strategy, condition, 2);
107 auto result = conditional_strategy.
apply(test_data);
108 ASSERT_GT(result.size(), 0) <<
"Result should not be empty";
111 for (
const auto& chunk : result) {
112 ASSERT_GE(chunk.size(), 2) <<
"Chunk size should be at least 2";
114 }
catch (
const std::exception& e) {
115 FAIL() <<
"Exception thrown: " << e.what();
121 std::vector<double> empty_data;
124 auto variance_strategy = std::make_shared<chunk_processing::VarianceStrategy<double>>(3.0);
125 if (!variance_strategy) {
126 FAIL() <<
"Failed to create variance strategy";
132 variance_strategy, 2, 2);
133 auto result = recursive_strategy.
apply(empty_data);
134 EXPECT_TRUE(result.empty())
135 <<
"Recursive strategy should return empty result for empty data";
140 std::vector<std::shared_ptr<chunk_processing::ChunkStrategy<double>>> strategies{
144 auto result = hierarchical_strategy.
apply(empty_data);
145 EXPECT_TRUE(result.empty())
146 <<
"Hierarchical strategy should return empty result for empty data";
151 auto condition = [](
const std::vector<double>& chunk) {
return chunk.size() > 4; };
153 variance_strategy, condition, 2);
154 auto result = conditional_strategy.
apply(empty_data);
155 EXPECT_TRUE(result.empty())
156 <<
"Conditional strategy should return empty result for empty data";
158 }
catch (
const std::exception& e) {
159 FAIL() <<
"Exception thrown: " << e.what();