55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
using MrGameEng.Graphics;
|
|
using Xunit;
|
|
|
|
namespace MrGameEng.Graphics.Tests;
|
|
|
|
public class SpriteBatcherTests
|
|
{
|
|
private static SpriteInstance Instance(byte layer) => new() { Layer = layer };
|
|
|
|
[Fact]
|
|
public void Sort_OrdersByKey_ReturningOriginalIndices()
|
|
{
|
|
var batcher = new SpriteBatcher(initialCapacity: 2);
|
|
|
|
batcher.Submit(Instance(2), SpriteSortKey.Make(2, 0f, 0));
|
|
batcher.Submit(Instance(0), SpriteSortKey.Make(0, 0f, 0));
|
|
batcher.Submit(Instance(1), SpriteSortKey.Make(1, 0f, 0));
|
|
|
|
var order = batcher.Sort();
|
|
|
|
Assert.Equal(3, order.Length);
|
|
Assert.Equal(0, batcher[order[0]].Layer);
|
|
Assert.Equal(1, batcher[order[1]].Layer);
|
|
Assert.Equal(2, batcher[order[2]].Layer);
|
|
}
|
|
|
|
[Fact]
|
|
public void Submit_GrowsBeyondInitialCapacity()
|
|
{
|
|
var batcher = new SpriteBatcher(initialCapacity: 1);
|
|
|
|
for (var i = 0; i < 100; i++)
|
|
{
|
|
batcher.Submit(Instance(0), (ulong)(100 - i));
|
|
}
|
|
|
|
Assert.Equal(100, batcher.Count);
|
|
var order = batcher.Sort();
|
|
Assert.Equal(99, order[0]); // последний сабмит имеет наименьший ключ
|
|
}
|
|
|
|
[Fact]
|
|
public void Clear_ResetsCount_KeepsWorking()
|
|
{
|
|
var batcher = new SpriteBatcher();
|
|
batcher.Submit(Instance(0), 5);
|
|
batcher.Clear();
|
|
|
|
Assert.Equal(0, batcher.Count);
|
|
batcher.Submit(Instance(1), 1);
|
|
Assert.Equal(1, batcher.Count);
|
|
Assert.Equal(1, batcher[batcher.Sort()[0]].Layer);
|
|
}
|
|
}
|