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();
    }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
    }
Exemple #6
0
        public void TestAtomicFloatDefaultCtor()
        {
            var af = new AtomicFloat();

            Assert.Equal(0.0f, af.Value);
        }