diff --git a/src/adi_tree.cpp b/src/adi_tree.cpp index ade8cbcd..056a994e 100644 --- a/src/adi_tree.cpp +++ b/src/adi_tree.cpp @@ -7,8 +7,8 @@ //std::set nodes; struct adi_node_t { - uint16_t scions; uint16_t num_children; + uint32_t scions; char* chars; adi_node_t** children; @@ -251,7 +251,8 @@ void adi_tree_t::remove(uint32_t id) { std::vector path; auto leaf_node = get_node(root, key, 0, path); - //LOG(INFO) << "Removing key: " << key; + //LOG(INFO) << "Removing key: " << key << ", seq_id: " << id << ", id_keys.size: " << id_keys.size() + // << ", root.num_children: " << root->num_children; if(leaf_node != nullptr) { remove_node(root, key, 0); diff --git a/test/adi_tree_test.cpp b/test/adi_tree_test.cpp index 7615cf4e..e78e18d0 100644 --- a/test/adi_tree_test.cpp +++ b/test/adi_tree_test.cpp @@ -105,3 +105,16 @@ TEST_F(ADITreeTest, InsertDuplicateAndDelete) { ASSERT_EQ(nullptr, tree.get_root()); } + +TEST_F(ADITreeTest, InsertDeleteManyElements) { + adi_tree_t tree; + size_t num_elements = UINT16_MAX + 100; + + for(size_t i = 0; i < num_elements; i++) { + tree.index(i, "key"); + } + + for(size_t i = 0; i < num_elements; i++) { + tree.remove(i); + } +}