study/first_study/Library/PackageCache/com.unity.collections@aea9d3bd5e19/Unity.Collections.Tests/UnsafeAtomicCounterTests.cs
jh04010421 739d49f1a0 Unity | 2026.01.20
수업 실습 파일
2026-01-20 11:01:57 +09:00

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));
}
}