Actress.Tests.MailboxProcessorTests.PostReceive C# (CSharp) Method

PostReceive() private method

private PostReceive ( int n ) : void
n int
return void
        public void PostReceive(int n)
        {
            // Given
            var received = 0L;

            var mb = MailboxProcessor.Start<IOption<int>>(async inbox =>
            {
                for (var i = 0; i < n; i++)
                {
                    var _ = await inbox.Receive();
                    Interlocked.Increment(ref received);
                }
            });

            // When
            for (var i = 0; i < n; i++)
            {
                mb.Post(Option.Some(i));
            }

            // Then
            while (received < n)
            {
                var numReceived = Interlocked.Read(ref received);
                if (numReceived % 100 == 0)
                {
                    Trace.WriteLine(string.Format("received = {0}", numReceived));
                }
                Thread.Sleep(1);
            }

            Assert.Equal(n, received);
        }