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

Go to the source code of this file.

Classes

class  ChunkBPlusTreeTest
 Test fixture for ChunkBPlusTree tests. More...
 
class  ChunkSkipListTest
 Test fixture for ChunkSkipList tests. More...
 

Functions

template<typename T >
void printVector (const std::vector< T > &vec)
 Helper function to print a vector.
 
 TEST (BloomFilterChunkTest, BasicOperations)
 Tests basic operations of BloomFilterChunk.
 
 TEST (ChunkDequeTest, BasicOperations)
 Tests basic operations of ChunkDeque.
 
 TEST (ChunkStackTest, BasicOperations)
 Tests basic operations of ChunkStack.
 
 TEST (ChunkTreapTest, BasicOperations)
 Tests basic operations of ChunkTreap.
 
 TEST (FractalPatternsChunkTest, BasicOperations)
 Tests basic operations of FractalPatternsChunk.
 
 TEST (GraphBasedChunkTest, BasicOperations)
 Tests basic operations of GraphBasedChunk.
 
 TEST (SemanticBoundariesChunkTest, BasicOperations)
 Tests basic operations of SemanticBoundariesChunk.
 
 TEST_F (ChunkBPlusTreeTest, BasicOperations)
 Tests basic operations of ChunkBPlusTree.
 
 TEST_F (ChunkBPlusTreeTest, EdgeCases)
 Tests edge cases for ChunkBPlusTree.
 
 TEST_F (ChunkSkipListTest, BasicOperations)
 Tests basic operations of ChunkSkipList.
 
 TEST_F (ChunkSkipListTest, EmptyOperations)
 Tests empty operations of ChunkSkipList.
 
 TEST_F (ChunkSkipListTest, StressTest)
 Stress test for ChunkSkipList.
 

Function Documentation

◆ printVector()

template<typename T >
void printVector ( const std::vector< T > &  vec)

Helper function to print a vector.

Template Parameters
TThe type of elements in the vector
Parameters
vecThe vector to print

Definition at line 16 of file advanced_structures_test.cpp.

16 {
17 std::cout << "[";
18 for (size_t i = 0; i < vec.size(); ++i) {
19 std::cout << vec[i];
20 if (i < vec.size() - 1) {
21 std::cout << ", ";
22 }
23 }
24 std::cout << "]";
25}

◆ TEST() [1/7]

TEST ( BloomFilterChunkTest  ,
BasicOperations   
)

Tests basic operations of BloomFilterChunk.

Definition at line 224 of file advanced_structures_test.cpp.

224 {
226 std::vector<int> data = {1, 2, 3, 4, 5};
227 auto result = chunk.chunk(data);
228 EXPECT_GT(result.size(), 0);
229}
Bloom filter-based chunking implementation.
std::vector< std::vector< T > > chunk(const std::vector< T > &data)

References advanced_structures::BloomFilterChunk< T >::chunk().

◆ TEST() [2/7]

TEST ( ChunkDequeTest  ,
BasicOperations   
)

◆ TEST() [3/7]

TEST ( ChunkStackTest  ,
BasicOperations   
)

Tests basic operations of ChunkStack.

Definition at line 171 of file advanced_structures_test.cpp.

171 {
172 ChunkStack<int> stack;
173 EXPECT_TRUE(stack.empty());
174
175 stack.push(1);
176 stack.push(2);
177 EXPECT_EQ(stack.size(), 2);
178
179 EXPECT_EQ(stack.pop(), 2);
180 EXPECT_EQ(stack.pop(), 1);
181 EXPECT_TRUE(stack.empty());
182}
A stack-based chunk structure for LIFO operations.

References advanced_structures::ChunkStack< T >::empty(), advanced_structures::ChunkStack< T >::pop(), advanced_structures::ChunkStack< T >::push(), and advanced_structures::ChunkStack< T >::size().

◆ TEST() [4/7]

TEST ( ChunkTreapTest  ,
BasicOperations   
)

Tests basic operations of ChunkTreap.

Definition at line 187 of file advanced_structures_test.cpp.

187 {
188 ChunkTreap<int> treap;
189 EXPECT_FALSE(treap.search(5));
190
191 treap.insert(5);
192 treap.insert(3);
193 treap.insert(8);
194
195 EXPECT_TRUE(treap.search(5));
196 EXPECT_TRUE(treap.search(3));
197 EXPECT_TRUE(treap.search(8));
198 EXPECT_FALSE(treap.search(10));
199}
A treap implementation for efficient chunk searching and manipulation.
std::shared_ptr< Node > insert(std::shared_ptr< Node > node, T value, int priority)
bool search(const std::shared_ptr< Node > &node, T value) const

References advanced_structures::ChunkTreap< T >::insert(), and advanced_structures::ChunkTreap< T >::search().

◆ TEST() [5/7]

TEST ( FractalPatternsChunkTest  ,
BasicOperations   
)

Tests basic operations of FractalPatternsChunk.

Definition at line 214 of file advanced_structures_test.cpp.

214 {
216 std::vector<int> data = {1, 2, 3, 4, 5, 1, 2, 3};
217 auto result = chunk.chunk(data);
218 EXPECT_GT(result.size(), 0);
219}
Fractal pattern-based chunking implementation.
std::vector< std::vector< T > > chunk(const std::vector< T > &data)

References advanced_structures::FractalPatternsChunk< T >::chunk().

◆ TEST() [6/7]

TEST ( GraphBasedChunkTest  ,
BasicOperations   
)

Tests basic operations of GraphBasedChunk.

