Files

84 lines
3.6 KiB
C#
Raw Permalink Normal View History

2015-12-30 11:19:42 +00:00
using System.IO;
2021-02-13 16:44:53 +00:00
using System.Threading;
using System.Threading.Tasks;
2015-12-30 11:19:42 +00:00
using SharpCompress.IO;
using Xunit;
namespace SharpCompress.Test.Streams
2015-12-30 11:19:42 +00:00
{
public class RewindableStreamTest
{
[Fact]
2021-02-13 16:44:53 +00:00
public async Task TestRewind()
2015-12-30 11:19:42 +00:00
{
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();
2021-02-13 16:44:53 +00:00
Assert.Equal(1, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(2, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(3, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(4, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
stream.Rewind(true);
stream.StartRecording();
2021-02-13 16:44:53 +00:00
Assert.Equal(1, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(2, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(3, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(4, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(5, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(6, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(7, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
stream.Rewind(true);
stream.StartRecording();
2021-02-13 16:44:53 +00:00
Assert.Equal(1, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(2, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(3, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(4, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
}
[Fact]
2021-02-13 16:44:53 +00:00
public async Task TestIncompleteRewind()
2015-12-30 11:19:42 +00:00
{
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();
2021-02-13 16:44:53 +00:00
Assert.Equal(1, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(2, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(3, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(4, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
stream.Rewind(true);
2021-02-13 16:44:53 +00:00
Assert.Equal(1, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(2, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
stream.StartRecording();
2021-02-13 16:44:53 +00:00
Assert.Equal(3, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(4, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(5, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
stream.Rewind(true);
2021-02-13 16:44:53 +00:00
Assert.Equal(3, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(4, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(5, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(6, await stream.ReadInt32(CancellationToken.None));
Assert.Equal(7, await stream.ReadInt32(CancellationToken.None));
2015-12-30 11:19:42 +00:00
}
}
}