mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-04 08:07:22 +01:00
225 lines
4.7 KiB
ObjectPascal
225 lines
4.7 KiB
ObjectPascal
{$mode objfpc}
|
|
{$h+}
|
|
{
|
|
This file is part of the Free Component Library (FCL)
|
|
Copyright (c) 2004 by Dean Zobec
|
|
|
|
Port to Free Pascal of the JUnit framework.
|
|
|
|
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.
|
|
|
|
**********************************************************************}
|
|
unit suitetest;
|
|
|
|
interface
|
|
|
|
uses
|
|
fpcunit, testreport, testregistry;
|
|
|
|
type
|
|
|
|
TNoTestCases = class(TTestCase)
|
|
public
|
|
procedure NoTestCase;
|
|
end;
|
|
|
|
{$M+}
|
|
TNoTestCaseClass = class(TObject)
|
|
published
|
|
procedure TestSuccess;
|
|
end;
|
|
{$M-}
|
|
|
|
TOneTestCase = class(TTestCase)
|
|
public
|
|
procedure NoTestCase;
|
|
published
|
|
procedure OnlyOneTestCase; virtual;
|
|
end;
|
|
|
|
TOverrideTestCase = class(TOneTestCase)
|
|
published
|
|
procedure OnlyOneTestCase; override;
|
|
end;
|
|
|
|
|
|
TInheritedTestCase = class(TOneTestCase)
|
|
published
|
|
procedure Test2;
|
|
end;
|
|
|
|
TSuiteTest = class(TTestCase)
|
|
private
|
|
FResult: TTestResult;
|
|
protected
|
|
procedure Setup; override;
|
|
procedure Teardown; override;
|
|
public
|
|
class function Suite: TTestSuite;
|
|
published
|
|
procedure testNoTestCaseClass;
|
|
procedure testNoTestCases;
|
|
procedure testOneTestCase;
|
|
procedure testInheritedTests;
|
|
procedure testNotExistingTestCase;
|
|
procedure testShadowedTests;
|
|
procedure testAddTestSuiteFromClass;
|
|
procedure testCreateTestSuiteFromArray;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
procedure TNoTestCases.NoTestCase;
|
|
begin
|
|
end;
|
|
|
|
procedure TNoTestCaseClass.TestSuccess;
|
|
begin
|
|
end;
|
|
|
|
procedure TOneTestCase.NoTestCase;
|
|
begin
|
|
end;
|
|
|
|
procedure TOneTestCase.OnlyOneTestCase;
|
|
begin
|
|
end;
|
|
|
|
procedure TOverrideTestCase.OnlyOneTestCase;
|
|
begin
|
|
end;
|
|
|
|
procedure TInheritedTestCase.Test2;
|
|
begin
|
|
end;
|
|
|
|
procedure TSuiteTest.Setup;
|
|
begin
|
|
FResult := TTestResult.Create;
|
|
end;
|
|
|
|
procedure TSuiteTest.Teardown;
|
|
begin
|
|
FResult.Free;
|
|
end;
|
|
|
|
class function TSuiteTest.Suite: TTestSuite;
|
|
begin
|
|
Result := TTestSuite.Create('TSuiteTest');
|
|
Result.AddTest(TSuiteTest.CreateWithName('testNoTestCaseClass'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testNoTestCases'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testOneTestCase'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testInheritedTests'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testNotExistingTestCase'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testShadowedTests'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testAddTestSuiteFromClass'));
|
|
Result.AddTest(TSuiteTest.CreateWithName('testCreateTestSuiteFromArray'));
|
|
end;
|
|
|
|
procedure TSuiteTest.testNoTestCaseClass;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create(TNoTestCaseClass);
|
|
ts.Run(FResult);
|
|
ts.Free;
|
|
AssertEquals(1, FResult.RunTests);
|
|
AssertTrue(not FResult.WasSuccessful);
|
|
end;
|
|
|
|
procedure TSuiteTest.testNoTestCases;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create(TNoTestCases);
|
|
ts.Run(FResult);
|
|
ts.Free;
|
|
AssertTrue(FResult.RunTests = 1);
|
|
AssertTrue(FResult.NumberOfFailures = 1);
|
|
AssertTrue(not FResult.WasSuccessful);
|
|
end;
|
|
|
|
procedure TSuiteTest.testOneTestCase;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create(TOneTestCase);
|
|
ts.Run(FResult);
|
|
ts.Free;
|
|
AssertTrue(FResult.RunTests = 1);
|
|
AssertTrue(FResult.NumberOfFailures = 0);
|
|
AssertTrue(FResult.NumberOfErrors = 0);
|
|
AssertTrue(FResult.WasSuccessful);
|
|
end;
|
|
|
|
procedure TSuiteTest.testInheritedTests;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create(TInheritedTestCase);
|
|
ts.Run(FResult);
|
|
ts.Free;
|
|
AssertEquals(2, FResult.RunTests);
|
|
AssertTrue(FResult.WasSuccessful);
|
|
end;
|
|
|
|
procedure TSuiteTest.testNotExistingTestCase;
|
|
var
|
|
t: TTestCase;
|
|
begin
|
|
t := TSuiteTest.CreateWithName('notExistingMethod');
|
|
t.Run(FResult);
|
|
t.Free;
|
|
AssertTrue(FResult.RunTests = 1);
|
|
AssertTrue(FResult.NumberOfFailures = 1);
|
|
AssertTrue(FResult.NumberOfErrors = 0);
|
|
end;
|
|
|
|
procedure TSuiteTest.testShadowedTests;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create(TOverrideTestCase);
|
|
ts.Run(FResult);
|
|
ts.Free;
|
|
AssertEquals(1, FResult.RunTests);
|
|
end;
|
|
|
|
procedure TSuiteTest.testAddTestSuiteFromClass;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create;
|
|
ts.AddTestSuiteFromClass(TOneTestCase);
|
|
ts.Run(FResult);
|
|
ts.Free;
|
|
AssertEquals(1, FResult.RunTests);
|
|
end;
|
|
|
|
procedure TSuiteTest.testCreateTestSuiteFromArray;
|
|
var
|
|
ts: TTestSuite;
|
|
begin
|
|
ts := TTestSuite.Create([TOneTestCase, TInheritedTestCase]);
|
|
try
|
|
AssertEquals(3, ts.CountTestCases);
|
|
AssertEquals(2, ts.Tests.Count);
|
|
AssertEquals('TOneTestCase', ts[0].TestName);
|
|
AssertEquals('TInheritedTestCase', ts[1].TestName);
|
|
finally
|
|
ts.Free;
|
|
end;
|
|
end;
|
|
|
|
initialization
|
|
|
|
RegisterTests([TSuiteTest]);
|
|
|
|
end.
|