From c84cf263ca9e5fafbdec0886bbc8b2d151bd2393 Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Wed, 22 Mar 2023 00:07:24 +0100 Subject: [PATCH] Missing using added to limit pressure on garbage collector. RecyclableArrayList.Remove tests extended to cover more cases. Tiny cleanup. --- .../RecyclableArrayListTests.cs | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/Recyclable.CollectionsTests/RecyclableArrayListTests.cs b/Recyclable.CollectionsTests/RecyclableArrayListTests.cs index 709de94..da390ce 100644 --- a/Recyclable.CollectionsTests/RecyclableArrayListTests.cs +++ b/Recyclable.CollectionsTests/RecyclableArrayListTests.cs @@ -5,14 +5,12 @@ namespace Recyclable.CollectionsTests { public class RecyclableArrayListTests { - private readonly static IEnumerable _testData = Enumerable.Range(1, 20); - [Theory] [MemberData(nameof(RecyclableListTestData.SourceDataVariants), MemberType = typeof(RecyclableListTestData))] public void AddCountShouldSucceed(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(); + using var list = new RecyclableArrayList(); // Act foreach (var item in testData) @@ -96,7 +94,7 @@ namespace Recyclable.CollectionsTests public void ClearShouldRemoveAllItems(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); _ = list.Count.Should().Be((int)itemsCount); // Act @@ -125,7 +123,7 @@ namespace Recyclable.CollectionsTests public void ConstructorShouldAddItemsInCorrectOrderWhenSourceIsIEnumerable(string testCase, IEnumerable testData, long itemsCount) { // Act - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Validate _ = list.Capacity.Should().BeGreaterThanOrEqualTo((int)itemsCount, "when we succeed in taking count without enumerating, then we allocate as much memory as needed, only"); @@ -138,7 +136,7 @@ namespace Recyclable.CollectionsTests public void ConstructorSourceShouldInitializeList(string testCase, IEnumerable testData, long itemsCount) { // Act - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Validate _ = list.Count.Should().Be((int)itemsCount); @@ -206,7 +204,7 @@ namespace Recyclable.CollectionsTests public void CopyToShouldCopyAllItemsInTheCorrectOrder(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); long[] copiedItems = new long[itemsCount]; // Act @@ -222,7 +220,7 @@ namespace Recyclable.CollectionsTests public void EnumerateShouldYieldAllItemsInCorrectOrder(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Act var yieldedItems = new List((int)itemsCount); @@ -256,7 +254,7 @@ namespace Recyclable.CollectionsTests public void InsertAtTheBeginningShouldMoveItems(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(); + using var list = new RecyclableArrayList(); // Act foreach (var item in testData) @@ -276,7 +274,7 @@ namespace Recyclable.CollectionsTests public void LongIndexOfShouldReturnCorrectIndexes(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Act & Validate foreach (var item in testData) @@ -294,7 +292,7 @@ namespace Recyclable.CollectionsTests public void RemoveAtFromTheBeginningShouldSucceed(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Act & Validate for (var deleted = 1; deleted <= itemsCount; deleted++) @@ -316,7 +314,7 @@ namespace Recyclable.CollectionsTests public void RemoveAtFromTheEndShouldSucceed(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Act & Validate for (var deleted = 1; deleted <= itemsCount; deleted++) @@ -338,7 +336,7 @@ namespace Recyclable.CollectionsTests public void RemoveFromTheBeginningShouldRemoveTheCorrectItem(string testCase, IEnumerable testData, long itemsCount) { // Prepare - var list = new RecyclableArrayList(testData); + using var list = new RecyclableArrayList(testData); // Act & Validate for (var deleted = 1; deleted <= itemsCount; deleted++) @@ -352,23 +350,23 @@ namespace Recyclable.CollectionsTests } } - [Fact] - public void RemoveFromTheEndShouldRemoveTheCorrectItem() + [Theory] + [MemberData(nameof(RecyclableListTestData.SourceDataVariants), MemberType = typeof(RecyclableListTestData))] + public void RemoveFromTheEndShouldRemoveTheCorrectItem(string testCase, IEnumerable testData, long itemsCount) { - // Prepare - var testData = _testData.ToArray(); - // Act & Validate - var list = new RecyclableArrayList(testData); - for (var deleted = 1; deleted <= testData.LongLength; deleted++) + using var list = new RecyclableArrayList(testData); + long deleted = 0; + foreach (var item in testData.Reverse()) { // Act - _ = list.Remove(testData[^deleted]).Should().BeTrue(); + _ = list.Remove(item).Should().BeTrue(); + deleted++; // Validate - _ = list.Should().HaveCount(testData.Length - deleted) - .And.ContainInConsecutiveOrder(testData.Take(testData.Length - deleted)) - .And.BeEquivalentTo(testData.Take(testData.Length - deleted)); + _ = list.Count.Should().Be((int)(itemsCount - deleted)); + _ = list.Should().ContainInConsecutiveOrder(testData.Take((int)(itemsCount - deleted))); + } } }