Files
sharpcompress/test/SharpCompress.Test/RewindableStreamTest.cs

84 lines
2.7 KiB
C#
Raw Permalink Normal View History

2015-12-30 11:19:42 +00:00
using System.IO;
using SharpCompress.IO;
using Xunit;
namespace SharpCompress.Test
{
public class RewindableStreamTest
{
[Fact]
public void TestRewind()
{
MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);
bw.Write(1);
bw.Write(2);
bw.Write(3);
bw.Write(4);
bw.Write(5);
bw.Write(6);
bw.Write(7);
bw.Flush();
ms.Position = 0;
RewindableStream stream = new RewindableStream(ms);
stream.StartRecording();
BinaryReader br = new BinaryReader(stream);
Assert.Equal(br.ReadInt32(), 1);
Assert.Equal(br.ReadInt32(), 2);
Assert.Equal(br.ReadInt32(), 3);
Assert.Equal(br.ReadInt32(), 4);
stream.Rewind(true);
stream.StartRecording();
Assert.Equal(br.ReadInt32(), 1);
Assert.Equal(br.ReadInt32(), 2);
Assert.Equal(br.ReadInt32(), 3);
Assert.Equal(br.ReadInt32(), 4);
Assert.Equal(br.ReadInt32(), 5);
Assert.Equal(br.ReadInt32(), 6);
Assert.Equal(br.ReadInt32(), 7);
stream.Rewind(true);
stream.StartRecording();
Assert.Equal(br.ReadInt32(), 1);
Assert.Equal(br.ReadInt32(), 2);
Assert.Equal(br.ReadInt32(), 3);
Assert.Equal(br.ReadInt32(), 4);
}
[Fact]
public void TestIncompleteRewind()
{
MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);
bw.Write(1);
bw.Write(2);
bw.Write(3);
bw.Write(4);
bw.Write(5);
bw.Write(6);
bw.Write(7);
bw.Flush();
ms.Position = 0;
RewindableStream stream = new RewindableStream(ms);
stream.StartRecording();
BinaryReader br = new BinaryReader(stream);
Assert.Equal(br.ReadInt32(), 1);
Assert.Equal(br.ReadInt32(), 2);
Assert.Equal(br.ReadInt32(), 3);
Assert.Equal(br.ReadInt32(), 4);
stream.Rewind(true);
Assert.Equal(br.ReadInt32(), 1);
Assert.Equal(br.ReadInt32(), 2);
stream.StartRecording();
Assert.Equal(br.ReadInt32(), 3);
Assert.Equal(br.ReadInt32(), 4);
Assert.Equal(br.ReadInt32(), 5);
stream.Rewind(true);
Assert.Equal(br.ReadInt32(), 3);
Assert.Equal(br.ReadInt32(), 4);
Assert.Equal(br.ReadInt32(), 5);
Assert.Equal(br.ReadInt32(), 6);
Assert.Equal(br.ReadInt32(), 7);
}
}
}