Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
test_chunking.cpp
Go to the documentation of this file.
2#include <gtest/gtest.h>
3#include <vector>
4
5class ChunkingTest : public ::testing::Test {
6protected:
7 std::vector<int> test_data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
8};
9
10TEST_F(ChunkingTest, BasicChunkingOperations) {
11 // Test fixed-size chunking
13 auto fixed_chunks = fixed_size_strategy.apply(test_data);
14
15 EXPECT_EQ(fixed_chunks.size(), 4); // Should have 4 chunks (3,3,3,1)
16 EXPECT_EQ(fixed_chunks[0].size(), 3);
17 EXPECT_EQ(fixed_chunks[1].size(), 3);
18 EXPECT_EQ(fixed_chunks[2].size(), 3);
19 EXPECT_EQ(fixed_chunks[3].size(), 1);
20}
21
22TEST_F(ChunkingTest, PredicateBasedChunking) {
23 // Test predicate-based chunking
24 auto predicate = [](int val) { return val % 3 == 0; };
25 chunk_processing::PatternBasedStrategy<int> pred_strategy(predicate);
26 auto pred_chunks = pred_strategy.apply(test_data);
27
28 EXPECT_GT(pred_chunks.size(), 0);
29 for (const auto& chunk : pred_chunks) {
30 EXPECT_GT(chunk.size(), 0);
31 }
32}
33
34TEST_F(ChunkingTest, EmptyInput) {
35 std::vector<int> empty_data;
37 auto chunks = strategy.apply(empty_data);
38
39 EXPECT_TRUE(chunks.empty());
40}
41
42TEST_F(ChunkingTest, SingleElementInput) {
43 std::vector<int> single_element = {1};
45 auto chunks = strategy.apply(single_element);
46
47 EXPECT_EQ(chunks.size(), 1);
48 EXPECT_EQ(chunks[0].size(), 1);
49}
50
51TEST_F(ChunkingTest, ExactDivisionChunking) {
52 std::vector<int> even_data = {1, 2, 3, 4, 5, 6};
54 auto chunks = strategy.apply(even_data);
55
56 EXPECT_EQ(chunks.size(), 3);
57 for (const auto& chunk : chunks) {
58 EXPECT_EQ(chunk.size(), 2);
59 }
60}
Defines various strategies for chunking data based on different criteria.
std::vector< int > test_data
std::vector< std::vector< T > > apply(const std::vector< T > &data) const override
TEST_F(ChunkingTest, BasicChunkingOperations)