public async Task ReadUntilCancelledAsync_ReadCanceled_ReadingIsStopped()
        {
            // Arrange
            const int MaxCount       = 100000;
            const int CountToCancell = 100;

            var counter       = 0;
            var cts           = new CancellationTokenSource();
            var channel       = new TestChannel <string>(MaxCount);
            var threadChannel = new ThreadChannel <string>(channel);

            Func <string, ValueTask> testReceiver = _ =>
            {
                if (counter >= CountToCancell)
                {
                    cts.Cancel();
                }
                counter++;
                return(new ValueTask());
            };

            // Act
            await threadChannel.ReadUntilCancelledAsync(testReceiver, cts.Token);

            // Assert
            Assert.True(CountToCancell <= counter && counter <= MaxCount);
        }
        public void Ctor_ChannelTaskNotNull_ChannelIsCreated()
        {
            // Arrange
            var channel = new TestChannel <string>();

            // Act
            var threadChannel = new ThreadChannel <string>(channel);

            // Assert
            Assert.NotNull(threadChannel);
        }
 public ThreadChannelTests()
 {
     _channel       = new TestChannel <string>();
     _threadChannel = new ThreadChannel <string>(_channel);
 }