123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- {
- 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.
|