示例#1
0
        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);
        }
        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);
        }