Esempio n. 1
0
        public void ConstructAtomicIntegerArryWithGivenSize()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                Assert.AreEqual(0, ai[i]);
            }
        }
Esempio n. 2
0
        public void ToStringTest()
        {
            long[]          a  = new long[] { 17, 3, -42, 99, -7 };
            AtomicLongArray ai = new AtomicLongArray(a);

            Assert.AreEqual(ToString(a), ai.ToString());

            long[] b = new long[0];
            Assert.AreEqual("[]", new AtomicLongArray(b).ToString());
        }
Esempio n. 3
0
        public void ConstructFromExistingArray()
        {
            long[]          a  = new long[] { 17L, 3L, -42L, 99L, -7L };
            AtomicLongArray ai = new AtomicLongArray(a);

            Assert.AreEqual(a.Length, ai.Count);
            for (int i = 0; i < a.Length; ++i)
            {
                Assert.AreEqual(a[i], ai[i]);
            }
        }
 public void CompareAndSetInMultipleThreads()
 {
     AtomicLongArray a = new AtomicLongArray(1);
     a[0] = 1;
     Thread t = ThreadManager.StartAndAssertRegistered(
         "T1", () => { while (!a.CompareAndSet(0, 2, 3)) Thread.Sleep(0); });
     Assert.IsTrue(a.CompareAndSet(0, 1, 2));
     ThreadManager.JoinAndVerify(Delays.Long);
     Assert.IsFalse(t.IsAlive);
     Assert.AreEqual(a[0], 3);
 }
 public void AddDeltaAndReturnPreviousValue()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
     {
         ai[i] = 1;
         Assert.AreEqual(1, ai.AddDeltaAndReturnPreviousValue(i, 2));
         Assert.AreEqual(3, ai[i]);
         Assert.AreEqual(3, ai.AddDeltaAndReturnPreviousValue(i, -4));
         Assert.AreEqual(- 1, ai[i]);
     }
 }
Esempio n. 6
0
        public void ReturnValueAndDecrement()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                Assert.AreEqual(1, ai.ReturnValueAndDecrement(i));
                Assert.AreEqual(0, ai.ReturnValueAndDecrement(i));
                Assert.AreEqual(-1, ai.ReturnValueAndDecrement(i));
            }
        }
Esempio n. 7
0
        public void Exchange()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                Assert.AreEqual(1, ai.Exchange(i, 0));
                Assert.AreEqual(0, ai.Exchange(i, -10));
                Assert.AreEqual(-10, ai.Exchange(i, 1));
            }
        }
Esempio n. 8
0
        public void AddDeltaAndReturnNewValue()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                Assert.AreEqual(3, ai.AddDeltaAndReturnNewValue(i, 2));
                Assert.AreEqual(3, ai[i]);
                Assert.AreEqual(-1, ai.AddDeltaAndReturnNewValue(i, -4));
                Assert.AreEqual(-1, ai[i]);
            }
        }
Esempio n. 9
0
        public void GetReturnsLastValueSetAtIndex()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                Assert.AreEqual(1, ai[i]);
                ai[i] = 2;
                Assert.AreEqual(2, ai[i]);
                ai[i] = -3;
                Assert.AreEqual(-3, ai[i]);
            }
        }
Esempio n. 10
0
        public void IncrementValueAndReturn()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                Assert.AreEqual(2, ai.IncrementValueAndReturn(i));
                Assert.AreEqual(2, ai[i]);
                ai[i] = -2;
                Assert.AreEqual(-1, ai.IncrementValueAndReturn(i));
                Assert.AreEqual(0, ai.IncrementValueAndReturn(i));
                Assert.AreEqual(1, ai.IncrementValueAndReturn(i));
                Assert.AreEqual(1, ai[i]);
            }
        }
Esempio n. 11
0
        public void CompareExistingValueAndSetNewValue()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                Assert.IsTrue(ai.CompareAndSet(i, 1, 2));
                Assert.IsTrue(ai.CompareAndSet(i, 2, -4));
                Assert.AreEqual(-4, ai[i]);
                Assert.IsFalse(ai.CompareAndSet(i, -5, 7));
                Assert.IsFalse((7 == ai[i]));
                Assert.IsTrue(ai.CompareAndSet(i, -4, 7));
                Assert.AreEqual(7, ai[i]);
            }
        }
