@@ -285,6 +285,8 @@ in Func<T, string> toStr
285285 QueuePrimitiveExpandCapacity ( in values , in builder , in queueNamespace ) ;
286286 QueuePrimitiveExpandCapacityHeadAfterTail ( in values , in builder , in queueNamespace , in toStr ) ;
287287 QueuePrimitiveExpandCapacityHeadAfterTailOwn ( in values , in builder , in queueNamespace , in toStr ) ;
288+ QueuePrimitiveExpandCapacityHeadBeforeTail ( in values , in builder , in queueNamespace , in toStr ) ;
289+ QueuePrimitiveExpandCapacityHeadBeforeTailOwn ( in values , in builder , in queueNamespace , in toStr ) ;
288290
289291 QueuePrimitiveReducingCapacity ( in values , in builder , in queueNamespace ) ;
290292
@@ -1124,6 +1126,100 @@ public void ExpandCapacityHeadAfterTailOwnTest()
11241126" ) ;
11251127 }
11261128
1129+ private void QueuePrimitiveExpandCapacityHeadBeforeTail < T > (
1130+ in List < T > values ,
1131+ in StringBuilder builder ,
1132+ in string queueNamespace ,
1133+ in Func < T , string > toStr
1134+ ) where T : unmanaged
1135+ {
1136+ if ( values . Count < 5 )
1137+ {
1138+ throw new ArgumentException ( $ "{ nameof ( values ) } Must have minimum 5 values to generate tests") ;
1139+ }
1140+
1141+ builder . Append ( $@ "
1142+ [Test]
1143+ public void ExpandCapacityHeadBeforeTailTest()
1144+ {{
1145+ unsafe
1146+ {{
1147+ using (var memory = new StackMemoryCollections.Struct.StackMemory(sizeof({ typeof ( T ) . Name } ) * { values . Count + 3 } ))
1148+ {{
1149+ var queue = new StackMemoryCollections.{ queueNamespace } .QueueOf{ typeof ( T ) . Name } ({ values . Count } , &memory);
1150+ " ) ;
1151+ for ( int i = 0 ; i < values . Count ; i ++ )
1152+ {
1153+ builder . Append ( $@ "
1154+ queue.Push({ toStr ( values [ i ] ) } );
1155+ " ) ;
1156+ }
1157+ builder . Append ( $@ "
1158+ queue.ExpandCapacity(3);
1159+ queue.Push({ toStr ( values [ values . Count - 1 ] ) } );
1160+ " ) ;
1161+ for ( int i = 0 ; i < values . Count ; i ++ )
1162+ {
1163+ builder . Append ( $@ "
1164+ Assert.That(queue.Front(), Is.EqualTo({ toStr ( values [ i ] ) } ));
1165+ queue.Pop();
1166+ " ) ;
1167+ }
1168+ builder . Append ( $@ "
1169+ Assert.That(queue.Front(), Is.EqualTo({ toStr ( values [ values . Count - 1 ] ) } ));
1170+ queue.Pop();
1171+
1172+ }}
1173+ }}
1174+ }}
1175+ " ) ;
1176+ }
1177+
1178+ private void QueuePrimitiveExpandCapacityHeadBeforeTailOwn < T > (
1179+ in List < T > values ,
1180+ in StringBuilder builder ,
1181+ in string queueNamespace ,
1182+ in Func < T , string > toStr
1183+ ) where T : unmanaged
1184+ {
1185+ if ( values . Count < 5 )
1186+ {
1187+ throw new ArgumentException ( $ "{ nameof ( values ) } Must have minimum 5 values to generate tests") ;
1188+ }
1189+
1190+ builder . Append ( $@ "
1191+ [Test]
1192+ public void ExpandCapacityHeadBeforeTailOwnTest()
1193+ {{
1194+ unsafe
1195+ {{
1196+ var queue = new StackMemoryCollections.{ queueNamespace } .QueueOf{ typeof ( T ) . Name } ();
1197+ " ) ;
1198+ for ( int i = 0 ; i < 4 ; i ++ )
1199+ {
1200+ builder . Append ( $@ "
1201+ queue.Push({ toStr ( values [ i ] ) } );
1202+ " ) ;
1203+ }
1204+ builder . Append ( $@ "
1205+ queue.ExpandCapacity(3);
1206+ queue.Push({ toStr ( values [ values . Count - 1 ] ) } );
1207+ " ) ;
1208+ for ( int i = 0 ; i < 4 ; i ++ )
1209+ {
1210+ builder . Append ( $@ "
1211+ Assert.That(queue.Front(), Is.EqualTo({ toStr ( values [ i ] ) } ));
1212+ queue.Pop();
1213+ " ) ;
1214+ }
1215+ builder . Append ( $@ "
1216+ Assert.That(queue.Front(), Is.EqualTo({ toStr ( values [ values . Count - 1 ] ) } ));
1217+ queue.Pop();
1218+ }}
1219+ }}
1220+ " ) ;
1221+ }
1222+
11271223 private void QueuePrimitiveReducingCapacity < T > (
11281224 in List < T > values ,
11291225 in StringBuilder builder ,
0 commit comments