public void AtomicDataResource_Uninitialized_Exception() { var afloat = new AtomicFloat(); Assert.Throws <System.NullReferenceException>(() => { afloat.get(); }); Assert.Throws <System.NullReferenceException>(() => { afloat.set(1f); }); Assert.Throws <System.NullReferenceException>(() => { afloat.add(1f); }); Assert.Throws <System.NullReferenceException>(() => { afloat.Dispose(); }); }
public void AtomicDataResource_Atomic_Self_Dispose_Repeating() { const int MAX = 5000; var resource = new AtomicFloatResource(MAX, Allocator.Persistent); var holder = new NativeArray <AtomicFloat>(MAX, Allocator.Persistent); AtomicFloat special_afloat = new AtomicFloat(); for (var k = 0; k < 8; ++k) { var job0 = new Job0() { resource = resource, holder = holder, }; job0.Schedule(MAX, 32).Complete(); Assert.AreEqual(MAX, resource.getCountInUse()); if (k == 0) { special_afloat = holder[MAX / 3]; } for (var i = 0; i < MAX; ++i) { var afloat = holder[i]; Assert.IsTrue(afloat.Exists()); } var job3 = new Job3() { holder = holder, }; job3.Schedule(MAX, 32).Complete(); Assert.AreEqual(0, resource.getCountInUse()); for (var i = 0; i < MAX; ++i) { var afloat = holder[i]; Assert.IsFalse(afloat.Exists()); } } { var job0 = new Job0() { resource = resource, holder = holder, }; job0.Schedule(MAX, 32).Complete(); Assert.AreEqual(MAX, resource.getCountInUse()); // all slots are in use. Assert.IsFalse(special_afloat.Exists()); // too old. } holder.Dispose(); resource.Dispose(); }
public void TestAtomicInt32() { var d = AtomicFloat.From(10); Assert.Equal(10, d.Value); Assert.True(d.CompareExchange(20, 10)); Assert.Equal(20, d.Value); Assert.True(d.Exchange(30)); Assert.Equal(30, d.Value); Assert.Equal(30, (int)d); }
public void TestAtomicFloat() { var d = AtomicFloat.From(0.1f); Assert.Equal(0.1f, d.Value); Assert.True(d.CompareExchange(0.2f, 0.1f)); Assert.Equal(0.2f, d.Value); Assert.True(d.Exchange(0.3f)); Assert.Equal(0.3f, d.Value); Assert.Equal(0.3f, d); }
public void AtomicDataResource_Allocate_Deallocate() { const int NUM = 128; var c = new AtomicFloatResource(NUM, Allocator.Persistent); var list = new AtomicFloat[NUM]; for (var i = 0; i < NUM; ++i) { list[i] = c.Create(0f); } Assert.AreEqual(NUM, c.getCountInUse()); for (var i = 0; i < NUM; ++i) { c.Destroy(ref list[i]); } Assert.AreEqual(0, c.getCountInUse()); c.Dispose(); }
public void TestAtomicFloatDefaultCtor() { var af = new AtomicFloat(); Assert.Equal(0.0f, af.Value); }