public void CanHandleChunkBeginningWithMarker()
        {
            using (var stream = new MemoryStream(new byte[] { 32, 32, 32, 32, 13, 10, 32, 32, 32, 32 }))
                using (var reader = new XRoadMessageReader(stream, messageFormatter, "text/xml; charset=UTF-8", Path.GetTempPath(), Enumerable.Empty <IServiceManager>()))
                {
                    stream.Position = 0;

                    byte[] chunk;

                    Assert.Equal(ChunkStop.BufferLimit, reader.ReadChunkOrLine(out chunk, 4));
                    Assert.Collection(chunk, x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x));

                    Assert.Equal(ChunkStop.NewLine, reader.ReadChunkOrLine(out chunk, 4));
                    Assert.Empty(chunk);

                    Assert.Equal(ChunkStop.BufferLimit, reader.ReadChunkOrLine(out chunk, 4));
                    Assert.Collection(chunk, x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x));

                    Assert.Equal(ChunkStop.EndOfStream, reader.ReadChunkOrLine(out chunk, 4));
                    Assert.Empty(chunk);
                }
        }
Пример #2
0
        public void CanHandleBufferLimit()
        {
            using (var stream = new MemoryStream(Enumerable.Repeat((byte)32, 10).ToArray()))
                using (var reader = new XRoadMessageReader(stream, "text/xml; charset=UTF-8", Path.GetTempPath(), Enumerable.Empty <IXRoadProtocol>()))
                {
                    stream.Position = 0;

                    byte[] chunk;

                    Assert.Equal(ChunkStop.BufferLimit, reader.ReadChunkOrLine(out chunk, 3));
                    Assert.Collection(chunk, x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x));

                    Assert.Equal(ChunkStop.BufferLimit, reader.ReadChunkOrLine(out chunk, 3));
                    Assert.Collection(chunk, x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x));

                    Assert.Equal(ChunkStop.BufferLimit, reader.ReadChunkOrLine(out chunk, 3));
                    Assert.Collection(chunk, x => Assert.Equal(32, x), x => Assert.Equal(32, x), x => Assert.Equal(32, x));

                    Assert.Equal(ChunkStop.EndOfStream, reader.ReadChunkOrLine(out chunk, 3));
                    Assert.Collection(chunk, x => Assert.Equal(32, x));
                }
        }
Пример #3
0
        public void CanHandleMultipleMarkersInARow()
        {
            using (var stream = new MemoryStream(new byte[] { 40, 13, 10, 13, 10, 13, 10, 13, 10, 40 }))
                using (var reader = new XRoadMessageReader(stream, "text/xml; charset=UTF-8", Path.GetTempPath(), Enumerable.Empty <IServiceManager>()))
                {
                    stream.Position = 0;

                    Assert.Equal(ChunkStop.NewLine, reader.ReadChunkOrLine(out var chunk, 5));
                    Assert.Collection(chunk, x => Assert.Equal(40, x));

                    Assert.Equal(ChunkStop.NewLine, reader.ReadChunkOrLine(out chunk, 5));
                    Assert.Empty(chunk);

                    Assert.Equal(ChunkStop.NewLine, reader.ReadChunkOrLine(out chunk, 5));
                    Assert.Empty(chunk);

                    Assert.Equal(ChunkStop.NewLine, reader.ReadChunkOrLine(out chunk, 5));
                    Assert.Empty(chunk);

                    Assert.Equal(ChunkStop.EndOfStream, reader.ReadChunkOrLine(out chunk, 5));
                    Assert.Collection(chunk, x => Assert.Equal(40, x));
                }
        }