1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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.
|