mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 17:47:56 +02:00
263 lines
5.7 KiB
ObjectPascal
263 lines
5.7 KiB
ObjectPascal
{
|
|
This file is part of the Free Pascal Utilities
|
|
Copyright (c) 1999-2000 by the Free Pascal development team
|
|
|
|
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.
|
|
|
|
**********************************************************************}
|
|
{$mode objfpc}{$H+}
|
|
program rep2xml;
|
|
|
|
uses
|
|
Classes, fpxmlrep, pkgropts, fprepos, streamcoll, reptest;
|
|
|
|
|
|
Procedure TestVersionCompare;
|
|
|
|
Procedure CV(V1,V2 : TFPVersion);
|
|
|
|
begin
|
|
if V1.CompareVersion(V2)>0 then
|
|
Writeln('Error : ',V1.AsString,'>',V2.AsString);
|
|
end;
|
|
|
|
|
|
Var
|
|
V1,V2 : TFPVersion;
|
|
|
|
begin
|
|
Writeln('Testing version comparison');
|
|
V1:=TFPVersion.Create;
|
|
Try
|
|
V1.AsString:='1.2.3';
|
|
V2:=TFPVersion.Create;
|
|
Try
|
|
V2.AsString:='1.2.3-b';
|
|
CV(V1,V2);
|
|
V2.AsString:='1.2.4';
|
|
CV(V1,V2);
|
|
V2.AsString:='1.3.0';
|
|
CV(V1,V2);
|
|
V2.AsString:='2.0.0';
|
|
CV(V1,V2);
|
|
V2.AsString:=V1.AsString;
|
|
If V1.CompareVersion(V2)<>0 then
|
|
Writeln('Error : ',V1.AsString,'<>',V2.AsString);
|
|
Finally
|
|
V2.Free;
|
|
end;
|
|
Finally
|
|
V1.Free;
|
|
end;
|
|
end;
|
|
|
|
Procedure ComparePackages(P1,P2 : TFPPackage);
|
|
|
|
Var
|
|
i : Integer;
|
|
|
|
|
|
begin
|
|
If P1.Name<>P2.Name then
|
|
Writeln('Names differ: ',P1.Name,'<>',P2.Name);
|
|
If P1.Version.CompareVersion(P2.Version)<>0 then
|
|
Writeln('Versions differ: "',P1.Version.AsString,'"<>"',P2.Version.AsString,'"');
|
|
If P1.Author<>P2.Author then
|
|
Writeln('Authors differ: ',P1.Author,'"<>"',P2.Author,'"');
|
|
If P1.URL<>P2.URL then
|
|
Writeln('URLs differ: "',P1.URL,'"<>"',P2.URL,'"');
|
|
If P1.Email<>P2.Email then
|
|
Writeln('Emails differ: "',P1.Email,'"<>"',P2.Email,'"');
|
|
If P1.Description<>P2.Description then
|
|
Writeln('Descriptions differ: "',P1.Description,'"<>"',P2.Description,'"');
|
|
if P1.OSes<>P2.OSes then
|
|
Writeln('OSes differ');
|
|
if P1.CPUs<>P2.CPUs then
|
|
Writeln('CPUs differ');
|
|
If P1.HasDependencies<>P2.HasDependencies then
|
|
Writeln('HasDependencies differ: "',P1.HasDependencies,'"<>"',P2.HasDependencies,'"');
|
|
If P1.HasDependencies then
|
|
begin
|
|
If P1.Dependencies.Count<>P2.Dependencies.Count then
|
|
Writeln('Dependency counts differ: "',P1.Dependencies.Count,'"<>"',P2.Dependencies.Count,'"')
|
|
else
|
|
For I:=0 to P1.Dependencies.Count-1 do
|
|
begin
|
|
If P1.Dependencies[i].PackageName<>P2.Dependencies[i].PackageName then
|
|
Writeln('Dependency ',I,' name differs :"',P1.Dependencies[i].PackageName,'"<>"',P2.Dependencies[i].PackageName,'"');
|
|
If P1.Dependencies[i].Minversion.CompareVersion(P2.Dependencies[i].MinVersion)<>0 then
|
|
Writeln('Dependency ',I,' minversion differs :"',P1.Dependencies[i].MinVersion.AsString,'"<>"',P2.Dependencies[i].MinVersion.AsString,'"');
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
Procedure TestPackageStream1;
|
|
|
|
Var
|
|
P1,P2 : TFPPackage;
|
|
S : TMemoryStream;
|
|
|
|
begin
|
|
Writeln('Testing package streaming (no deps)');
|
|
P1:=TFPPackage.Create(Nil);
|
|
Try
|
|
FillFirstPackage(P1);
|
|
P2:=TFPPackage.Create(Nil);
|
|
Try
|
|
S:=TMemoryStream.Create;
|
|
try
|
|
P1.SaveToStream(S);
|
|
S.Position:=0;
|
|
P2.LoadFromStream(S,StreamVersion);
|
|
ComparePackages(P1,P2);
|
|
finally
|
|
S.Free;
|
|
end;
|
|
Finally
|
|
P2.Free;
|
|
end;
|
|
Finally
|
|
P1.Free;
|
|
end;
|
|
end;
|
|
|
|
Procedure TestPackageStream2;
|
|
|
|
|
|
Var
|
|
P1,P2 : TFPPackage;
|
|
S : TMemoryStream;
|
|
|
|
begin
|
|
Writeln('Testing package streaming (with deps)');
|
|
P1:=TFPPackage.Create(Nil);
|
|
Try
|
|
FillThirdPackage(P1);
|
|
P2:=TFPPackage.Create(Nil);
|
|
Try
|
|
S:=TMemoryStream.Create;
|
|
try
|
|
P1.SaveToStream(S);
|
|
S.Position:=0;
|
|
P2.LoadFromStream(S,StreamVersion);
|
|
ComparePackages(P1,P2);
|
|
finally
|
|
S.Free;
|
|
end;
|
|
Finally
|
|
P2.Free;
|
|
end;
|
|
Finally
|
|
P1.Free;
|
|
end;
|
|
end;
|
|
|
|
Procedure CompareRepositories(R1,R2 : TFPRepository);
|
|
|
|
var
|
|
I : Integer;
|
|
begin
|
|
If (R1.PackageCount<>R2.PackageCount) then
|
|
Writeln('Package count differs : ',R1.PackageCount,'<>',R2.PackageCount)
|
|
else
|
|
For I:=0 to R1.PackageCount-1 do
|
|
ComparePackages(R1[i],R1[I]);
|
|
end;
|
|
|
|
Procedure TestRepoStream;
|
|
|
|
Var
|
|
R1,R2 : TFPRepository;
|
|
S : TStream;
|
|
|
|
begin
|
|
Writeln('Testing Repository streaming');
|
|
R1:=CreateTestRep(4);
|
|
try
|
|
R2:=TFPrepository.Create(Nil);
|
|
try
|
|
S:=TMemoryStream.Create;
|
|
try
|
|
R1.SaveToStream(S);
|
|
S.Position:=0;
|
|
R2.LoadFromStream(S);
|
|
CompareRepositories(R1,R2);
|
|
finally
|
|
S.Free;
|
|
end;
|
|
finally
|
|
R2.Free;
|
|
end;
|
|
finally
|
|
R1.Free;
|
|
end;
|
|
end;
|
|
|
|
Procedure TestXMLWrite;
|
|
|
|
Var
|
|
R : TFPRepository;
|
|
X : TFPXMLRepositoryHandler;
|
|
|
|
begin
|
|
Writeln('Testing XML writing');
|
|
R:=CreateTestRep(4);
|
|
try
|
|
X:=TFPXMLRepositoryHandler.Create;
|
|
With X do
|
|
try
|
|
SaveToXml(R,'packages.xml');
|
|
finally
|
|
Free;
|
|
end;
|
|
Finally
|
|
R.Free;
|
|
end;
|
|
end;
|
|
|
|
Procedure TestXMLRead;
|
|
|
|
Var
|
|
R1,R2 : TFPRepository;
|
|
X : TFPXMLRepositoryHandler;
|
|
|
|
begin
|
|
Writeln('Testing XML reading');
|
|
R1:=TFPrepository.Create(Nil);
|
|
try
|
|
X:=TFPXMLRepositoryHandler.Create;
|
|
With X do
|
|
try
|
|
LoadFromXml(R1,'packages.xml');
|
|
// Save for test purposes;
|
|
SaveToXml(R1,'packages2.xml');
|
|
// Now compare;
|
|
R2:=CreateTestRep(4);
|
|
Try
|
|
CompareRepositories(R1,R2);
|
|
Finally
|
|
R2.Free;
|
|
end;
|
|
finally
|
|
Free;
|
|
end;
|
|
Finally
|
|
R1.Free;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
TestVersionCompare;
|
|
TestPackageStream1;
|
|
TestPackageStream2;
|
|
TestRepoStream;
|
|
TestXMLWrite;
|
|
TestXMLRead;
|
|
end.
|
|
|