Sin descripción
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UnsafeAtomicCounterTests.cs 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using NUnit.Framework;
  2. using Unity.Collections.LowLevel.Unsafe;
  3. using Unity.Collections.Tests;
  4. internal class UnsafeCounterTests
  5. {
  6. [Test]
  7. public unsafe void UnsafeAtomicCounter32_AddSub()
  8. {
  9. int value = 0;
  10. var counter = new UnsafeAtomicCounter32(&value);
  11. Assert.AreEqual(0, counter.Add(123));
  12. Assert.AreEqual(123, counter.Add(0));
  13. Assert.AreEqual(123, counter.Sub(0));
  14. Assert.AreEqual(123, counter.AddSat(1, 123));
  15. Assert.AreEqual(123, counter.SubSat(1, 123));
  16. counter.AddSat(0xffff, 256);
  17. Assert.AreEqual(256, counter.Add(0));
  18. counter.SubSat(0xffff, -256);
  19. Assert.AreEqual(-256, counter.Add(0));
  20. }
  21. [Test]
  22. public unsafe void UnsafeAtomicCounter64_AddSub()
  23. {
  24. long value = 0;
  25. var counter = new UnsafeAtomicCounter64(&value);
  26. Assert.AreEqual(0, counter.Add(123));
  27. Assert.AreEqual(123, counter.Add(0));
  28. Assert.AreEqual(123, counter.Sub(0));
  29. Assert.AreEqual(123, counter.AddSat(1, 123));
  30. Assert.AreEqual(123, counter.SubSat(1, 123));
  31. counter.AddSat(0xffff, 256);
  32. Assert.AreEqual(256, counter.Add(0));
  33. counter.SubSat(0xffff, -256);
  34. Assert.AreEqual(-256, counter.Add(0));
  35. }
  36. }