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); } }
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)); } }
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)); } }