public void AtomicLongArray_Store_Should_Fail()
        {
            var atomicLongArray = new AtomicLongArray(new [] { 100L });

            Assert.Throws <InvalidOperationException>(() => atomicLongArray.Store(0, int.MinValue, MemoryOrder.Acquire));
#pragma warning disable 618
            Assert.Throws <NotSupportedException>(() => atomicLongArray.Store(0, int.MinValue, MemoryOrder.Consume));
#pragma warning restore 618
        }
        public void AtomicLongArray_Store_Should_Success(int initialValue, int storeValue, MemoryOrder order)
        {
            var atomicLongArray = new AtomicLongArray(new long[] { initialValue }, MemoryOrder.Relaxed);

            atomicLongArray.Store(0, storeValue, order);
            Assert.Equal(storeValue, atomicLongArray[0]);
        }
        public void AtomicLongArray_Store_MemoryOrder_Should_Success(MemoryOrder order)
        {
            var atomicLongArray = new AtomicLongArray(new long[3], order);

            for (int i = 0; i < atomicLongArray.Count; i++)
            {
                atomicLongArray.Store(i, i, order);
            }

            for (int i = 0; i < atomicLongArray.Count; i++)
            {
                Assert.Equal(i, atomicLongArray.Load(i, order));
            }

            for (int i = 0; i < atomicLongArray.Count; i++)
            {
                atomicLongArray.Store(i, i, order);
            }

            for (int i = 0; i < atomicLongArray.Count; i++)
            {
                Assert.Equal(i, atomicLongArray.Load(i, order));
            }
        }
        public void AtomicLongArray_Load_Acquire_Should_Success(MemoryOrder order)
        {
            var atomicLongArray = new AtomicLongArray(new long[3], order);

            for (int i = 0; i < atomicLongArray.Count; i++)
            {
                Assert.Equal(0, atomicLongArray.Load(i, MemoryOrder.Acquire));
                atomicLongArray.Store(i, i, MemoryOrder.Release);
            }

            for (int i = 0; i < atomicLongArray.Count; i++)
            {
                Assert.Equal(i, atomicLongArray.Load(i, MemoryOrder.Acquire));
            }
        }