Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
utils_test.cpp File Reference
#include "utils.hpp"
#include <gtest/gtest.h>
#include <vector>
+ Include dependency graph for utils_test.cpp:

Go to the source code of this file.

Classes

class  ChunkGeneratorTest
 
class  ChunkManipulatorTest
 
class  StatisticsTest
 

Functions

 TEST_F (ChunkGeneratorTest, GenerateRandomChunks)
 
 TEST_F (ChunkGeneratorTest, GenerateRandomData)
 
 TEST_F (ChunkGeneratorTest, LargeDataGeneration)
 
 TEST_F (ChunkGeneratorTest, ZeroSizeGeneration)
 
 TEST_F (ChunkManipulatorTest, EmptyChunkOperations)
 
 TEST_F (ChunkManipulatorTest, FilterChunks)
 
 TEST_F (ChunkManipulatorTest, MergeChunks)
 
 TEST_F (ChunkManipulatorTest, TransformChunks)
 
 TEST_F (StatisticsTest, HandleSpecialValues)
 
 TEST_F (StatisticsTest, MeanCalculation)
 
 TEST_F (StatisticsTest, MedianCalculation)
 
 TEST_F (StatisticsTest, ModeCalculation)
 

Function Documentation

◆ TEST_F() [1/12]

TEST_F ( ChunkGeneratorTest  ,
GenerateRandomChunks   
)

Definition at line 92 of file utils_test.cpp.

92 {
93 const size_t num_chunks = 5;
94 const size_t chunk_size = 10;
95
96 auto chunks =
97 ChunkGenerator<double>::generate_random_chunks(num_chunks, chunk_size, min_val, max_val);
98 EXPECT_EQ(chunks.size(), num_chunks);
99
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);
105 }
106 }
107}
static std::vector< std::vector< T > > generate_random_chunks(size_t num_chunks, size_t chunk_size, T min_val, T max_val)
Definition utils.hpp:93

References chunk_utils::ChunkGenerator< T >::generate_random_chunks().

◆ TEST_F() [2/12]

TEST_F ( ChunkGeneratorTest  ,
GenerateRandomData   
)

Definition at line 81 of file utils_test.cpp.

81 {
82 auto data = ChunkGenerator<double>::generate_random_data(test_size, min_val, max_val);
83 EXPECT_EQ(data.size(), test_size);
84
85 // Check bounds
86 for (const auto& val : data) {
87 EXPECT_GE(val, min_val);
88 EXPECT_LE(val, max_val);
89 }
90}
static std::vector< T > generate_random_data(size_t size, T min_val, T max_val)
Definition utils.hpp:86

References chunk_utils::ChunkGenerator< T >::generate_random_data().

◆ TEST_F() [3/12]

TEST_F ( ChunkGeneratorTest  ,
LargeDataGeneration   
)

Definition at line 144 of file utils_test.cpp.

144 {
145 const size_t large_size = 1000000;
146 auto large_data = ChunkGenerator<double>::generate_random_data(large_size, min_val, max_val);
147 EXPECT_EQ(large_data.size(), large_size);
148}

References chunk_utils::ChunkGenerator< T >::generate_random_data().

◆ TEST_F() [4/12]

TEST_F ( ChunkGeneratorTest  ,
ZeroSizeGeneration   
)

Definition at line 135 of file utils_test.cpp.

135 {
136 auto empty_data = ChunkGenerator<double>::generate_random_data(0, min_val, max_val);
137 EXPECT_TRUE(empty_data.empty());
138
139 auto empty_chunks = ChunkGenerator<double>::generate_random_chunks(0, 5, min_val, max_val);
140 EXPECT_TRUE(empty_chunks.empty());
141}

References chunk_utils::ChunkGenerator< T >::generate_random_chunks(), and chunk_utils::ChunkGenerator< T >::generate_random_data().

◆ TEST_F() [5/12]

TEST_F ( ChunkManipulatorTest  ,
EmptyChunkOperations   
)

Definition at line 119 of file utils_test.cpp.

