@@ -94,15 +94,33 @@ public void DynamicTable_InsertEntryLargerThanRemainingSpace_NoOp()
94
94
Assert . Equal ( 0 , dynamicTable . Size ) ;
95
95
}
96
96
97
+ public static IEnumerable < object [ ] > DynamicTable_WrapsRingBuffer_Success_MemberData ( )
98
+ {
99
+ foreach ( int maxSize in new [ ] { 100 , 256 , 1000 } )
100
+ {
101
+ int maxCount = maxSize / ( 2 * "header-0" . Length + HeaderField . RfcOverhead ) ;
102
+
103
+ for ( int i = 0 ; i < maxCount ; i ++ )
104
+ {
105
+ yield return new object [ ] { maxSize , i } ;
106
+ }
107
+ }
108
+ }
109
+
97
110
[ Theory ]
98
- [ InlineData ( 0 ) ]
99
- [ InlineData ( 1 ) ]
100
- [ InlineData ( 2 ) ]
101
- [ InlineData ( 3 ) ]
102
- public void DynamicTable_WrapsRingBuffer_Success ( int targetInsertIndex )
111
+ [ MemberData ( nameof ( DynamicTable_WrapsRingBuffer_Success_MemberData ) ) ]
112
+ public void DynamicTable_WrapsRingBuffer_Success ( int maxSize , int targetInsertIndex )
103
113
{
114
+ DynamicTable table = new DynamicTable ( maxSize ) ;
115
+
116
+ // The table grows its internal buffer dynamically.
117
+ // Fill it with enough entries to force it to grow to max size.
118
+ for ( int i = 0 ; i < table . MaxSize / HeaderField . RfcOverhead ; i ++ )
119
+ {
120
+ table . Insert ( "a"u8 , "b"u8 ) ;
121
+ }
122
+
104
123
FieldInfo insertIndexField = typeof ( DynamicTable ) . GetField ( "_insertIndex" , BindingFlags . NonPublic | BindingFlags . Instance ) ;
105
- DynamicTable table = new DynamicTable ( maxSize : 256 ) ;
106
124
Stack < byte [ ] > insertedHeaders = new Stack < byte [ ] > ( ) ;
107
125
108
126
// Insert into dynamic table until its insert index into its ring buffer loops back to 0.
@@ -167,7 +185,7 @@ public void DynamicTable_Resize_Success(int initialMaxSize, int finalMaxSize, in
167
185
headers . Add ( dynamicTable [ i ] ) ;
168
186
}
169
187
170
- dynamicTable . Resize ( finalMaxSize ) ;
188
+ dynamicTable . UpdateMaxSize ( finalMaxSize ) ;
171
189
172
190
int expectedCount = Math . Min ( finalMaxSize / 64 , headers . Count ) ;
173
191
Assert . Equal ( expectedCount , dynamicTable . Count ) ;
@@ -188,7 +206,7 @@ public void DynamicTable_ResizingEvictsOldestEntries()
188
206
189
207
VerifyTableEntries ( dynamicTable , _header2 , _header1 ) ;
190
208
191
- dynamicTable . Resize ( _header2 . Length ) ;
209
+ dynamicTable . UpdateMaxSize ( _header2 . Length ) ;
192
210
193
211
VerifyTableEntries ( dynamicTable , _header2 ) ;
194
212
}
@@ -200,7 +218,7 @@ public void DynamicTable_ResizingToZeroEvictsAllEntries()
200
218
dynamicTable . Insert ( _header1 . Name , _header1 . Value ) ;
201
219
dynamicTable . Insert ( _header2 . Name , _header2 . Value ) ;
202
220
203
- dynamicTable . Resize ( 0 ) ;
221
+ dynamicTable . UpdateMaxSize ( 0 ) ;
204
222
205
223
Assert . Equal ( 0 , dynamicTable . Count ) ;
206
224
Assert . Equal ( 0 , dynamicTable . Size ) ;
@@ -219,7 +237,7 @@ public void DynamicTable_CanBeResizedToLargerMaxSize()
219
237
Assert . Equal ( 0 , dynamicTable . Count ) ;
220
238
Assert . Equal ( 0 , dynamicTable . Size ) ;
221
239
222
- dynamicTable . Resize ( dynamicTable . MaxSize + _header2 . Length ) ;
240
+ dynamicTable . UpdateMaxSize ( dynamicTable . MaxSize + _header2 . Length ) ;
223
241
dynamicTable . Insert ( _header2 . Name , _header2 . Value ) ;
224
242
225
243
VerifyTableEntries ( dynamicTable , _header2 ) ;
0 commit comments