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 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 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]); } }
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)); } }
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 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]); } }
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 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]); } }
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); }
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 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 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 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]); } }
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 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); }