Exemple #1
0
        public void construct_with_signals_not_set()
        {
            var awaiter = new QueueAwaiter();

            Assert.False(awaiter.IsDequeueSignalSet);
            Assert.False(awaiter.IsEnqueueSignalSet);
        }
Exemple #2
0
        public void set_dequeue_signal()
        {
            var awaiter = new QueueAwaiter();

            awaiter.SetEnqueueSignal();

            Assert.True(awaiter.IsEnqueueSignalSet);
        }
Exemple #3
0
        public async Task await_enqueue_signal_until_set_then_reset_signal()
        {
            var cts     = new CancellationTokenSource(5000);
            var awaiter = new QueueAwaiter();

            var waitTask = awaiter.AwaitEnqueueSignalAsync();

            Assert.False(awaiter.IsEnqueueSignalSet);

            awaiter.SetEnqueueSignal();

            await Task.WhenAny(new[] { waitTask, cts.Token.WaitHandle.AsTask() });

            if (cts.IsCancellationRequested)
            {
                throw new TimeoutException();
            }

            // Signal should auto reset.
            Assert.False(awaiter.IsEnqueueSignalSet);
        }