fpc/tests/utils/unittests/tctsutils.pas
2025-01-25 20:29:31 +01:00

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.