public void TestShiftCurrentReceivingBuffer_EqualToRemains_CurrentReceivingBufferOffsetIsInitializedAndBufferIsSwappedAndReceivedDataIsAppended()
        {
            int bytesTransferred = 13;
            var target           = new ClientResponseContext();
            var oldBuffer        = target.CurrentReceivingBuffer;

            target.SetBytesTransferred(bytesTransferred);
            target.ShiftCurrentReceivingBuffer();

            target.SetBytesTransferred(oldBuffer.Length - bytesTransferred);
            target.ShiftCurrentReceivingBuffer();
            Assert.That(target.CurrentReceivingBuffer, Is.Not.SameAs(oldBuffer));
            Assert.That(target.CurrentReceivingBufferOffset, Is.EqualTo(0));
            Assert.That(target.ReceivedData.Count, Is.EqualTo(2));
            Assert.That(target.ReceivedData[1].Array, Is.EqualTo(oldBuffer));
            Assert.That(target.ReceivedData[1].Offset, Is.EqualTo(bytesTransferred));
            Assert.That(target.ReceivedData[1].Count, Is.EqualTo(oldBuffer.Length - bytesTransferred));
        }
        public void TestShiftCurrentReceivingBuffer_LessThanRemains_CurrentReceivingBufferOffsetIsShifttedAndReceivedDataIsAppended()
        {
            int bytesTransferred = 13;
            var target           = new ClientResponseContext();

            target.SetBytesTransferred(bytesTransferred);
            target.ShiftCurrentReceivingBuffer();
            Assert.That(target.CurrentReceivingBufferOffset, Is.EqualTo(bytesTransferred));
            Assert.That(target.ReceivedData.Count, Is.EqualTo(1));
            Assert.That(target.ReceivedData[0].Array, Is.EqualTo(target.CurrentReceivingBuffer));
            Assert.That(target.ReceivedData[0].Offset, Is.EqualTo(0));
            Assert.That(target.ReceivedData[0].Count, Is.EqualTo(bytesTransferred));
        }
 private static void MakeBufferDirty(ClientResponseContext target)
 {
     target.SetTransport(new DummyClientTransport());
     target.SetReceivingBuffer(new byte[] { 1, 2, 3, 4 });
     target.SetBytesTransferred(1);
     target.ShiftCurrentReceivingBuffer();
     target.ErrorBuffer    = new ByteArraySegmentStream(CreateDirtyBytes());
     target.ErrorStartAt   = 1;
     target.HeaderUnpacker = Unpacker.Create(new MemoryStream());
     target.MessageId      = 1;
     target.NextProcess    = _ => true;
     target.ReceivedData.Add(new ArraySegment <byte>(new byte[] { 1, 2, 3, 4 }));
     target.ResultBuffer  = new ByteArraySegmentStream(CreateDirtyBytes());
     target.ResultStartAt = 2;
     target.RenewSessionId();
     target.UnpackingBuffer = new ByteArraySegmentStream(CreateDirtyBytes());
 }