Files
Misaki.HighPerformance/Misaki.HighPerformance.Test/UnitTest/Buffer/TestAllocationManager.cs

86 lines
2.1 KiB
C#

using Misaki.HighPerformance.LowLevel.Buffer;
namespace Misaki.HighPerformance.Test.UnitTest.Buffer;
[TestClass]
[DoNotParallelize]
public class TestAllocationManager
{
[TestMethod]
public void PersistentAllocationTest()
{
var ptr1 = new MemoryBlock(1024, 8, AllocationHandle.Persistent);
var ptr2 = new MemoryBlock(2048, 8, AllocationHandle.Persistent);
Assert.IsTrue(ptr1.IsCreated);
Assert.IsTrue(ptr2.IsCreated);
ptr1.Dispose();
ptr2.Dispose();
Assert.IsFalse(ptr1.IsCreated);
Assert.IsFalse(ptr2.IsCreated);
}
[TestMethod]
public void TempAllocationTest()
{
var ptr1 = new MemoryBlock(1024, 8, AllocationHandle.Temp);
var ptr2 = new MemoryBlock(2048, 8, AllocationHandle.Temp);
Assert.IsTrue(ptr1.IsCreated);
Assert.IsTrue(ptr2.IsCreated);
ptr1.Dispose();
ptr2.Dispose();
Assert.IsFalse(ptr1.IsCreated);
Assert.IsFalse(ptr2.IsCreated);
AllocationManager.ResetTempAllocator();
}
[TestMethod]
public void FreeListAllocationTest()
{
var ptr1 = new MemoryBlock(1024, 8, AllocationHandle.FreeList);
var ptr2 = new MemoryBlock(2048, 8, AllocationHandle.FreeList);
Assert.IsTrue(ptr1.IsCreated);
Assert.IsTrue(ptr2.IsCreated);
ptr1.Dispose();
ptr2.Dispose();
Assert.IsFalse(ptr1.IsCreated);
Assert.IsFalse(ptr2.IsCreated);
}
[TestMethod]
public unsafe void StackAllocationTest()
{
var thread = new Thread(() =>
{
var scope = AllocationManager.CreateStackScope();
var ptr1 = new MemoryBlock(1024, 8, scope.AllocationHandle);
Assert.IsTrue(ptr1.IsCreated);
ptr1.Dispose();
scope.Dispose();
});
thread.Start();
var scope = AllocationManager.CreateStackScope();
var ptr2 = new MemoryBlock(1024, 8, scope.AllocationHandle);
Assert.IsTrue(ptr2.IsCreated);
ptr2.Dispose();
scope.Dispose();
thread.Join();
}
}