Skip to content

Commit fdfbddc

Browse files
author
Vyacheslav
committed
fix: wrong tail
1 parent 939274f commit fdfbddc

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

Src/StackMemoryCollections/GeneratePrimitiveQueue.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,8 @@ public void ReducingCapacity(in nuint reducingCount)
375375
if(freeCountToEnd == 0 || freeCountToEnd < reducingCount)
376376
{{
377377
_stackMemoryS->ShiftLeft((byte*)(_start + _head), (byte*)(_start + (_tail + 1)), (long)((Capacity - freeCountToEnd - ((_tail + 1) - _head)) * {sizeOf}));
378-
_head = 0;{incrementVersion}
378+
_head = 0;
379+
_tail = Size - 1;{incrementVersion}
379380
}}
380381
}}
381382
}}
@@ -415,7 +416,8 @@ public void ReducingCapacity(in nuint reducingCount)
415416
if(freeCountToEnd == 0 || freeCountToEnd < reducingCount)
416417
{{
417418
_stackMemoryC.ShiftLeft((byte*)(_start + _head), (byte*)(_start + (_tail + 1)), (long)((Capacity - freeCountToEnd - ((_tail + 1) - _head)) * {sizeOf}));
418-
_head = 0;{incrementVersion}
419+
_head = 0;
420+
_tail = Size - 1;{incrementVersion}
419421
}}
420422
}}
421423
}}

Src/StackMemoryCollections/StackMemoryCollections.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
<Description>Fast unsafe collections for memory reuse by stack type. Adding elements without overhead when increasing Capacity. Can also be used in as classic collection with resizing or on a custom memory allocator. See collection descriptions and examples on GitHub.</Description>
3232
<PackageTags>collection, unsafe, memory, stack, list, queue, analysis, generator, wrapper, roslyn</PackageTags>
3333
<NoPackageAnalysis>true</NoPackageAnalysis>
34-
<AssetTargetFallback>net6.0,net7.0</AssetTargetFallback>
3534
<PackageLicenseFile>LICENSE</PackageLicenseFile>
3635
<PackageReleaseNotes>
3736
- Added supported Queue collection, for primitive types

Src/TestGenerator/GenerateQueuePrimitiveTest.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,20 +1070,23 @@ public void ExpandCapacityHeadAfterTailTest()
10701070
}
10711071
builder.Append($@"
10721072
queue.ExpandCapacity(3);
1073+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[2])}));
10731074
queue.Push({toStr(values[values.Count - 1])});
10741075
");
10751076
for (int i = 3; i < values.Count; i++)
10761077
{
10771078
builder.Append($@"
10781079
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
10791080
queue.Pop();
1081+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
10801082
");
10811083
}
10821084
for (int i = 0; i < 3; i++)
10831085
{
10841086
builder.Append($@"
10851087
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
10861088
queue.Pop();
1089+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
10871090
");
10881091
}
10891092

@@ -1135,20 +1138,23 @@ public void ExpandCapacityHeadAfterTailOwnTest()
11351138
}
11361139
builder.Append($@"
11371140
queue.ExpandCapacity(3);
1141+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[1])}));
11381142
queue.Push({toStr(values[values.Count - 1])});
11391143
");
11401144
for (int i = 2; i < 4; i++)
11411145
{
11421146
builder.Append($@"
11431147
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
11441148
queue.Pop();
1149+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
11451150
");
11461151
}
11471152
for (int i = 0; i < 2; i++)
11481153
{
11491154
builder.Append($@"
11501155
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
11511156
queue.Pop();
1157+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
11521158
");
11531159
}
11541160

@@ -1199,13 +1205,15 @@ public void ExpandCapacityHeadBeforeTailTest()
11991205
}
12001206
builder.Append($@"
12011207
queue.ExpandCapacity(3);
1208+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
12021209
queue.Push({toStr(values[values.Count - 1])});
12031210
");
12041211
for (int i = 0; i < values.Count; i++)
12051212
{
12061213
builder.Append($@"
12071214
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
12081215
queue.Pop();
1216+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
12091217
");
12101218
}
12111219
builder.Append($@"
@@ -1246,13 +1254,15 @@ public void ExpandCapacityHeadBeforeTailOwnTest()
12461254
}
12471255
builder.Append($@"
12481256
queue.ExpandCapacity(3);
1257+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[3])}));
12491258
queue.Push({toStr(values[values.Count - 1])});
12501259
");
12511260
for (int i = 0; i < 4; i++)
12521261
{
12531262
builder.Append($@"
12541263
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
12551264
queue.Pop();
1265+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
12561266
");
12571267
}
12581268
builder.Append($@"
@@ -1356,12 +1366,14 @@ public void ReducingCapacityHeadAfterTailTest()
13561366
queue.Pop();
13571367
queue.Push({toStr(values[values.Count - 1])});
13581368
queue.ReducingCapacity(1);
1369+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
13591370
");
13601371
for (int i = 2; i < values.Count; i++)
13611372
{
13621373
builder.Append($@"
13631374
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
13641375
queue.Pop();
1376+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
13651377
");
13661378
}
13671379
builder.Append($@"
@@ -1410,17 +1422,20 @@ public void ReducingCapacityHeadAfterTailOwnTest()
14101422
builder.Append($@"
14111423
queue.Push({toStr(values[values.Count - 1])});
14121424
queue.ReducingCapacity(1);
1425+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
14131426
");
14141427
for (int i = 2; i < 4; i++)
14151428
{
14161429
builder.Append($@"
14171430
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
14181431
queue.Pop();
1432+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
14191433
");
14201434
}
14211435
builder.Append($@"
14221436
Assert.That(queue.Front(), Is.EqualTo({toStr(values[0])}));
14231437
queue.Pop();
1438+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 1])}));
14241439
Assert.That(queue.Front(), Is.EqualTo({toStr(values[values.Count - 1])}));
14251440
queue.Pop();
14261441
");
@@ -1469,11 +1484,13 @@ public void ReducingCapacityHeadBeforeTailTest()
14691484
builder.Append($@"
14701485
queue.Pop();
14711486
queue.ReducingCapacity(2);
1487+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 2])}));
14721488
");
14731489
for (int i = 1; i < values.Count - 1; i++)
14741490
{
14751491
builder.Append($@"
14761492
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
1493+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[values.Count - 2])}));
14771494
queue.Pop();
14781495
");
14791496
}
@@ -1515,11 +1532,13 @@ public void ReducingCapacityHeadBeforeTailOwnTest()
15151532
builder.Append($@"
15161533
queue.Pop();
15171534
queue.ReducingCapacity(2);
1535+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[2])}));
15181536
");
15191537
for (int i = 1; i < 3; i++)
15201538
{
15211539
builder.Append($@"
15221540
Assert.That(queue.Front(), Is.EqualTo({toStr(values[i])}));
1541+
Assert.That(queue.Back(), Is.EqualTo({toStr(values[2])}));
15231542
queue.Pop();
15241543
");
15251544
}

0 commit comments

Comments
 (0)