public void TestImmediatePriorityResource() { var env = new Environment(); var res = new MyPriorityResource(env, capacity: 1); Assert.AreEqual(0, res.InUse); Assert.AreEqual(1, res.Remaining); Assert.AreEqual(0, res.RequestQueueLength); Assert.AreEqual(0, res.ReleaseQueueLength); var req1 = res.Request(1); Assert.IsTrue(req1.IsTriggered); Assert.AreEqual(1, res.InUse); Assert.AreEqual(0, res.Remaining); Assert.AreEqual(0, res.RequestQueueLength); Assert.AreEqual(0, res.ReleaseQueueLength); var req2 = res.Request(1); Assert.IsFalse(req2.IsTriggered); Assert.AreEqual(1, res.InUse); Assert.AreEqual(0, res.Remaining); Assert.AreEqual(1, res.RequestQueueLength); Assert.AreEqual(0, res.ReleaseQueueLength); req1.Dispose(); Assert.IsFalse(req2.IsTriggered); Assert.AreEqual(0, res.InUse); Assert.AreEqual(1, res.Remaining); Assert.AreEqual(1, res.RequestQueueLength); Assert.AreEqual(0, res.ReleaseQueueLength); var req3 = res.Request(1); Assert.IsTrue(req2.IsTriggered); Assert.IsFalse(req3.IsTriggered); Assert.AreEqual(1, res.InUse); Assert.AreEqual(0, res.Remaining); Assert.AreEqual(1, res.RequestQueueLength); Assert.AreEqual(0, res.ReleaseQueueLength); }