tczstreamseek.pp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. program tczstreamseek;
  2. {$MODE OBJFPC}
  3. {$ASSERTIONS ON}
  4. uses
  5. classes,
  6. zstream;
  7. const
  8. val: Uint32 = $123456;
  9. wasError: boolean = False;
  10. var
  11. data: TMemoryStream;
  12. comprStream: TCompressionStream;
  13. decomprStream: TDecompressionStream;
  14. begin
  15. data := TMemoryStream.Create();
  16. comprStream := TCompressionStream.Create(clMax, data);
  17. comprStream.WriteDWord(val);
  18. comprStream.Free;
  19. data.Seek(0, soFromBeginning);
  20. decomprStream := TDecompressionStream.Create(data);
  21. Assert(decomprStream.ReadDWord() = val);
  22. Assert(decomprStream.Position = SizeOf(val));
  23. decomprStream.Seek(0, soFromBeginning);
  24. Assert(decomprStream.Position = 0);
  25. Assert(decomprStream.ReadDWord() = val);
  26. decomprStream.Seek(-SizeOf(val), soFromCurrent);
  27. Assert(decomprStream.Position = 0);
  28. Assert(decomprStream.ReadDWord() = val);
  29. wasError := False;
  30. decomprStream.Seek(0, soFromBeginning);
  31. try
  32. decomprStream.Seek(-SizeOf(val), soFromCurrent);
  33. except
  34. on EDecompressionError do
  35. wasError := True;
  36. end;
  37. assert(wasError);
  38. decomprStream.Seek(SizeOf(val), soFromBeginning);
  39. Assert(decomprStream.Position = SizeOf(val));
  40. wasError := False;
  41. try
  42. decomprStream.Seek(40, soFromBeginning);
  43. except
  44. on EDecompressionError do
  45. wasError := True;
  46. end;
  47. assert(wasError);
  48. writeln('All OK');
  49. end.