public void TestGetWaitQueueLengthTSE() { Mutex sync = new Mutex(); AbstractQueuedSynchronizer.ConditionObject c = (sync.NewCondition()); try { sync.GetWaitQueueLength(c); ShouldThrow(); } catch (ThreadStateException) { } catch (Exception e) { UnexpectedException(e); } }
public void TestGetWaitQueueLength() { Mutex sync = new Mutex(); AbstractQueuedSynchronizer.ConditionObject c = sync.NewCondition(); Pair data = new Pair(sync, c); Thread t1 = new Thread(TestGetWaitQueueLengthRunnable1); Thread t2 = new Thread(TestGetWaitQueueLengthRunnable2); try { t1.Start(data); Thread.Sleep(SHORT_DELAY_MS); t2.Start(data); Thread.Sleep(SHORT_DELAY_MS); sync.Acquire(1); Assert.IsTrue(sync.HasWaiters(c)); Assert.AreEqual(2, sync.GetWaitQueueLength(c)); c.SignalAll(); sync.Release(1); Thread.Sleep(SHORT_DELAY_MS); sync.Acquire(1); Assert.IsFalse(sync.HasWaiters(c)); Assert.AreEqual(0, sync.GetWaitQueueLength(c)); sync.Release(1); t1.Join(SHORT_DELAY_MS); t2.Join(SHORT_DELAY_MS); Assert.IsFalse(t1.IsAlive); Assert.IsFalse(t2.IsAlive); } catch (Exception e) { UnexpectedException(e); } }
public void TestGetWaitQueueLengthNRE() { Mutex sync = new Mutex(); try { sync.GetWaitQueueLength(null); ShouldThrow(); } catch (NullReferenceException) { } catch (Exception e) { UnexpectedException(e); } }