Ejemplo n.º 1
0
        public void WaitAsync_DoesNotBlock()
        {
            var beginTime = DateTime.UtcNow;
            var threshold = TimeSpan.FromSeconds(10);
            var gate      = new ManualGate();
            var waitTask  = gate.WaitAsync(threshold);

            Assert.True(DateTime.UtcNow < beginTime + threshold);
        }
Ejemplo n.º 2
0
        public async Task WaitAsync_ReturnsFalse_AfterTimeoutElapsed()
        {
            var threshold = TimeSpan.FromMilliseconds(1);
            var gate      = new ManualGate();

            var wasOpened = await gate.WaitAsync(threshold);

            Assert.False(wasOpened);
        }
Ejemplo n.º 3
0
        public async Task WaitAsync_TimesOut_AfterTimeoutElapsed()
        {
            var beginTime = DateTime.UtcNow;
            var threshold = TimeSpan.FromSeconds(1);
            var gate      = new ManualGate();

            await gate.WaitAsync(threshold);

            Assert.True(DateTime.UtcNow >= beginTime + threshold);
        }
Ejemplo n.º 4
0
        public async Task Close_PreventsThreads()
        {
            var gate = new ManualGate();

            gate.Close();

            var waitResult = await gate.WaitAsync(TimeSpan.FromSeconds(1));

            Assert.False(waitResult);
        }
Ejemplo n.º 5
0
        public async Task WaitAsync_ReturnsTrue_WhenOpened_BeforeWaiting()
        {
            var threshold = TimeSpan.FromSeconds(1);
            var gate      = new ManualGate();

            gate.Open();

            var wasOpened = await gate.WaitAsync(threshold);

            Assert.True(wasOpened);
        }
Ejemplo n.º 6
0
        public async Task Open_AllowsMultipleThreads()
        {
            var gate = new ManualGate();

            gate.Open();

            var waitResult1 = await gate.WaitAsync(TimeSpan.Zero);

            var waitResult2 = await gate.WaitAsync(TimeSpan.Zero);

            Assert.True(waitResult1 && waitResult2);
        }
Ejemplo n.º 7
0
        public async Task WaitAsync_ReturnsFalse_AfterCancellationRequested()
        {
            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;
            var gate = new ManualGate();

            var waitTask = gate.WaitAsync(TimeSpan.MaxValue, cancellationToken);

            cancellationTokenSource.Cancel();

            var result = await waitTask;

            Assert.False(result);
        }