tctsutils.pas 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. unit tctsutils;
  2. {$mode ObjFPC}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, fpcunit, testregistry, tsutils, tstypes;
  6. Type
  7. { TTestUtilsCase }
  8. TTestUtilsCase = class(TTestCase)
  9. Private
  10. FConfig : TConfig;
  11. FFileName : String;
  12. FReadResult : Boolean;
  13. Public
  14. procedure SetUp; override;
  15. procedure TearDown; override;
  16. procedure DoRead;
  17. procedure CreateFile(const aLines : Array of string);
  18. Property ReadResult : Boolean Read FReadResult;
  19. Published
  20. procedure TestNoFile;
  21. procedure TestEmptyFile;
  22. procedure TestNoPercent;
  23. procedure TestNoEndComment;
  24. procedure TestSpaces;
  25. procedure TestCodeAndNote;
  26. procedure TestConfig;
  27. procedure TestNeedOptions;
  28. procedure TestDelOptions;
  29. Procedure TestNeedTarget;
  30. Procedure TestSkipTarget;
  31. procedure TestNeedCPU;
  32. procedure TestSkipCPU;
  33. Procedure TestSkipEMU;
  34. Procedure TestMinVersion;
  35. Procedure TestMaxVersion;
  36. Procedure TestResultCode;
  37. Procedure TestUsesGraph;
  38. Procedure TestShouldFail;
  39. procedure TestNoRun;
  40. Procedure TestNeedLibrary;
  41. Procedure TestNeedAfter;
  42. procedure TestTimeout;
  43. procedure TestFiles;
  44. Procedure TestWPOParas;
  45. Procedure TestWPOPasses;
  46. Procedure TestDelFiles;
  47. Procedure TestInteractive;
  48. end;
  49. implementation
  50. { TTestUtilsCase }
  51. procedure TTestUtilsCase.SetUp;
  52. begin
  53. inherited SetUp;
  54. FReadResult:=False;
  55. FFileName:=GetTempDir(False)+TestName+'.pas';
  56. if FileExists(FFileName) then
  57. if not DeleteFile(FFileName) then
  58. Fail('Failed to delete file '+FFileName);
  59. end;
  60. procedure TTestUtilsCase.TearDown;
  61. begin
  62. if (FFileName<>'') and FileExists(FFileName) then
  63. if not DeleteFile(FFileName) then
  64. Fail('Failed to delete file '+FFileName);
  65. inherited TearDown;
  66. end;
  67. procedure TTestUtilsCase.DoRead;
  68. begin
  69. FReadResult:=GetConfig('tc',FFileName,FConfig);
  70. end;
  71. procedure TTestUtilsCase.CreateFile(const aLines: array of string);
  72. var
  73. l : TStrings;
  74. begin
  75. L:=TStringList.Create;
  76. try
  77. l.AddStrings(aLines,True);
  78. l.SaveToFile(FFileName);
  79. finally
  80. l.Free;
  81. end;
  82. end;
  83. procedure TTestUtilsCase.TestNoFile;
  84. begin
  85. DoRead;
  86. AssertFalse('Not read',ReadResult);
  87. end;
  88. procedure TTestUtilsCase.TestEmptyFile;
  89. begin
  90. CreateFile([]);
  91. DoRead;
  92. AssertTrue('read',ReadResult);
  93. end;
  94. procedure TTestUtilsCase.TestNoPercent;
  95. begin
  96. CreateFile(['{CPU=X}']);
  97. DoRead;
  98. AssertTrue('read',ReadResult);
  99. AssertEquals('No value','',FCOnfig.NeedCPU);
  100. end;
  101. procedure TTestUtilsCase.TestNoEndComment;
  102. begin
  103. CreateFile(['{ %CPU=X']);
  104. DoRead;
  105. AssertTrue('read',ReadResult);
  106. AssertEquals('No value','',FConfig.NeedCPU);
  107. end;
  108. procedure TTestUtilsCase.TestSpaces;
  109. begin
  110. CreateFile(['{ %CPU = X }']);
  111. DoRead;
  112. AssertTrue('read',ReadResult);
  113. AssertEquals('No value','X',FConfig.NeedCPU);
  114. end;
  115. procedure TTestUtilsCase.TestCodeAndNote;
  116. begin
  117. CreateFile(['{%KNOWNRUNERROR=123X }']);
  118. DoRead;
  119. AssertTrue('read',ReadResult);
  120. AssertEquals('Runerror value',123,FConfig.KnownRunError);
  121. AssertEquals('RunError note','X',FConfig.KnownRunNote);
  122. end;
  123. procedure TTestUtilsCase.TestConfig;
  124. begin
  125. CreateFile(['{%CONFIGFILE=X.CFG Y.CFG}']);
  126. DoRead;
  127. AssertTrue('read',ReadResult);
  128. AssertEquals('Runerror value','X.CFG',FConfig.ConfigFileSrc);
  129. AssertEquals('RunError note','Y.CFG',FConfig.ConfigFileDst);
  130. end;
  131. procedure TTestUtilsCase.TestNeedOptions;
  132. begin
  133. CreateFile(['{%OPT=XYZ}']);
  134. DoRead;
  135. AssertEquals('Value','XYZ',FConfig.NeedOptions);;
  136. end;
  137. procedure TTestUtilsCase.TestDelOptions;
  138. begin
  139. CreateFile(['{%DELOPT=XYZ}']);
  140. DoRead;
  141. AssertEquals('Value','XYZ',FConfig.DelOptions);;
  142. end;
  143. procedure TTestUtilsCase.TestNeedTarget;
  144. begin
  145. CreateFile(['{%TARGET=XYZ}']);
  146. DoRead;
  147. AssertEquals('Value','XYZ',FConfig.NeedTarget);;
  148. end;
  149. procedure TTestUtilsCase.TestSkipTarget;
  150. begin
  151. CreateFile(['{%SKIPTARGET=XYZ}']);
  152. DoRead;
  153. AssertEquals('Value','XYZ',FConfig.SkipTarget);;
  154. end;
  155. procedure TTestUtilsCase.TestNeedCPU;
  156. begin
  157. CreateFile(['{%SKIPEMU=XYZ}']);
  158. DoRead;
  159. AssertEquals('Value','XYZ',FConfig.SkipEmu);;
  160. end;
  161. procedure TTestUtilsCase.TestSkipCPU;
  162. begin
  163. CreateFile(['{%SKIPEMU=XYZ}']);
  164. DoRead;
  165. AssertEquals('Value','XYZ',FConfig.SkipEmu);;
  166. end;
  167. procedure TTestUtilsCase.TestSkipEMU;
  168. begin
  169. CreateFile(['{%SKIPEMU=XYZ}']);
  170. DoRead;
  171. AssertEquals('Value','XYZ',FConfig.SkipEmu);;
  172. end;
  173. procedure TTestUtilsCase.TestMinVersion;
  174. begin
  175. CreateFile(['{%VERSION=XYZ}']);
  176. DoRead;
  177. AssertEquals('Value','XYZ',FConfig.MinVersion);;
  178. end;
  179. procedure TTestUtilsCase.TestMaxVersion;
  180. begin
  181. CreateFile(['{%MAXVERSION=XYZ}']);
  182. DoRead;
  183. AssertEquals('Value','XYZ',FConfig.MaxVersion);;
  184. end;
  185. procedure TTestUtilsCase.TestResultCode;
  186. begin
  187. CreateFile(['{%RESULT=1}']);
  188. DoRead;
  189. AssertEquals('Value',1,FConfig.ResultCode);
  190. end;
  191. procedure TTestUtilsCase.TestUsesGraph;
  192. begin
  193. CreateFile(['{%GRAPH}']);
  194. DoRead;
  195. AssertTrue('Value',FConfig.UsesGraph);
  196. end;
  197. procedure TTestUtilsCase.TestShouldFail;
  198. begin
  199. CreateFile(['{%FAIL}']);
  200. DoRead;
  201. AssertTrue('Value',FConfig.ShouldFail);
  202. end;
  203. procedure TTestUtilsCase.TestNoRun;
  204. begin
  205. CreateFile(['{%NORUN}']);
  206. DoRead;
  207. AssertTrue('Value',FConfig.NoRun);
  208. end;
  209. procedure TTestUtilsCase.TestNeedLibrary;
  210. begin
  211. CreateFile(['{%NEEDLIBRARY}']);
  212. DoRead;
  213. AssertTrue('Value',FConfig.NeedLibrary);
  214. end;
  215. procedure TTestUtilsCase.TestNeedAfter;
  216. begin
  217. CreateFile(['{%NEEDEDAFTER}']);
  218. DoRead;
  219. AssertTrue('Value',FConfig.NeededAfter);
  220. end;
  221. procedure TTestUtilsCase.TestTimeout;
  222. begin
  223. CreateFile(['{%TIMEOUT=123}']);
  224. DoRead;
  225. AssertEquals('Value',123,FConfig.Timeout)
  226. end;
  227. procedure TTestUtilsCase.TestFiles;
  228. begin
  229. CreateFile(['{%FILES=XYZ}']);
  230. DoRead;
  231. AssertEquals('Value','XYZ',FConfig.Files);;
  232. end;
  233. procedure TTestUtilsCase.TestWPOParas;
  234. begin
  235. CreateFile(['{%WPOPARAS=XYZ}']);
  236. DoRead;
  237. AssertEquals('Value','XYZ',FConfig.wpoparas);;
  238. end;
  239. procedure TTestUtilsCase.TestWPOPasses;
  240. begin
  241. CreateFile(['{%WPOPASSES=2}']);
  242. DoRead;
  243. AssertEquals('Value',2,FConfig.wpopasses);
  244. end;
  245. procedure TTestUtilsCase.TestDelFiles;
  246. begin
  247. CreateFile(['{%DELFILES=XYZ}']);
  248. DoRead;
  249. AssertEquals('Value','XYZ',FConfig.DelFiles);
  250. end;
  251. procedure TTestUtilsCase.TestInteractive;
  252. begin
  253. CreateFile(['{%INTERACTIVE}']);
  254. DoRead;
  255. AssertTrue('Value',FConfig.IsInteractive);
  256. end;
  257. initialization
  258. RegisterTest(TTestUtilsCase);
  259. end.