@@ -145,13 +145,13 @@ func TestAllocateAdditionalSpaceForInsufficientFreeFragmentedSpaceWhereHeadIsBef
145
145
queue := NewBytesQueue (25 , 0 , false )
146
146
147
147
// when
148
- queue .Push (blob ('a' , 3 )) // header + entry + left margin = 8 bytes
149
- queue .Push (blob ('b' , 6 )) // additional 10 bytes
150
- queue .Pop () // space freed, 7 bytes available at the beginning
151
- queue .Push (blob ('c' , 6 )) // 10 bytes needed, 14 available but not in one segment, allocate additional memory
148
+ queue .Push (blob ('a' , 3 )) // header + entry + left margin = 5 bytes
149
+ queue .Push (blob ('b' , 6 )) // additional 7 bytes
150
+ queue .Pop () // space freed, 4 bytes available at the beginning
151
+ queue .Push (blob ('c' , 6 )) // 7 bytes needed, 13 bytes available at the tail
152
152
153
153
// then
154
- assertEqual (t , 50 , queue .Capacity ())
154
+ assertEqual (t , 25 , queue .Capacity ())
155
155
assertEqual (t , blob ('b' , 6 ), pop (queue ))
156
156
assertEqual (t , blob ('c' , 6 ), pop (queue ))
157
157
}
@@ -163,13 +163,13 @@ func TestUnchangedEntriesIndexesAfterAdditionalMemoryAllocationWhereHeadIsBefore
163
163
queue := NewBytesQueue (25 , 0 , false )
164
164
165
165
// when
166
- queue .Push (blob ('a' , 3 )) // header + entry + left margin = 8 bytes
167
- index , _ := queue .Push (blob ('b' , 6 )) // additional 10 bytes
168
- queue .Pop () // space freed, 7 bytes available at the beginning
169
- newestIndex , _ := queue .Push (blob ('c' , 6 )) // 10 bytes needed, 14 available but not in one segment, allocate additional memory
166
+ queue .Push (blob ('a' , 3 )) // header + entry + left margin = 5 bytes
167
+ index , _ := queue .Push (blob ('b' , 6 )) // additional 7 bytes
168
+ queue .Pop () // space freed, 4 bytes available at the beginning
169
+ newestIndex , _ := queue .Push (blob ('c' , 6 )) // 7 bytes needed, 13 available at the tail
170
170
171
171
// then
172
- assertEqual (t , 50 , queue .Capacity ())
172
+ assertEqual (t , 25 , queue .Capacity ())
173
173
assertEqual (t , blob ('b' , 6 ), get (queue , index ))
174
174
assertEqual (t , blob ('c' , 6 ), get (queue , newestIndex ))
175
175
}
@@ -181,19 +181,19 @@ func TestAllocateAdditionalSpaceForInsufficientFreeFragmentedSpaceWhereTailIsBef
181
181
queue := NewBytesQueue (100 , 0 , false )
182
182
183
183
// when
184
- queue .Push (blob ('a' , 70 )) // header + entry + left margin = 75 bytes
185
- queue .Push (blob ('b' , 10 )) // 75 + 10 + 4 = 89 bytes
184
+ queue .Push (blob ('a' , 70 )) // header + entry + left margin = 72 bytes
185
+ queue .Push (blob ('b' , 10 )) // 72 + 10 + 1 = 83 bytes
186
186
queue .Pop () // space freed at the beginning
187
- queue .Push (blob ('c' , 30 )) // 34 bytes used at the beginning, tail pointer is before head pointer
188
- queue .Push (blob ('d' , 40 )) // 44 bytes needed but no available in one segment, allocate new memory
187
+ queue .Push (blob ('c' , 30 )) // 31 bytes used at the beginning, tail pointer is before head pointer
188
+ queue .Push (blob ('d' , 40 )) // 41 bytes needed but no available in one segment, allocate new memory
189
189
190
190
// then
191
191
assertEqual (t , 200 , queue .Capacity ())
192
192
assertEqual (t , blob ('c' , 30 ), pop (queue ))
193
193
// empty blob fills space between tail and head,
194
194
// created when additional memory was allocated,
195
195
// it keeps current entries indexes unchanged
196
- assertEqual (t , blob (0 , 36 ), pop (queue ))
196
+ assertEqual (t , blob (0 , 39 ), pop (queue ))
197
197
assertEqual (t , blob ('b' , 10 ), pop (queue ))
198
198
assertEqual (t , blob ('d' , 40 ), pop (queue ))
199
199
}
@@ -205,11 +205,11 @@ func TestUnchangedEntriesIndexesAfterAdditionalMemoryAllocationWhereTailIsBefore
205
205
queue := NewBytesQueue (100 , 0 , false )
206
206
207
207
// when
208
- queue .Push (blob ('a' , 70 )) // header + entry + left margin = 75 bytes
209
- index , _ := queue .Push (blob ('b' , 10 )) // 75 + 10 + 4 = 89 bytes
208
+ queue .Push (blob ('a' , 70 )) // header + entry + left margin = 72 bytes
209
+ index , _ := queue .Push (blob ('b' , 10 )) // 72 + 10 + 1 = 83 bytes
210
210
queue .Pop () // space freed at the beginning
211
- queue .Push (blob ('c' , 30 )) // 34 bytes used at the beginning, tail pointer is before head pointer
212
- newestIndex , _ := queue .Push (blob ('d' , 40 )) // 44 bytes needed but no available in one segment, allocate new memory
211
+ queue .Push (blob ('c' , 30 )) // 31 bytes used at the beginning, tail pointer is before head pointer
212
+ newestIndex , _ := queue .Push (blob ('d' , 40 )) // 41 bytes needed but no available in one segment, allocate new memory
213
213
214
214
// then
215
215
assertEqual (t , 200 , queue .Capacity ())
@@ -225,10 +225,10 @@ func TestAllocateAdditionalSpaceForValueBiggerThanInitQueue(t *testing.T) {
225
225
226
226
// when
227
227
queue .Push (blob ('a' , 100 ))
228
-
229
228
// then
230
229
assertEqual (t , blob ('a' , 100 ), pop (queue ))
231
- assertEqual (t , 230 , queue .Capacity ())
230
+ // 224 = (101 + 11) * 2
231
+ assertEqual (t , 224 , queue .Capacity ())
232
232
}
233
233
234
234
func TestAllocateAdditionalSpaceForValueBiggerThanQueue (t * testing.T ) {
@@ -246,7 +246,8 @@ func TestAllocateAdditionalSpaceForValueBiggerThanQueue(t *testing.T) {
246
246
queue .Pop ()
247
247
queue .Pop ()
248
248
assertEqual (t , make ([]byte , 100 ), pop (queue ))
249
- assertEqual (t , 250 , queue .Capacity ())
249
+ // 244 = (101 + 21) * 2
250
+ assertEqual (t , 244 , queue .Capacity ())
250
251
}
251
252
252
253
func TestPopWholeQueue (t * testing.T ) {
@@ -343,7 +344,7 @@ func TestMaxSizeLimit(t *testing.T) {
343
344
queue .Push (blob ('a' , 25 ))
344
345
queue .Push (blob ('b' , 5 ))
345
346
capacity := queue .Capacity ()
346
- _ , err := queue .Push (blob ('c' , 15 ))
347
+ _ , err := queue .Push (blob ('c' , 20 ))
347
348
348
349
// then
349
350
assertEqual (t , 50 , capacity )
0 commit comments