Definition at line 234 of file advanced_structures_test.cpp.

234 {
236 std::vector<int> data = {1, 2, 3, 4, 5};
237 auto result = chunk.chunk(data);
238 EXPECT_GT(result.size(), 0);
239}
Graph-based chunking implementation.
std::vector< std::vector< T > > chunk(const std::vector< T > &data)

References advanced_structures::GraphBasedChunk< T >::chunk().

◆ TEST() [7/7]

TEST ( SemanticBoundariesChunkTest  ,
BasicOperations   
)

Tests basic operations of SemanticBoundariesChunk.

Definition at line 204 of file advanced_structures_test.cpp.

204 {
206 std::vector<std::string> data = {"This", "is", "a", "test", "sentence"};
207 auto result = chunk.chunk(data);
208 EXPECT_GT(result.size(), 0);
209}
Semantic boundaries-based chunking implementation.
std::vector< std::vector< T > > chunk(const std::vector< T > &data)

References advanced_structures::SemanticBoundariesChunk< T >::chunk().

◆ TEST_F() [1/5]

TEST_F ( ChunkBPlusTreeTest  ,
BasicOperations   
)

Tests basic operations of ChunkBPlusTree.

Definition at line 87 of file advanced_structures_test.cpp.

87 {
89
90 // Test insertion
91 std::vector<int> values = {3, 7, 1, 5, 9, 2, 8, 4, 6};
92 for (int val : values) {
93 tree.insert(val);
94 }
95
96 // Test if values exist in tree
97 for (int val : values) {
98 EXPECT_TRUE(tree.search(val));
99 }
100
101 // Test non-existent values
102 EXPECT_FALSE(tree.search(0));
103 EXPECT_FALSE(tree.search(10));
104}
A B+ tree implementation for chunk indexing.
void insert(const T &key)
Inserts a key into the B+ tree.
bool search(const T &key) const
Searches for a key in the B+ tree.

References advanced_structures::ChunkBPlusTree< T >::insert(), and advanced_structures::ChunkBPlusTree< T >::search().

◆ TEST_F() [2/5]

TEST_F ( ChunkBPlusTreeTest  ,
EdgeCases   
)

Tests edge cases for ChunkBPlusTree.

Definition at line 141 of file advanced_structures_test.cpp.

141 {
143 tree.insert(1);
144 tree.insert(2);
145
146 // Verify insertions using find
147 EXPECT_TRUE(tree.search(1));
148 EXPECT_TRUE(tree.search(2));
149 EXPECT_FALSE(tree.search(3));
150}

References advanced_structures::ChunkBPlusTree< T >::insert(), and advanced_structures::ChunkBPlusTree< T >::search().

◆ TEST_F() [3/5]

TEST_F ( ChunkSkipListTest  ,
BasicOperations   
)

Tests basic operations of ChunkSkipList.

Definition at line 52 of file advanced_structures_test.cpp.

52 {
53 ChunkSkipList<int> skip_list;
54
55 // Test insertion
56 skip_list.insert(5);
57 skip_list.insert(10);
58 skip_list.insert(7);
59
60 // Test search
61 EXPECT_TRUE(skip_list.search(5));
62 EXPECT_TRUE(skip_list.search(7));
63 EXPECT_TRUE(skip_list.search(10));
64 EXPECT_FALSE(skip_list.search(6));
65
66 // Test with random data
67 std::vector<int> numbers(100);
68 std::iota(numbers.begin(), numbers.end(), 1);
69 std::random_device rd;
70 std::mt19937 gen(rd());
71 std::shuffle(numbers.begin(), numbers.end(), gen);
72
73 ChunkSkipList<int> large_list;
74 for (int num : numbers) {
75 large_list.insert(num);
76 }
77
78 // Verify all numbers can be found
79 for (int num : numbers) {
80 EXPECT_TRUE(large_list.search(num));
81 }
82}
A skip list implementation for efficient chunk searching.
void insert(const T &value)
Inserts a value into the skip list.
bool search(const T &value) const
Searches for a value in the skip list.

References advanced_structures::ChunkSkipList< T >::insert(), and advanced_structures::ChunkSkipList< T >::search().

◆ TEST_F() [4/5]

TEST_F ( ChunkSkipListTest  ,
EmptyOperations   
)

Tests empty operations of ChunkSkipList.

Definition at line 132 of file advanced_structures_test.cpp.

132 {
134 EXPECT_TRUE(list.search(1) == false);
135 EXPECT_TRUE(list.search(0) == false);
136}

References advanced_structures::ChunkSkipList< T >::search().

◆ TEST_F() [5/5]

TEST_F ( ChunkSkipListTest  ,
StressTest   
)

Stress test for ChunkSkipList.

Definition at line 109 of file advanced_structures_test.cpp.

109 {
110 ChunkSkipList<int> skip_list;
111 const int NUM_ELEMENTS = 10000;
112
113 // Insert many elements
114 for (int i = 0; i < NUM_ELEMENTS; i++) {
115 skip_list.insert(i);
116 }
117
118 // Verify all elements can be found
119 for (int i = 0; i < NUM_ELEMENTS; i++) {
120 EXPECT_TRUE(skip_list.search(i));
121 }
122
123 // Verify non-existent elements are not found
124 for (int i = NUM_ELEMENTS; i < NUM_ELEMENTS + 100; i++) {
125 EXPECT_FALSE(skip_list.search(i));
126 }
127}

References advanced_structures::ChunkSkipList< T >::insert(), and advanced_structures::ChunkSkipList< T >::search().