public void should_prepare_buffer_length(int messageLength, int expectedLastBufferIndex, int expectedLastBufferLength)
        {
            // Arrange
            var bufferProvider = new SendingBufferProvider(_configuration, _bufferManager);
            var bufferSegments = new List <BufferSegment>();

            for (var i = 0; i < 10; i++)
            {
                bufferSegments.Add(bufferProvider.GetBufferSegment());
            }

            bufferProvider.SetMessageLength(messageLength);

            // Assert
            var rioBuffers = GetProvidedRioBuffers(bufferProvider).ToList();

            var bufferIndex = 0;

            while (bufferIndex < expectedLastBufferIndex)
            {
                var rioBuffer = rioBuffers[bufferIndex];
                Assert.AreEqual(rioBuffer.Length, rioBuffer.DataLength);
                bufferIndex++;
            }

            Assert.AreEqual(expectedLastBufferLength, rioBuffers[expectedLastBufferIndex].DataLength);
        }
        public void should_keep_tracks_of_all_provided_buffers()
        {
            // Arrange
            var bufferProvider = new SendingBufferProvider(_configuration, _bufferManager);

            // Act
            var bufferSegments = new List <BufferSegment>();

            for (var i = 0; i < 10; i++)
            {
                bufferSegments.Add(bufferProvider.GetBufferSegment());
            }

            // Assert
            var rioBuffers = GetProvidedRioBuffers(bufferProvider).ToList();

            Assert.AreEqual(bufferSegments.Count, rioBuffers.Count);

            for (var i = 0; i < bufferSegments.Count; i++)
            {
                var bufferSegment = bufferSegments[i];
                var rioBuffer     = rioBuffers[i];

                Assert.AreEqual((long)bufferSegment.Data, (long)rioBuffer.Data);
                Assert.AreEqual((long)bufferSegment.EndOfBuffer, (long)(rioBuffer.Data + rioBuffer.DataLength));
            }
        }
 private static IEnumerable <RioBuffer> GetProvidedRioBuffers(SendingBufferProvider sendingBufferProvider)
 {
     foreach (var rioBuffer in sendingBufferProvider)
     {
         yield return(rioBuffer);
     }
 }
        public void should_reset()
        {
            // Arrange
            var bufferProvider = new SendingBufferProvider(_configuration, _bufferManager);

            // Act
            var bufferSegments = new List <BufferSegment>();

            for (var i = 0; i < 10; i++)
            {
                bufferSegments.Add(bufferProvider.GetBufferSegment());
            }

            // Assert
            bufferProvider.Reset();

            // Assert
            var rioBuffers = GetProvidedRioBuffers(bufferProvider);

            Assert.IsEmpty(rioBuffers);
        }