45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
|
using NUnit.Framework;
|
||
|
using Unity.Collections.LowLevel.Unsafe;
|
||
|
using Unity.Collections.Tests;
|
||
|
|
||
|
internal class UnsafeCounterTests
|
||
|
{
|
||
|
[Test]
|
||
|
public unsafe void UnsafeAtomicCounter32_AddSub()
|
||
|
{
|
||
|
int value = 0;
|
||
|
var counter = new UnsafeAtomicCounter32(&value);
|
||
|
|
||
|
Assert.AreEqual(0, counter.Add(123));
|
||
|
Assert.AreEqual(123, counter.Add(0));
|
||
|
Assert.AreEqual(123, counter.Sub(0));
|
||
|
Assert.AreEqual(123, counter.AddSat(1, 123));
|
||
|
Assert.AreEqual(123, counter.SubSat(1, 123));
|
||
|
|
||
|
counter.AddSat(0xffff, 256);
|
||
|
Assert.AreEqual(256, counter.Add(0));
|
||
|
|
||
|
counter.SubSat(0xffff, -256);
|
||
|
Assert.AreEqual(-256, counter.Add(0));
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public unsafe void UnsafeAtomicCounter64_AddSub()
|
||
|
{
|
||
|
long value = 0;
|
||
|
var counter = new UnsafeAtomicCounter64(&value);
|
||
|
|
||
|
Assert.AreEqual(0, counter.Add(123));
|
||
|
Assert.AreEqual(123, counter.Add(0));
|
||
|
Assert.AreEqual(123, counter.Sub(0));
|
||
|
Assert.AreEqual(123, counter.AddSat(1, 123));
|
||
|
Assert.AreEqual(123, counter.SubSat(1, 123));
|
||
|
|
||
|
counter.AddSat(0xffff, 256);
|
||
|
Assert.AreEqual(256, counter.Add(0));
|
||
|
|
||
|
counter.SubSat(0xffff, -256);
|
||
|
Assert.AreEqual(-256, counter.Add(0));
|
||
|
}
|
||
|
}
|