mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-20 05:40:51 +01:00
302 lines
6.2 KiB
ObjectPascal
302 lines
6.2 KiB
ObjectPascal
unit tctsutils;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, fpcunit, testregistry, tsutils, tstypes;
|
|
|
|
Type
|
|
|
|
{ TTestUtilsCase }
|
|
|
|
TTestUtilsCase = class(TTestCase)
|
|
Private
|
|
FConfig : TConfig;
|
|
FFileName : String;
|
|
FReadResult : Boolean;
|
|
Public
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
procedure DoRead;
|
|
procedure CreateFile(const aLines : Array of string);
|
|
Property ReadResult : Boolean Read FReadResult;
|
|
Published
|
|
procedure TestNoFile;
|
|
procedure TestEmptyFile;
|
|
procedure TestNoPercent;
|
|
procedure TestNoEndComment;
|
|
procedure TestSpaces;
|
|
procedure TestCodeAndNote;
|
|
procedure TestConfig;
|
|
procedure TestNeedOptions;
|
|
procedure TestDelOptions;
|
|
Procedure TestNeedTarget;
|
|
Procedure TestSkipTarget;
|
|
procedure TestNeedCPU;
|
|
procedure TestSkipCPU;
|
|
Procedure TestSkipEMU;
|
|
Procedure TestMinVersion;
|
|
Procedure TestMaxVersion;
|
|
Procedure TestResultCode;
|
|
Procedure TestUsesGraph;
|
|
Procedure TestShouldFail;
|
|
procedure TestNoRun;
|
|
Procedure TestNeedLibrary;
|
|
Procedure TestNeedAfter;
|
|
procedure TestTimeout;
|
|
procedure TestFiles;
|
|
Procedure TestWPOParas;
|
|
Procedure TestWPOPasses;
|
|
Procedure TestDelFiles;
|
|
Procedure TestInteractive;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TTestUtilsCase }
|
|
|
|
procedure TTestUtilsCase.SetUp;
|
|
begin
|
|
inherited SetUp;
|
|
FReadResult:=False;
|
|
FFileName:=GetTempDir(False)+TestName+'.pas';
|
|
if FileExists(FFileName) then
|
|
if not DeleteFile(FFileName) then
|
|
Fail('Failed to delete file '+FFileName);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TearDown;
|
|
begin
|
|
if (FFileName<>'') and FileExists(FFileName) then
|
|
if not DeleteFile(FFileName) then
|
|
Fail('Failed to delete file '+FFileName);
|
|
inherited TearDown;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.DoRead;
|
|
begin
|
|
FReadResult:=GetConfig('tc',FFileName,FConfig);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.CreateFile(const aLines: array of string);
|
|
var
|
|
l : TStrings;
|
|
begin
|
|
L:=TStringList.Create;
|
|
try
|
|
l.AddStrings(aLines,True);
|
|
l.SaveToFile(FFileName);
|
|
finally
|
|
l.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNoFile;
|
|
begin
|
|
DoRead;
|
|
AssertFalse('Not read',ReadResult);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestEmptyFile;
|
|
begin
|
|
CreateFile([]);
|
|
DoRead;
|
|
AssertTrue('read',ReadResult);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNoPercent;
|
|
begin
|
|
CreateFile(['{CPU=X}']);
|
|
DoRead;
|
|
AssertTrue('read',ReadResult);
|
|
AssertEquals('No value','',FCOnfig.NeedCPU);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNoEndComment;
|
|
begin
|
|
CreateFile(['{ %CPU=X']);
|
|
DoRead;
|
|
AssertTrue('read',ReadResult);
|
|
AssertEquals('No value','',FConfig.NeedCPU);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestSpaces;
|
|
begin
|
|
CreateFile(['{ %CPU = X }']);
|
|
DoRead;
|
|
AssertTrue('read',ReadResult);
|
|
AssertEquals('No value','X',FConfig.NeedCPU);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestCodeAndNote;
|
|
begin
|
|
CreateFile(['{%KNOWNRUNERROR=123X }']);
|
|
DoRead;
|
|
AssertTrue('read',ReadResult);
|
|
AssertEquals('Runerror value',123,FConfig.KnownRunError);
|
|
AssertEquals('RunError note','X',FConfig.KnownRunNote);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestConfig;
|
|
begin
|
|
CreateFile(['{%CONFIGFILE=X.CFG Y.CFG}']);
|
|
DoRead;
|
|
AssertTrue('read',ReadResult);
|
|
AssertEquals('Runerror value','X.CFG',FConfig.ConfigFileSrc);
|
|
AssertEquals('RunError note','Y.CFG',FConfig.ConfigFileDst);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNeedOptions;
|
|
begin
|
|
CreateFile(['{%OPT=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.NeedOptions);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestDelOptions;
|
|
begin
|
|
CreateFile(['{%DELOPT=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.DelOptions);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNeedTarget;
|
|
begin
|
|
CreateFile(['{%TARGET=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.NeedTarget);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestSkipTarget;
|
|
begin
|
|
CreateFile(['{%SKIPTARGET=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.SkipTarget);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNeedCPU;
|
|
begin
|
|
CreateFile(['{%SKIPEMU=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.SkipEmu);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestSkipCPU;
|
|
begin
|
|
CreateFile(['{%SKIPEMU=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.SkipEmu);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestSkipEMU;
|
|
begin
|
|
CreateFile(['{%SKIPEMU=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.SkipEmu);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestMinVersion;
|
|
begin
|
|
CreateFile(['{%VERSION=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.MinVersion);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestMaxVersion;
|
|
begin
|
|
CreateFile(['{%MAXVERSION=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.MaxVersion);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestResultCode;
|
|
begin
|
|
CreateFile(['{%RESULT=1}']);
|
|
DoRead;
|
|
AssertEquals('Value',1,FConfig.ResultCode);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestUsesGraph;
|
|
begin
|
|
CreateFile(['{%GRAPH}']);
|
|
DoRead;
|
|
AssertTrue('Value',FConfig.UsesGraph);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestShouldFail;
|
|
begin
|
|
CreateFile(['{%FAIL}']);
|
|
DoRead;
|
|
AssertTrue('Value',FConfig.ShouldFail);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNoRun;
|
|
begin
|
|
CreateFile(['{%NORUN}']);
|
|
DoRead;
|
|
AssertTrue('Value',FConfig.NoRun);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNeedLibrary;
|
|
begin
|
|
CreateFile(['{%NEEDLIBRARY}']);
|
|
DoRead;
|
|
AssertTrue('Value',FConfig.NeedLibrary);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestNeedAfter;
|
|
begin
|
|
CreateFile(['{%NEEDEDAFTER}']);
|
|
DoRead;
|
|
AssertTrue('Value',FConfig.NeededAfter);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestTimeout;
|
|
begin
|
|
CreateFile(['{%TIMEOUT=123}']);
|
|
DoRead;
|
|
AssertEquals('Value',123,FConfig.Timeout)
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestFiles;
|
|
begin
|
|
CreateFile(['{%FILES=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.Files);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestWPOParas;
|
|
begin
|
|
CreateFile(['{%WPOPARAS=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.wpoparas);;
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestWPOPasses;
|
|
begin
|
|
CreateFile(['{%WPOPASSES=2}']);
|
|
DoRead;
|
|
AssertEquals('Value',2,FConfig.wpopasses);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestDelFiles;
|
|
begin
|
|
CreateFile(['{%DELFILES=XYZ}']);
|
|
DoRead;
|
|
AssertEquals('Value','XYZ',FConfig.DelFiles);
|
|
end;
|
|
|
|
procedure TTestUtilsCase.TestInteractive;
|
|
begin
|
|
CreateFile(['{%INTERACTIVE}']);
|
|
DoRead;
|
|
AssertTrue('Value',FConfig.IsInteractive);
|
|
end;
|
|
|
|
initialization
|
|
RegisterTest(TTestUtilsCase);
|
|
end.
|
|
|