Exemplo n.º 1
0
        public virtual void ShouldAssembleTwoPartMessage()
        {
            A.CallTo(() => header.Flags).ReturnsNextFromSequence(FrameDescriptor.BEGIN_FRAG_FLAG, FrameDescriptor.END_FRAG_FLAG, FrameDescriptor.END_FRAG_FLAG);
            // Need to add this twice because FakeItEasy doesn't fall back to the implementation

            var srcBuffer = new UnsafeBuffer(new byte[1024]);
            const int offset = 0;
            var length = srcBuffer.Capacity/2;

            srcBuffer.SetMemory(0, length, 65);
            srcBuffer.SetMemory(length, length, 66);

            adapter.OnFragment(srcBuffer, offset, length, header);
            adapter.OnFragment(srcBuffer, length, length, header);

            Func<UnsafeBuffer, bool> bufferAssertion = capturedBuffer =>
            {
                for (var i = 0; i < srcBuffer.Capacity; i++)
                {
                    if (capturedBuffer.GetByte(i) != srcBuffer.GetByte(i))
                    {
                        return false;
                    }
                }
                return true;
            };

            Func<Header, bool> headerAssertion = capturedHeader => capturedHeader.SessionId == SESSION_ID &&
                                                                   capturedHeader.Flags == FrameDescriptor.END_FRAG_FLAG;
            A.CallTo(() => delegateFragmentHandler(
                A<UnsafeBuffer>.That.Matches(bufferAssertion, "buffer"),
                offset,
                length*2,
                A<Header>.That.Matches(headerAssertion, "header")))
                .MustHaveHappened(Repeated.Exactly.Once);
        }
Exemplo n.º 2
0
        public virtual void ShouldAssembleFourPartMessage()
        {
            A.CallTo(() => header.Flags).ReturnsNextFromSequence<byte>(FrameDescriptor.BEGIN_FRAG_FLAG, 0, 0, FrameDescriptor.END_FRAG_FLAG, FrameDescriptor.END_FRAG_FLAG);

            var srcBuffer = new UnsafeBuffer(new byte[1024]);
            const int offset = 0;
            var length = srcBuffer.Capacity/4;

            for (var i = 0; i < 4; i++)
            {
                srcBuffer.SetMemory(i*length, length, (byte) (65 + i));
            }

            adapter.OnFragment(srcBuffer, offset, length, header);
            adapter.OnFragment(srcBuffer, offset + length, length, header);
            adapter.OnFragment(srcBuffer, offset + (length*2), length, header);
            adapter.OnFragment(srcBuffer, offset + (length*3), length, header);


            Func<UnsafeBuffer, bool> bufferAssertion = capturedBuffer =>
            {
                for (var i = 0; i < srcBuffer.Capacity; i++)
                {
                    if (capturedBuffer.GetByte(i) != srcBuffer.GetByte(i))
                    {
                        return false;
                    }
                }
                return true;
            };

            Func<Header, bool> headerAssertion = capturedHeader => capturedHeader.SessionId == SESSION_ID &&
                                                                   capturedHeader.Flags == FrameDescriptor.END_FRAG_FLAG;

            A.CallTo(() => delegateFragmentHandler(
                A<UnsafeBuffer>.That.Matches(bufferAssertion, "buffer"),
                offset,
                length*4,
                A<Header>.That.Matches(headerAssertion, "header")))
                .MustHaveHappened(Repeated.Exactly.Once);
        }