@@ -184,6 +184,25 @@ TEST_F(EraseTests, RandomEraseTest)
184184 testTreeHeightHealth (tree);
185185}
186186
187+
188+
189+ TEST_F (EraseTests, MassiveDeleteEntireTreeWithEraseReturnIterator)
190+ {
191+ constexpr int amount = 1000 ;
192+
193+ for (int i = 0 ; i != amount; ++i)
194+ tree.insert (makeSafeOracleInterval (&oracle, distSmall (gen), distSmall (gen)));
195+
196+ for (auto iter = tree.begin (); !tree.empty ();)
197+ {
198+ iter = tree.erase (iter);
199+ }
200+
201+ EXPECT_EQ (oracle.livingInstances , 0 );
202+ testMaxProperty (tree);
203+ testTreeHeightHealth (tree);
204+ }
205+
187206TEST_F (EraseTests, ReturnedIteratorPointsToNextInOrderNode)
188207{
189208 auto regularTree = makeTree ();
@@ -234,3 +253,16 @@ TEST_F(EraseTests, CanEraseEntireTreeUsingReturnedIterator)
234253 iter = tree.erase (iter);
235254 EXPECT_EQ (tree.empty (), true );
236255}
256+
257+ TEST_F (EraseTests, FromNuiTest)
258+ {
259+ lib_interval_tree::interval_tree_t <int > tree;
260+ tree.insert ({0 , 0 });
261+ tree.insert ({4 , 4 });
262+ tree.insert ({13 , 13 });
263+
264+ drawTree (" erase_tests_from_nui" , tree);
265+
266+ auto iter = tree.erase (tree.find ({4 , 4 }));
267+ EXPECT_EQ (*iter, (decltype (tree)::interval_type{13 , 13 })) << *iter;
268+ }
0 commit comments