rep2xml.lpr 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. {
  2. This file is part of the Free Pascal Utilities
  3. Copyright (c) 1999-2000 by the Free Pascal development team
  4. See the file COPYING.FPC, included in this distribution,
  5. for details about the copyright.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. **********************************************************************}
  10. {$mode objfpc}{$H+}
  11. program rep2xml;
  12. uses
  13. Classes, fpxmlrep, pkgropts, fprepos, streamcoll, reptest;
  14. Procedure TestVersionCompare;
  15. Procedure CV(V1,V2 : TFPVersion);
  16. begin
  17. if V1.CompareVersion(V2)>0 then
  18. Writeln('Error : ',V1.AsString,'>',V2.AsString);
  19. end;
  20. Var
  21. V1,V2 : TFPVersion;
  22. begin
  23. Writeln('Testing version comparison');
  24. V1:=TFPVersion.Create;
  25. Try
  26. V1.AsString:='1.2.3';
  27. V2:=TFPVersion.Create;
  28. Try
  29. V2.AsString:='1.2.3-b';
  30. CV(V1,V2);
  31. V2.AsString:='1.2.4';
  32. CV(V1,V2);
  33. V2.AsString:='1.3.0';
  34. CV(V1,V2);
  35. V2.AsString:='2.0.0';
  36. CV(V1,V2);
  37. V2.AsString:=V1.AsString;
  38. If V1.CompareVersion(V2)<>0 then
  39. Writeln('Error : ',V1.AsString,'<>',V2.AsString);
  40. Finally
  41. V2.Free;
  42. end;
  43. Finally
  44. V1.Free;
  45. end;
  46. end;
  47. Procedure ComparePackages(P1,P2 : TFPPackage);
  48. Var
  49. i : Integer;
  50. begin
  51. If P1.Name<>P2.Name then
  52. Writeln('Names differ: ',P1.Name,'<>',P2.Name);
  53. If P1.Version.CompareVersion(P2.Version)<>0 then
  54. Writeln('Versions differ: "',P1.Version.AsString,'"<>"',P2.Version.AsString,'"');
  55. If P1.Author<>P2.Author then
  56. Writeln('Authors differ: ',P1.Author,'"<>"',P2.Author,'"');
  57. If P1.URL<>P2.URL then
  58. Writeln('URLs differ: "',P1.URL,'"<>"',P2.URL,'"');
  59. If P1.Email<>P2.Email then
  60. Writeln('Emails differ: "',P1.Email,'"<>"',P2.Email,'"');
  61. If P1.Description<>P2.Description then
  62. Writeln('Descriptions differ: "',P1.Description,'"<>"',P2.Description,'"');
  63. if P1.OSes<>P2.OSes then
  64. Writeln('OSes differ');
  65. if P1.CPUs<>P2.CPUs then
  66. Writeln('CPUs differ');
  67. If P1.HasDependencies<>P2.HasDependencies then
  68. Writeln('HasDependencies differ: "',P1.HasDependencies,'"<>"',P2.HasDependencies,'"');
  69. If P1.HasDependencies then
  70. begin
  71. If P1.Dependencies.Count<>P2.Dependencies.Count then
  72. Writeln('Dependency counts differ: "',P1.Dependencies.Count,'"<>"',P2.Dependencies.Count,'"')
  73. else
  74. For I:=0 to P1.Dependencies.Count-1 do
  75. begin
  76. If P1.Dependencies[i].PackageName<>P2.Dependencies[i].PackageName then
  77. Writeln('Dependency ',I,' name differs :"',P1.Dependencies[i].PackageName,'"<>"',P2.Dependencies[i].PackageName,'"');
  78. If P1.Dependencies[i].Minversion.CompareVersion(P2.Dependencies[i].MinVersion)<>0 then
  79. Writeln('Dependency ',I,' minversion differs :"',P1.Dependencies[i].MinVersion.AsString,'"<>"',P2.Dependencies[i].MinVersion.AsString,'"');
  80. end;
  81. end;
  82. end;
  83. Procedure TestPackageStream1;
  84. Var
  85. P1,P2 : TFPPackage;
  86. S : TMemoryStream;
  87. begin
  88. Writeln('Testing package streaming (no deps)');
  89. P1:=TFPPackage.Create(Nil);
  90. Try
  91. FillFirstPackage(P1);
  92. P2:=TFPPackage.Create(Nil);
  93. Try
  94. S:=TMemoryStream.Create;
  95. try
  96. P1.SaveToStream(S);
  97. S.Position:=0;
  98. P2.LoadFromStream(S,StreamVersion);
  99. ComparePackages(P1,P2);
  100. finally
  101. S.Free;
  102. end;
  103. Finally
  104. P2.Free;
  105. end;
  106. Finally
  107. P1.Free;
  108. end;
  109. end;
  110. Procedure TestPackageStream2;
  111. Var
  112. P1,P2 : TFPPackage;
  113. S : TMemoryStream;
  114. begin
  115. Writeln('Testing package streaming (with deps)');
  116. P1:=TFPPackage.Create(Nil);
  117. Try
  118. FillThirdPackage(P1);
  119. P2:=TFPPackage.Create(Nil);
  120. Try
  121. S:=TMemoryStream.Create;
  122. try
  123. P1.SaveToStream(S);
  124. S.Position:=0;
  125. P2.LoadFromStream(S,StreamVersion);
  126. ComparePackages(P1,P2);
  127. finally
  128. S.Free;
  129. end;
  130. Finally
  131. P2.Free;
  132. end;
  133. Finally
  134. P1.Free;
  135. end;
  136. end;
  137. Procedure CompareRepositories(R1,R2 : TFPRepository);
  138. var
  139. I : Integer;
  140. begin
  141. If (R1.PackageCount<>R2.PackageCount) then
  142. Writeln('Package count differs : ',R1.PackageCount,'<>',R2.PackageCount)
  143. else
  144. For I:=0 to R1.PackageCount-1 do
  145. ComparePackages(R1[i],R1[I]);
  146. end;
  147. Procedure TestRepoStream;
  148. Var
  149. R1,R2 : TFPRepository;
  150. S : TStream;
  151. begin
  152. Writeln('Testing Repository streaming');
  153. R1:=CreateTestRep(4);
  154. try
  155. R2:=TFPrepository.Create(Nil);
  156. try
  157. S:=TMemoryStream.Create;
  158. try
  159. R1.SaveToStream(S);
  160. S.Position:=0;
  161. R2.LoadFromStream(S);
  162. CompareRepositories(R1,R2);
  163. finally
  164. S.Free;
  165. end;
  166. finally
  167. R2.Free;
  168. end;
  169. finally
  170. R1.Free;
  171. end;
  172. end;
  173. Procedure TestXMLWrite;
  174. Var
  175. R : TFPRepository;
  176. X : TFPXMLRepositoryHandler;
  177. begin
  178. Writeln('Testing XML writing');
  179. R:=CreateTestRep(4);
  180. try
  181. X:=TFPXMLRepositoryHandler.Create;
  182. With X do
  183. try
  184. SaveToXml(R,'packages.xml');
  185. finally
  186. Free;
  187. end;
  188. Finally
  189. R.Free;
  190. end;
  191. end;
  192. Procedure TestXMLRead;
  193. Var
  194. R1,R2 : TFPRepository;
  195. X : TFPXMLRepositoryHandler;
  196. begin
  197. Writeln('Testing XML reading');
  198. R1:=TFPrepository.Create(Nil);
  199. try
  200. X:=TFPXMLRepositoryHandler.Create;
  201. With X do
  202. try
  203. LoadFromXml(R1,'packages.xml');
  204. // Save for test purposes;
  205. SaveToXml(R1,'packages2.xml');
  206. // Now compare;
  207. R2:=CreateTestRep(4);
  208. Try
  209. CompareRepositories(R1,R2);
  210. Finally
  211. R2.Free;
  212. end;
  213. finally
  214. Free;
  215. end;
  216. Finally
  217. R1.Free;
  218. end;
  219. end;
  220. begin
  221. TestVersionCompare;
  222. TestPackageStream1;
  223. TestPackageStream2;
  224. TestRepoStream;
  225. TestXMLWrite;
  226. TestXMLRead;
  227. end.