Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_test.cpp
Go to the documentation of this file.
1/**
2 * @file chunk_test.cpp
3 * @brief Unit tests for the Chunk class.
4 *
5 * This file contains tests for various operations on the Chunk class,
6 * including adding elements, retrieving chunks, and handling edge cases.
7 */
8
9#include "chunk.hpp"
10#include <gtest/gtest.h>
11#include <string>
12#include <vector>
13
14class ChunkTest : public ::testing::Test {
15protected:
16 using value_type = int;
18 std::vector<value_type> test_data{1, 2, 3, 4, 5};
19};
20
21TEST_F(ChunkTest, Constructor) {
22 EXPECT_THROW(chunk_processing::Chunk<value_type>(0), std::invalid_argument);
23 EXPECT_NO_THROW(chunk_processing::Chunk<value_type>(1));
24}
25
26TEST_F(ChunkTest, SingleElementAdd) {
27 basic_chunker.add(1);
28 EXPECT_EQ(basic_chunker.size(), 1);
29}
30
31TEST_F(ChunkTest, VectorAdd) {
32 basic_chunker.add(test_data);
33 EXPECT_EQ(basic_chunker.size(), test_data.size());
34}
35
36TEST_F(ChunkTest, ChunkBySize) {
37 basic_chunker.add(test_data);
38 auto chunks = basic_chunker.chunk_by_size(2);
39 EXPECT_EQ(chunks.size(), 3); // Should create 3 chunks: [1,2], [3,4], [5]
40}
41
42TEST_F(ChunkTest, ThresholdChunking) {
43 basic_chunker.add({1, 2, 5, 6, 1, 2, 7, 8});
44 auto chunks = basic_chunker.chunk_by_threshold(3);
45 EXPECT_GT(chunks.size(), 1);
46}
47
48TEST_F(ChunkTest, BasicOperations) {
50 ASSERT_EQ(chunk.size(), 0); // Initially empty
51 ASSERT_EQ(chunk.get_chunks().size(), 0); // No chunks yet
52}
53
54TEST_F(ChunkTest, ChunkProcessing) {
55 chunk_processing::Chunk<int> chunk(2); // Create chunk with size 2
56 chunk.add(test_data); // Add data from fixture
57 auto chunks = chunk.get_chunks();
58 EXPECT_FALSE(chunks.empty());
59}
60
61TEST_F(ChunkTest, EmptyChunkOperations) {
62 EXPECT_EQ(basic_chunker.size(), 0);
63 EXPECT_TRUE(basic_chunker.get_chunks().empty());
64}
65
66TEST_F(ChunkTest, EdgeCases) {
67 std::vector<value_type> empty_data;
68 basic_chunker.add(empty_data);
69 EXPECT_EQ(basic_chunker.size(), 0);
70}
71
72TEST_F(ChunkTest, ExactSizeChunking) {
74 exact_chunker.add(test_data);
75 auto chunks = exact_chunker.get_chunks();
76 EXPECT_EQ(chunks.size(), 1);
77}
78
79TEST_F(ChunkTest, StringChunking) {
81 std::vector<std::string> str_data{"hello", "world", "test"};
82 string_chunker.add(str_data);
83 auto chunks = string_chunker.get_chunks();
84 EXPECT_FALSE(chunks.empty());
85}
86
87TEST_F(ChunkTest, CharChunking) {
88 chunk_processing::Chunk<char> char_chunker(3);
89 std::vector<char> char_data{'a', 'b', 'c', 'd', 'e'};
90 char_chunker.add(char_data);
91 auto chunks = char_chunker.get_chunks();
92 EXPECT_FALSE(chunks.empty());
93}
TEST_F(ChunkTest, Constructor)
chunk_processing::Chunk< value_type > basic_chunker
std::vector< value_type > test_data
A template class for managing and processing data in chunks.
Definition chunk.hpp:16
size_t size() const
Definition chunk.hpp:186
std::vector< std::vector< T > > get_chunks() const
Definition chunk.hpp:182
void add(const T &element)
Definition chunk.hpp:130