Optimize long-list AddRange for stack

This commit is contained in:
Marek Lemańczyk committed 2025-07-17 00:21:15 +02:00
1 parent 4274f4dcbc
commit 1aedfb2cbc
2 files changed
+77 -4

No files matched your search

@@ -404,5 +404,43 @@ namespace Recyclable.CollectionsTests
_ = stack.Should().Equal(expected);
}
[Theory]
[MemberData(nameof(RecyclableLongListTestData.ItemsCountTestCases), MemberType = typeof(RecyclableLongListTestData))]
public void AddRangeShouldAddLongListItemsInCorrectOrder(int itemsCount)
{
long[] data = RecyclableLongListTestData.CreateTestData(itemsCount).ToArray();
using var source = new RecyclableLongList<long>(data);
using var stack = new RecyclableStack<long>();
stack.AddRange(source);
List<long> expected = new(itemsCount);
expected.AddRange(data);
expected.Reverse();
_ = stack.Count.Should().Be(itemsCount);
_ = stack.Should().Equal(expected);
}
[Theory]
[MemberData(nameof(RecyclableLongListTestData.ItemsCountTestCases), MemberType = typeof(RecyclableLongListTestData))]
public void AddRangeShouldNotOverrideItemsFromLongList(int itemsCount)
{
long[] data = RecyclableLongListTestData.CreateTestData(itemsCount).ToArray();
using var source = new RecyclableLongList<long>(data);
using var stack = new RecyclableStack<long>();
stack.AddRange(source);
stack.AddRange(source);
List<long> expected = new(itemsCount * 2);
expected.AddRange(data);
expected.AddRange(data);
expected.Reverse();
_ = stack.Count.Should().Be(itemsCount * 2);
_ = stack.Should().Equal(expected);
}
}
}