public void TestImmediatePreemptiveResource() { var env = new Environment(); var res = new MyPreemptiveResource(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, true); 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, true); 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, true); 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); }