예제 #1
0
        public async Task ShouldUseBuffer()
        {
            var bu = new TestBuffer();

            _publisher.SetBuffer(bu);
            _publisher.Start();

            SetupNormalQueue();

            const int msgCount = 10;

            for (int i = 0; i < msgCount; i++)
            {
                var expected = i.ToString();
                await _publisher.ProduceAsync(expected);

                var result = ReadFromQueue();
                Assert.That(result, Is.EqualTo(string.Empty));
            }

            Assert.That(bu.Count, Is.EqualTo(msgCount));
            bu.Gate.Set();
            while (bu.Count > 0)
            {
                Thread.Sleep(1);
            }

            for (int i = 0; i < msgCount; i++)
            {
                var expected = i.ToString();
                var result   = ReadFromQueue();
                Assert.That(result, Is.EqualTo(expected));
            }
        }