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
14
class
ChunkTest
:
public
::testing::Test {
15
protected
:
16
using
value_type
= int;
17
chunk_processing::Chunk<value_type>
basic_chunker
{2};
18
std::vector<value_type>
test_data
{1, 2, 3, 4, 5};
19
};
20
21
TEST_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
26
TEST_F
(
ChunkTest
, SingleElementAdd) {
27
basic_chunker.add(1);
28
EXPECT_EQ(basic_chunker.size(), 1);
29
}
30
31
TEST_F
(
ChunkTest
, VectorAdd) {
32
basic_chunker.add(test_data);
33
EXPECT_EQ(basic_chunker.size(), test_data.size());
34
}
35
36
TEST_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
42
TEST_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
48
TEST_F
(
ChunkTest
, BasicOperations) {
49
chunk_processing::Chunk<int>
chunk(2);
50
ASSERT_EQ(chunk.
size
(), 0);
// Initially empty
51
ASSERT_EQ(chunk.
get_chunks
().size(), 0);
// No chunks yet
52
}
53
54
TEST_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
61
TEST_F
(
ChunkTest
, EmptyChunkOperations) {
62
EXPECT_EQ(basic_chunker.size(), 0);
63
EXPECT_TRUE(basic_chunker.get_chunks().empty());
64
}
65
66
TEST_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
72
TEST_F
(
ChunkTest
, ExactSizeChunking) {
73
chunk_processing::Chunk<value_type>
exact_chunker(5);
74
exact_chunker.
add
(test_data);
75
auto
chunks = exact_chunker.
get_chunks
();
76
EXPECT_EQ(chunks.size(), 1);
77
}
78
79
TEST_F
(
ChunkTest
, StringChunking) {
80
chunk_processing::Chunk<std::string>
string_chunker(2);
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
87
TEST_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
}
chunk.hpp
TEST_F
TEST_F(ChunkTest, Constructor)
Definition
chunk_test.cpp:21
ChunkTest
Definition
chunk_test.cpp:14
ChunkTest::value_type
int value_type
Definition
chunk_test.cpp:16
ChunkTest::basic_chunker
chunk_processing::Chunk< value_type > basic_chunker
Definition
chunk_test.cpp:17
ChunkTest::test_data
std::vector< value_type > test_data
Definition
chunk_test.cpp:18
chunk_processing::Chunk
A template class for managing and processing data in chunks.
Definition
chunk.hpp:16
chunk_processing::Chunk::size
size_t size() const
Definition
chunk.hpp:186
chunk_processing::Chunk::get_chunks
std::vector< std::vector< T > > get_chunks() const
Definition
chunk.hpp:182
chunk_processing::Chunk::add
void add(const T &element)
Definition
chunk.hpp:130
tests
chunk_test.cpp
Generated on Sat Dec 28 2024 01:08:54 for Advanced Chunk Processing Library by
1.9.8