mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-02-14 05:25:41 +00:00
89 lines
2.7 KiB
C#
89 lines
2.7 KiB
C#
using System.IO;
|
|
using SharpCompress.IO;
|
|
using Xunit;
|
|
|
|
namespace SharpCompress.Test.Streams;
|
|
|
|
public class RewindableStreamTest
|
|
{
|
|
[Fact]
|
|
public void TestRewind()
|
|
{
|
|
var ms = new MemoryStream();
|
|
var 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;
|
|
var stream = new SharpCompressStream(ms, bufferSize: 0x10000);
|
|
//stream.StartRecording();
|
|
var br = new BinaryReader(stream);
|
|
Assert.Equal(1, br.ReadInt32());
|
|
Assert.Equal(2, br.ReadInt32());
|
|
Assert.Equal(3, br.ReadInt32());
|
|
Assert.Equal(4, br.ReadInt32());
|
|
//stream.Rewind(true);
|
|
((IStreamStack)stream).StackSeek(0);
|
|
//stream.StartRecording();
|
|
long pos = stream.Position;
|
|
Assert.Equal(1, br.ReadInt32());
|
|
Assert.Equal(2, br.ReadInt32());
|
|
Assert.Equal(3, br.ReadInt32());
|
|
Assert.Equal(4, br.ReadInt32());
|
|
Assert.Equal(5, br.ReadInt32());
|
|
Assert.Equal(6, br.ReadInt32());
|
|
Assert.Equal(7, br.ReadInt32());
|
|
//stream.Rewind(true);
|
|
//stream.StartRecording();
|
|
((IStreamStack)stream).StackSeek(pos);
|
|
Assert.Equal(1, br.ReadInt32());
|
|
Assert.Equal(2, br.ReadInt32());
|
|
Assert.Equal(3, br.ReadInt32());
|
|
Assert.Equal(4, br.ReadInt32());
|
|
}
|
|
|
|
[Fact]
|
|
public void TestIncompleteRewind()
|
|
{
|
|
var ms = new MemoryStream();
|
|
var 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;
|
|
var stream = new SharpCompressStream(ms, bufferSize: 0x10000);
|
|
//stream.StartRecording();
|
|
var br = new BinaryReader(stream);
|
|
Assert.Equal(1, br.ReadInt32());
|
|
Assert.Equal(2, br.ReadInt32());
|
|
Assert.Equal(3, br.ReadInt32());
|
|
Assert.Equal(4, br.ReadInt32());
|
|
((IStreamStack)stream).StackSeek(0);
|
|
//stream.Rewind(true);
|
|
Assert.Equal(1, br.ReadInt32());
|
|
Assert.Equal(2, br.ReadInt32());
|
|
long pos = stream.Position;
|
|
//stream.StartRecording();
|
|
Assert.Equal(3, br.ReadInt32());
|
|
Assert.Equal(4, br.ReadInt32());
|
|
Assert.Equal(5, br.ReadInt32());
|
|
((IStreamStack)stream).StackSeek(pos);
|
|
//stream.Rewind(true);
|
|
Assert.Equal(3, br.ReadInt32());
|
|
Assert.Equal(4, br.ReadInt32());
|
|
Assert.Equal(5, br.ReadInt32());
|
|
Assert.Equal(6, br.ReadInt32());
|
|
Assert.Equal(7, br.ReadInt32());
|
|
}
|
|
}
|