@@ -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