Esempio n. 12
0
        public void IndexerChokesOnOutOfRangeIndex()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            long a = 0;

            TestHelper.AssertException <IndexOutOfRangeException>(
                delegate { a = ai[DEFAULT_COLLECTION_SIZE]; });
            TestHelper.AssertException <IndexOutOfRangeException>(
                delegate { a = ai[-1]; });
            TestHelper.AssertException <IndexOutOfRangeException>(
                delegate { ai.Exchange(DEFAULT_COLLECTION_SIZE, 0); });
            TestHelper.AssertException <IndexOutOfRangeException>(
                delegate { ai.Exchange(-1, 0); });
            Assert.AreEqual(0, a);
        }
Esempio n. 13
0
        public void CompareAndSetInMultipleThreads()
        {
            AtomicLongArray a = new AtomicLongArray(1);

            a[0] = 1;
            Thread t = ThreadManager.StartAndAssertRegistered(
                "T1", () => { while (!a.CompareAndSet(0, 2, 3))
                              {
                                  Thread.Sleep(0);
                              }
                });

            Assert.IsTrue(a.CompareAndSet(0, 1, 2));
            ThreadManager.JoinAndVerify(Delays.Long);
            Assert.IsFalse(t.IsAlive);
            Assert.AreEqual(a[0], 3);
        }
Esempio n. 14
0
        public void CountingInMultipleThreads()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = COUNTDOWN;
            }
            Counter c1 = new Counter(ai);
            Counter c2 = new Counter(ai);
            Thread  t1 = new Thread(c1.Run);
            Thread  t2 = new Thread(c2.Run);

            t1.Start();
            t2.Start();
            t1.Join();
            t2.Join();
            Assert.AreEqual(c1.counts + c2.counts, DEFAULT_COLLECTION_SIZE * COUNTDOWN);
        }
Esempio n. 15
0
        public void WeakCompareAndSet()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                ai[i] = 1;
                while (!ai.WeakCompareAndSet(i, 1, 2))
                {
                }
                while (!ai.WeakCompareAndSet(i, 2, -4))
                {
                }
                Assert.AreEqual(-4, ai[i]);
                while (!ai.WeakCompareAndSet(i, -4, 7))
                {
                }
                Assert.AreEqual(7, ai[i]);
                Assert.IsFalse(ai.WeakCompareAndSet(i, -4, 7));
            }
        }
Esempio n. 16
0
        public void SerializeAndDeserialize()
        {
            AtomicLongArray l = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                l[i] = -i;
            }

            MemoryStream bout = new MemoryStream(10000);

            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize(bout, l);

            MemoryStream    bin        = new MemoryStream(bout.ToArray());
            BinaryFormatter formatter2 = new BinaryFormatter();
            AtomicLongArray r          = (AtomicLongArray)formatter2.Deserialize(bin);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                Assert.AreEqual(l[i], r[i]);
            }
        }
