mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-23 10:08:04 +01:00
60 lines
1.3 KiB
ObjectPascal
60 lines
1.3 KiB
ObjectPascal
program tczstreamseek;
|
|
{$MODE OBJFPC}
|
|
{$ASSERTIONS ON}
|
|
|
|
uses
|
|
classes,
|
|
zstream;
|
|
|
|
const
|
|
val: Uint32 = $123456;
|
|
wasError: boolean = False;
|
|
var
|
|
data: TMemoryStream;
|
|
comprStream: TCompressionStream;
|
|
decomprStream: TDecompressionStream;
|
|
begin
|
|
data := TMemoryStream.Create();
|
|
|
|
comprStream := TCompressionStream.Create(clMax, data);
|
|
comprStream.WriteDWord(val);
|
|
comprStream.Free;
|
|
|
|
data.Seek(0, soFromBeginning);
|
|
|
|
decomprStream := TDecompressionStream.Create(data);
|
|
Assert(decomprStream.ReadDWord() = val);
|
|
Assert(decomprStream.Position = SizeOf(val));
|
|
|
|
decomprStream.Seek(0, soFromBeginning);
|
|
Assert(decomprStream.Position = 0);
|
|
Assert(decomprStream.ReadDWord() = val);
|
|
|
|
decomprStream.Seek(-SizeOf(val), soFromCurrent);
|
|
Assert(decomprStream.Position = 0);
|
|
Assert(decomprStream.ReadDWord() = val);
|
|
|
|
wasError := False;
|
|
decomprStream.Seek(0, soFromBeginning);
|
|
try
|
|
decomprStream.Seek(-SizeOf(val), soFromCurrent);
|
|
except
|
|
on EDecompressionError do
|
|
wasError := True;
|
|
end;
|
|
assert(wasError);
|
|
|
|
decomprStream.Seek(SizeOf(val), soFromBeginning);
|
|
Assert(decomprStream.Position = SizeOf(val));
|
|
|
|
wasError := False;
|
|
try
|
|
decomprStream.Seek(40, soFromBeginning);
|
|
except
|
|
on EDecompressionError do
|
|
wasError := True;
|
|
end;
|
|
assert(wasError);
|
|
writeln('All OK');
|
|
end.
|