From 19775255bd51472b17d39f332cd6554ed4f4f0a7 Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Sun, 19 Nov 2023 20:38:33 +0100 Subject: [PATCH] Tests extended. --- .../RecyclableLongListTests.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Recyclable.CollectionsTests/RecyclableLongListTests.cs b/Recyclable.CollectionsTests/RecyclableLongListTests.cs index 5f37dd1..5a40e42 100644 --- a/Recyclable.CollectionsTests/RecyclableLongListTests.cs +++ b/Recyclable.CollectionsTests/RecyclableLongListTests.cs @@ -512,6 +512,34 @@ namespace Recyclable.CollectionsTests _ = copiedItems.Should().Equal(testData); } + [Theory] + [MemberData(nameof(RecyclableLongListTestData.SourceDataWithBlockSizeWithItemIndexVariants), MemberType = typeof(RecyclableLongListTestData))] + public void CopyToShouldCopyAllItemsInTheCorrectOrderWhenConstrainedRange(string testCase, IEnumerable testData, int itemsCount, int minBlockSize, in long[] itemIndexes) + { + // Prepare + var expectedData = testData.ToList(); + foreach (var itemIndex in itemIndexes) + { + TestCopyTo(0); + TestCopyTo((int)itemIndex); + TestCopyTo((int)itemIndex); + } + + void TestCopyTo(int itemIndex) + { + using var list = new RecyclableLongList(testData, minBlockSize, initialCapacity: itemsCount); + long[] expectedItems = new long[itemsCount + itemIndex]; + expectedData.CopyTo(expectedItems, itemIndex); + long[] actualItems = new long[itemsCount + itemIndex]; + + // Act + list.CopyTo(actualItems, itemIndex); + + // Validate + _ = actualItems.Should().Equal(expectedItems); + } + } + [Theory] [MemberData(nameof(RecyclableLongListTestData.SourceRefDataWithBlockSizeVariants), MemberType = typeof(RecyclableLongListTestData))] public void DisposeShouldClearItemsWhenReferenceType(string testCase, IEnumerable testData, long itemsCount, int targetBlockSize)