public void NonBlockingAcquireTest()
        {
            CounterSemaphoreFIFO sem = new CounterSemaphoreFIFO(10);
            bool result = sem.Acquire(5, 1000);

            Assert.AreEqual(true, result);
        }
        public void ImmediateFailureAcquireTest()
        {
            CounterSemaphoreFIFO sem = new CounterSemaphoreFIFO(1);
            bool result = sem.Acquire(5, 0);

            Assert.AreEqual(false, result);
        }
        public void FailureByTimeoutAcquireTest()
        {
            CounterSemaphoreFIFO sem = new CounterSemaphoreFIFO(1);
            bool result = false;

            Thread t = new Thread(() => {
                try {
                    bool res = sem.Acquire(5, 1000);
                    result   = !res;
                }
                catch (ThreadInterruptedException) {
                }
            });

            t.Start();

            // wait for thread termination with timeout
            // in order to made the test robust
            t.Join(5000);

            Assert.AreEqual(true, result);
        }