Esempio n. 17
0
 internal Counter(AtomicLongArray a)
 {
     ai = a;
 }
 internal Counter(AtomicLongArray a)
 {
     ai = a;
 }
 public void WeakCompareAndSet()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
     {
         ai[i] = 1;
         while (!ai.WeakCompareAndSet(i, 1, 2)) {}
         while (!ai.WeakCompareAndSet(i, 2, - 4)) {}
         Assert.AreEqual(- 4, ai[i]);
         while (!ai.WeakCompareAndSet(i, - 4, 7)) {}
         Assert.AreEqual(7, ai[i]);
         Assert.IsFalse(ai.WeakCompareAndSet(i, -4, 7));
     }
 }
        public void ToStringTest()
        {
            long[] a = new long[] {17, 3, - 42, 99, - 7};
            AtomicLongArray ai = new AtomicLongArray(a);
            Assert.AreEqual(ToString(a), ai.ToString());

            long[] b = new long[0];
            Assert.AreEqual("[]", new AtomicLongArray(b).ToString());
        }
        public void SerializeAndDeserialize()
        {
            AtomicLongArray l = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
                l[i] = - i;

            MemoryStream bout = new MemoryStream(10000);

            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(bout, l);

            MemoryStream bin = new MemoryStream(bout.ToArray());
            BinaryFormatter formatter2 = new BinaryFormatter();
            AtomicLongArray r = (AtomicLongArray) formatter2.Deserialize(bin);

            for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
            {
                Assert.AreEqual(l[i], r[i]);
            }
        }
 public void ReturnValueAndIncrement()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
     {
         ai[i] = 1;
         Assert.AreEqual(1, ai.ReturnValueAndIncrement(i));
         Assert.AreEqual(2, ai[i]);
         ai[i] = - 2;
         Assert.AreEqual(-2, ai.ReturnValueAndIncrement(i));
         Assert.AreEqual(-1, ai.ReturnValueAndIncrement(i));
         Assert.AreEqual(0, ai.ReturnValueAndIncrement(i));
         Assert.AreEqual(1, ai[i]);
     }
 }
 public void GetReturnsLastValueSetAtIndex()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
     {
         ai[i] = 1;
         Assert.AreEqual(1, ai[i]);
         ai[i] = 2;
         Assert.AreEqual(2, ai[i]);
         ai[i] = - 3;
         Assert.AreEqual(- 3, ai[i]);
     }
 }
 public void Exchange()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
     {
         ai[i] = 1;
         Assert.AreEqual(1, ai.Exchange(i, 0));
         Assert.AreEqual(0, ai.Exchange(i, -10));
         Assert.AreEqual(-10, ai.Exchange(i, 1));
     }
 }
 public void CountingInMultipleThreads()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
         ai[i] = COUNTDOWN;
     Counter c1 = new Counter(ai);
     Counter c2 = new Counter(ai);
     Thread t1 = new Thread(c1.Run);
     Thread t2 = new Thread(c2.Run);
     t1.Start();
     t2.Start();
     t1.Join();
     t2.Join();
     Assert.AreEqual(c1.counts + c2.counts, DEFAULT_COLLECTION_SIZE*COUNTDOWN);
 }
 public void ConstructFromExistingArray()
 {
     long[] a = new long[] {17L, 3L, - 42L, 99L, - 7L};
     AtomicLongArray ai = new AtomicLongArray(a);
     Assert.AreEqual(a.Length, ai.Count);
     for (int i = 0; i < a.Length; ++i)
         Assert.AreEqual(a[i], ai[i]);
 }
 public void ConstructAtomicIntegerArryWithGivenSize()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
         Assert.AreEqual(0, ai[i]);
 }
 public void CompareExistingValueAndSetNewValue()
 {
     AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);
     for (int i = 0; i < DEFAULT_COLLECTION_SIZE; ++i)
     {
         ai[i] = 1;
         Assert.IsTrue(ai.CompareAndSet(i, 1, 2));
         Assert.IsTrue(ai.CompareAndSet(i, 2, - 4));
         Assert.AreEqual(- 4, ai[i]);
         Assert.IsFalse(ai.CompareAndSet(i, - 5, 7));
         Assert.IsFalse((7 == ai[i]));
         Assert.IsTrue(ai.CompareAndSet(i, - 4, 7));
         Assert.AreEqual(7, ai[i]);
     }
 }
        public void IndexerChokesOnOutOfRangeIndex()
        {
            AtomicLongArray ai = new AtomicLongArray(DEFAULT_COLLECTION_SIZE);

            long a = 0;
            TestHelper.AssertException<IndexOutOfRangeException>(
                delegate { a = ai[DEFAULT_COLLECTION_SIZE]; });
            TestHelper.AssertException<IndexOutOfRangeException>(
                delegate { a = ai[-1]; });
            TestHelper.AssertException<IndexOutOfRangeException>(
                delegate { ai.Exchange(DEFAULT_COLLECTION_SIZE, 0); });
            TestHelper.AssertException<IndexOutOfRangeException>(
                delegate { ai.Exchange(-1, 0); });
            Assert.AreEqual(0, a);
        }