2#include <gtest/gtest.h>
9 std::vector<double>
test_data = {1.0, 2.0, 3.0, 4.0, 5.0};
25 std::vector<double> even_data = {1.0, 2.0, 3.0, 4.0};
31 EXPECT_DOUBLE_EQ(mode_result.first, 2.0);
32 EXPECT_EQ(mode_result.second, 2);
35 EXPECT_DOUBLE_EQ(empty_mode.first, 0.0);
36 EXPECT_EQ(empty_mode.second, 0);
42 std::vector<std::vector<double>>
chunks1 = {{1.0, 2.0}, {3.0, 4.0}};
43 std::vector<std::vector<double>>
chunks2 = {{5.0, 6.0}, {7.0, 8.0}};
49 EXPECT_EQ(merged.size(), 4);
50 EXPECT_EQ(merged[0], std::vector<double>({1.0, 2.0}));
51 EXPECT_EQ(merged[3], std::vector<double>({7.0, 8.0}));
56 chunks1, [](
const std::vector<double>& chunk) {
return chunk[0] > 2.0; });
57 EXPECT_EQ(filtered.size(), 1);
58 EXPECT_EQ(filtered[0], std::vector<double>({3.0, 4.0}));
64 std::vector<double> result = chunk;
65 for (
auto& val : result)
69 EXPECT_EQ(transformed.size(), 2);
70 EXPECT_EQ(transformed[0], std::vector<double>({2.0, 4.0}));
83 EXPECT_EQ(data.size(), test_size);
86 for (
const auto& val : data) {
87 EXPECT_GE(val, min_val);
88 EXPECT_LE(val, max_val);
93 const size_t num_chunks = 5;
94 const size_t chunk_size = 10;
98 EXPECT_EQ(chunks.size(), num_chunks);
100 for (
const auto& chunk : chunks) {
101 EXPECT_EQ(chunk.size(), chunk_size);
102 for (
const auto& val : chunk) {
103 EXPECT_GE(val, min_val);
104 EXPECT_LE(val, max_val);
111 std::vector<double> special_values = {std::numeric_limits<double>::infinity(),
112 -std::numeric_limits<double>::infinity(),
113 std::numeric_limits<double>::quiet_NaN()};
122 EXPECT_EQ(merged_empty.size(), chunks1.size());
126 empty_chunks, [](
const std::vector<double>&) {
return true; });
127 EXPECT_TRUE(filtered_empty.empty());
131 empty_chunks, [](
const std::vector<double>& chunk) {
return chunk; });
132 EXPECT_TRUE(transformed_empty.empty());
137 EXPECT_TRUE(empty_data.empty());
140 EXPECT_TRUE(empty_chunks.empty());
145 const size_t large_size = 1000000;
147 EXPECT_EQ(large_data.size(), large_size);
std::vector< std::vector< double > > chunks1
std::vector< std::vector< double > > chunks2
std::vector< std::vector< double > > empty_chunks
std::vector< double > test_data
std::vector< double > duplicate_data
std::vector< double > empty_data
static std::vector< T > generate_random_data(size_t size, T min_val, T max_val)
static std::vector< std::vector< T > > generate_random_chunks(size_t num_chunks, size_t chunk_size, T min_val, T max_val)
static std::vector< std::vector< T > > transform_chunks(const std::vector< std::vector< T > > &chunks, std::function< std::vector< T >(const std::vector< T > &)> transformer)
static std::vector< std::vector< T > > merge_chunks(const std::vector< std::vector< T > > &chunks1, const std::vector< std::vector< T > > &chunks2)
static std::vector< std::vector< T > > filter_chunks(const std::vector< std::vector< T > > &chunks, std::function< bool(const std::vector< T > &)> predicate)
static std::pair< T, size_t > mode(const std::vector< T > &data)
TEST_F(StatisticsTest, MeanCalculation)