119 {
120 // Merge with empty chunks
121 auto merged_empty = ChunkManipulator<double>::merge_chunks(chunks1, empty_chunks);
122 EXPECT_EQ(merged_empty.size(), chunks1.size());
123
124 // Filter empty chunks
125 auto filtered_empty = ChunkManipulator<double>::filter_chunks(
126 empty_chunks, [](const std::vector<double>&) { return true; });
127 EXPECT_TRUE(filtered_empty.empty());
128
129 // Transform empty chunks
130 auto transformed_empty = ChunkManipulator<double>::transform_chunks(
131 empty_chunks, [](const std::vector<double>& chunk) { return chunk; });
132 EXPECT_TRUE(transformed_empty.empty());
133}
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)
Definition utils.hpp:70
static std::vector< std::vector< T > > merge_chunks(const std::vector< std::vector< T > > &chunks1, const std::vector< std::vector< T > > &chunks2)
Definition utils.hpp:54
static std::vector< std::vector< T > > filter_chunks(const std::vector< std::vector< T > > &chunks, std::function< bool(const std::vector< T > &)> predicate)
Definition utils.hpp:62

References chunk_utils::ChunkManipulator< T >::filter_chunks(), chunk_utils::ChunkManipulator< T >::merge_chunks(), and chunk_utils::ChunkManipulator< T >::transform_chunks().

◆ TEST_F() [6/12]

TEST_F ( ChunkManipulatorTest  ,
FilterChunks   
)

Definition at line 54 of file utils_test.cpp.

54 {
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}));
59}

References chunk_utils::ChunkManipulator< T >::filter_chunks().

◆ TEST_F() [7/12]

TEST_F ( ChunkManipulatorTest  ,
MergeChunks   
)

Definition at line 47 of file utils_test.cpp.

47 {
48 auto merged = ChunkManipulator<double>::merge_chunks(chunks1, chunks2);
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}));
52}

References chunk_utils::ChunkManipulator< T >::merge_chunks().

◆ TEST_F() [8/12]

TEST_F ( ChunkManipulatorTest  ,
TransformChunks   
)

Definition at line 61 of file utils_test.cpp.

61 {
62 auto transformed =
63 ChunkManipulator<double>::transform_chunks(chunks1, [](const std::vector<double>& chunk) {
64 std::vector<double> result = chunk;
65 for (auto& val : result)
66 val *= 2;
67 return result;
68 });
69 EXPECT_EQ(transformed.size(), 2);
70 EXPECT_EQ(transformed[0], std::vector<double>({2.0, 4.0}));
71}

References chunk_utils::ChunkManipulator< T >::transform_chunks().

◆ TEST_F() [9/12]

TEST_F ( StatisticsTest  ,
HandleSpecialValues   
)

Definition at line 110 of file utils_test.cpp.

110 {
111 std::vector<double> special_values = {std::numeric_limits<double>::infinity(),
112 -std::numeric_limits<double>::infinity(),
113 std::numeric_limits<double>::quiet_NaN()};
114
115 // Mean should handle special values
116 EXPECT_FALSE(std::isfinite(Statistics<double>::mean(special_values)));
117}

◆ TEST_F() [10/12]

TEST_F ( StatisticsTest  ,
MeanCalculation   
)

Definition at line 15 of file utils_test.cpp.

15 {
16 EXPECT_DOUBLE_EQ(Statistics<double>::mean(test_data), 3.0);
17 EXPECT_DOUBLE_EQ(Statistics<double>::mean(empty_data), 0.0);
18}

◆ TEST_F() [11/12]

TEST_F ( StatisticsTest  ,
MedianCalculation   
)

Definition at line 20 of file utils_test.cpp.

20 {
21 EXPECT_DOUBLE_EQ(Statistics<double>::median(test_data), 3.0);
22 EXPECT_DOUBLE_EQ(Statistics<double>::median(empty_data), 0.0);
23
24 // Even number of elements
25 std::vector<double> even_data = {1.0, 2.0, 3.0, 4.0};
26 EXPECT_DOUBLE_EQ(Statistics<double>::median(even_data), 2.5);
27}

◆ TEST_F() [12/12]

TEST_F ( StatisticsTest  ,
ModeCalculation   
)

Definition at line 29 of file utils_test.cpp.

29 {
30 auto mode_result = Statistics<double>::mode(duplicate_data);
31 EXPECT_DOUBLE_EQ(mode_result.first, 2.0);
32 EXPECT_EQ(mode_result.second, 2);
33
34 auto empty_mode = Statistics<double>::mode(empty_data);
35 EXPECT_DOUBLE_EQ(empty_mode.first, 0.0);
36 EXPECT_EQ(empty_mode.second, 0);
37}
static std::pair< T, size_t > mode(const std::vector< T > &data)
Definition utils.hpp:38

References chunk_utils::Statistics< T >::mode().