Skip to content

Commit 7145762

Browse files
committed
Test ArrayPoolExtensions.EnsureCapacity
1 parent 2e1f1fe commit 7145762

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

tests/CommunityToolkit.HighPerformance.UnitTests/Extensions/Test_ArrayPoolExtensions.cs

+69
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,73 @@ public void Test_ArrayPoolExtensions_Resize_Clear()
8787
Assert.AreNotSame(array, backup);
8888
Assert.IsTrue(backup.AsSpan(0, 16).ToArray().All(i => i == 0));
8989
}
90+
91+
[TestMethod]
92+
[ExpectedException(typeof(ArgumentOutOfRangeException))]
93+
public void Test_ArrayPoolExtensions_EnsureCapacity_InvalidCapacity()
94+
{
95+
int[]? array = null;
96+
97+
ArrayPool<int>.Shared.EnsureCapacity(ref array, -1);
98+
}
99+
100+
[TestMethod]
101+
public void Test_ArrayPoolExtensions_EnsureCapacity_IdenticalCapacity()
102+
{
103+
int[]? array = ArrayPool<int>.Shared.Rent(10);
104+
int[]? backup = array;
105+
106+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 10);
107+
Assert.AreSame(backup, array);
108+
Assert.IsTrue(array.Length >= 10);
109+
}
110+
111+
[TestMethod]
112+
public void Test_ArrayPoolExtensions_EnsureCapacity_NewArray()
113+
{
114+
int[]? array = null;
115+
116+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 7);
117+
118+
Assert.IsNotNull(array);
119+
Assert.IsTrue(array.Length >= 7);
120+
int[]? backup = array;
121+
122+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 64);
123+
124+
Assert.AreNotSame(backup, array);
125+
Assert.IsTrue(array.Length >= 64);
126+
}
127+
128+
[TestMethod]
129+
public void Test_ArrayPoolExtensions_EnsureCapacity_SufficientCapacity()
130+
{
131+
int[]? array = ArrayPool<int>.Shared.Rent(16);
132+
int[]? backup = array;
133+
134+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 8);
135+
Assert.AreSame(backup, array);
136+
137+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 16);
138+
Assert.AreSame(backup, array);
139+
140+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 0);
141+
Assert.AreSame(backup, array);
142+
}
143+
144+
[TestMethod]
145+
public void Test_ArrayPoolExtensions_EnsureCapacity_ClearArray()
146+
{
147+
int[]? array = ArrayPool<int>.Shared.Rent(16);
148+
int[]? backup = array;
149+
150+
array.AsSpan().Fill(7);
151+
Assert.IsTrue(backup.All(i => i == 7));
152+
153+
ArrayPool<int>.Shared.EnsureCapacity(ref array, 256, true);
154+
155+
Assert.AreNotSame(backup, array);
156+
Assert.IsTrue(backup.All(i => i == default));
157+
Assert.IsTrue(array.Length >= 256);
158+
}
90159
}

0 commit comments

Comments
 (0)