mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:09:20 +02:00
* No longer needed, all tests are in tczipper
git-svn-id: trunk@28199 -
This commit is contained in:
parent
c281c4d036
commit
74955c4e20
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -6216,7 +6216,6 @@ packages/paszlib/src/zipper.pp svneol=native#text/plain
|
|||||||
packages/paszlib/src/ziputils.pas svneol=native#text/plain
|
packages/paszlib/src/ziputils.pas svneol=native#text/plain
|
||||||
packages/paszlib/src/zstream.pp svneol=native#text/plain
|
packages/paszlib/src/zstream.pp svneol=native#text/plain
|
||||||
packages/paszlib/src/zuncompr.pas svneol=native#text/plain
|
packages/paszlib/src/zuncompr.pas svneol=native#text/plain
|
||||||
packages/paszlib/tests/tconend.pp svneol=native#text/plain
|
|
||||||
packages/paszlib/tests/tczipper.pp svneol=native#text/plain
|
packages/paszlib/tests/tczipper.pp svneol=native#text/plain
|
||||||
packages/pcap/Makefile svneol=native#text/plain
|
packages/pcap/Makefile svneol=native#text/plain
|
||||||
packages/pcap/Makefile.fpc svneol=native#text/plain
|
packages/pcap/Makefile.fpc svneol=native#text/plain
|
||||||
|
@ -1,152 +0,0 @@
|
|||||||
{
|
|
||||||
This file is part of the Free Pascal packages.
|
|
||||||
Copyright (c) 1999-2012 by the Free Pascal development team
|
|
||||||
|
|
||||||
Tests zip/unzip functionality provided by the FPC zipper.pp unit.
|
|
||||||
Created by Reinier Olislagers
|
|
||||||
|
|
||||||
See the file COPYING.FPC, included in this distribution,
|
|
||||||
for details about the copyright.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
**********************************************************************}
|
|
||||||
program tconend;
|
|
||||||
|
|
||||||
{$mode objfpc}{$h+}
|
|
||||||
|
|
||||||
uses SysUtils, classes, zipper, md5;
|
|
||||||
|
|
||||||
type
|
|
||||||
TCallBackHandler = class(TObject)
|
|
||||||
public
|
|
||||||
procedure EndOfFile(Sender:TObject; const Ratio:double);
|
|
||||||
procedure StartOfFile(Sender:TObject; const AFileName:string);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TCallBackHandler.EndOfFile(Sender : TObject; Const Ratio : Double);
|
|
||||||
begin
|
|
||||||
writeln('End of file handler hit; ratio: '+floattostr(ratio));
|
|
||||||
if (Ratio<0) then
|
|
||||||
begin
|
|
||||||
writeln('Found compression ratio '+floattostr(Ratio)+', which should never be lower than 0.');
|
|
||||||
halt(3);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCallBackHandler.StartOfFile(Sender : TObject; Const AFileName : String);
|
|
||||||
begin
|
|
||||||
writeln('Start of file handler hit; filename: '+AFileName);
|
|
||||||
if AFileName='' then
|
|
||||||
begin
|
|
||||||
writeln('Archive filename should not be empty.');
|
|
||||||
halt(4);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
code: cardinal;
|
|
||||||
CallBackHandler: TCallBackHandler;
|
|
||||||
CompressedFile: string;
|
|
||||||
FileContents: TStringList;
|
|
||||||
UncompressedFile1: string;
|
|
||||||
UncompressedFile1Hash: string;
|
|
||||||
UncompressedFile2: string;
|
|
||||||
UncompressedFile2Hash: string;
|
|
||||||
OurZipper: TZipper;
|
|
||||||
UnZipper: TUnZipper;
|
|
||||||
begin
|
|
||||||
code := 0;
|
|
||||||
UncompressedFile1:=SysUtils.GetTempFileName('', 'UNC');
|
|
||||||
UncompressedFile2:=SysUtils.GetTempFileName('', 'UNC');
|
|
||||||
CompressedFile:=SysUtils.GetTempFileName('', 'ZP');
|
|
||||||
|
|
||||||
FileContents:=TStringList.Create;
|
|
||||||
OurZipper:=TZipper.Create;
|
|
||||||
UnZipper:=TUnZipper.Create;
|
|
||||||
CallBackHandler:=TCallBackHandler.Create;
|
|
||||||
try
|
|
||||||
// Set up uncompressed files
|
|
||||||
FileContents.Add('This is an uncompressed file.');
|
|
||||||
FileContents.Add('And another line.');
|
|
||||||
FileContents.SaveToFile(UncompressedFile1);
|
|
||||||
FileContents.Clear;
|
|
||||||
FileContents.Add('Have you looked into using fpcup today?');
|
|
||||||
FileContents.Add('It works nicely with fpc and goes well with a fruity red wine, too.');
|
|
||||||
FileContents.SaveToFile(UncompressedFile2);
|
|
||||||
// Remember their content, so we can compare later.
|
|
||||||
UncompressedFile1Hash:=MD5Print(MD5File(UncompressedFile1, MDDefBufSize));
|
|
||||||
UncompressedFile2Hash:=MD5Print(MD5File(UncompressedFile2, MDDefBufSize));
|
|
||||||
|
|
||||||
// Test zip functionality.
|
|
||||||
writeln('Beginning zip test');
|
|
||||||
OurZipper.FileName:=CompressedFile;
|
|
||||||
// Add the files only with their filenames, we don't want to create
|
|
||||||
// subdirectories:
|
|
||||||
OurZipper.Entries.AddFileEntry(UncompressedFile1,ExtractFileName(UncompressedFile1));
|
|
||||||
OurZipper.Entries.AddFileEntry(UncompressedFile2,ExtractFileName(UncompressedFile2));
|
|
||||||
OurZipper.OnStartFile:=@CallBackHandler.StartOfFile;
|
|
||||||
OurZipper.OnEndFile:=@CallBackHandler.EndOfFile;
|
|
||||||
OurZipper.ZipAllFiles;
|
|
||||||
if not FileExists(CompressedFile) then
|
|
||||||
begin
|
|
||||||
writeln('Zip file was not created.');
|
|
||||||
halt(5);
|
|
||||||
end;
|
|
||||||
writeln('Zip test done');
|
|
||||||
|
|
||||||
// Delete original files
|
|
||||||
DeleteFile(UncompressedFile1);
|
|
||||||
DeleteFile(UncompressedFile2);
|
|
||||||
|
|
||||||
// Now unzip
|
|
||||||
writeln('Beginning unzip test');
|
|
||||||
Unzipper.FileName:=CompressedFile;
|
|
||||||
Unzipper.OutputPath:=ExtractFilePath(UncompressedFile1);
|
|
||||||
UnZipper.OnStartFile:=@CallBackHandler.StartOfFile;
|
|
||||||
UnZipper.OnEndFile:=@CallBackHandler.EndOfFile;
|
|
||||||
Unzipper.Examine;
|
|
||||||
Unzipper.UnZipAllFiles;
|
|
||||||
|
|
||||||
// Now we should have the uncompressed files again
|
|
||||||
if (not FileExists(UncompressedFile1)) or
|
|
||||||
(not FileExists(UncompressedFile2)) then
|
|
||||||
begin
|
|
||||||
writeln('Unzip failed: could not find decompressed files.');
|
|
||||||
halt(6);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// Compare hashes
|
|
||||||
if
|
|
||||||
(UncompressedFile1Hash<>MD5Print(MD5File(UncompressedFile1, MDDefBufSize)))
|
|
||||||
or
|
|
||||||
(UncompressedFile2Hash<>MD5Print(MD5File(UncompressedFile2, MDDefBufSize)))
|
|
||||||
then
|
|
||||||
begin
|
|
||||||
writeln('Unzip failed: uncompressed files are not the same as the originals.');
|
|
||||||
halt(7);
|
|
||||||
end;
|
|
||||||
writeln('Unzip test done');
|
|
||||||
|
|
||||||
if code = 0 then
|
|
||||||
writeln('Basic zip/unzip tests passed')
|
|
||||||
else
|
|
||||||
writeln('Basic zip/unzip test failed: ', code);
|
|
||||||
finally
|
|
||||||
FileContents.Free;
|
|
||||||
CallBackHandler.Free;
|
|
||||||
OurZipper.Free;
|
|
||||||
UnZipper.Free;
|
|
||||||
try
|
|
||||||
if FileExists(CompressedFile) then DeleteFile(CompressedFile);
|
|
||||||
if FileExists(UncompressedFile1) then DeleteFile(UncompressedFile1);
|
|
||||||
if FileExists(UncompressedFile2) then DeleteFile(UncompressedFile2);
|
|
||||||
finally
|
|
||||||
// Ignore errors; operating system should clean out temp files
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Halt(code);
|
|
||||||
end.
|
|
Loading…
Reference in New Issue
Block a user