xtool/contrib/mORMot/SQLite3/Samples/07 - SynTest/SynTestTest.pas

118 lines
1.9 KiB
ObjectPascal

unit SynTestTest;
interface
uses
SynCommons,
SynTests;
function Adding(A,B: double): Double; overload;
function Adding(A,B: integer): integer; overload;
function Multiply(A,B: double): Double; overload;
function Multiply(A,B: integer): integer; overload;
type
TTestNumbersAdding = class(TSynTestCase)
published
procedure TestIntegerAdd;
procedure TestDoubleAdd;
end;
TTestNumbersMultiplying = class(TSynTestCase)
published
procedure TestIntegerMultiply;
procedure TestDoubleMultiply;
end;
TTestSuit = class(TSynTestsLogged)
published
procedure MyTestSuit;
end;
implementation
function Adding(A,B: double): Double; overload;
begin
result := A+B;
end;
function Adding(A,B: integer): integer; overload;
begin
result := A+B;
end;
function Multiply(A,B: double): Double; overload;
begin
result := A*B;
end;
function Multiply(A,B: integer): integer; overload;
begin
result := A*B;
end;
{ TTestSuit }
procedure TTestSuit.MyTestSuit;
begin
AddCase([TTestNumbersAdding,TTestNumbersMultiplying]);
end;
{ TTestNumbersAdding }
procedure TTestNumbersAdding.TestDoubleAdd;
var A,B: double;
i: integer;
begin
for i := 1 to 1000 do
begin
A := Random;
B := Random;
Check(SameValue(A+B,Adding(A,B)));
end;
end;
procedure TTestNumbersAdding.TestIntegerAdd;
var A,B: integer;
i: integer;
begin
for i := 1 to 1000 do
begin
A := Random(maxInt);
B := Random(maxInt);
Check(A+B=Adding(A,B));
end;
end;
{ TTestNumbersMultiplying }
procedure TTestNumbersMultiplying.TestDoubleMultiply;
var A,B: double;
i: integer;
begin
for i := 1 to 1000 do
begin
A := Random;
B := Random;
Check(SameValue(A*B,Multiply(A,B)));
end;
end;
procedure TTestNumbersMultiplying.TestIntegerMultiply;
var A,B: integer;
i: integer;
begin
for i := 1 to 1000 do
begin
A := Random(maxInt);
B := Random(maxInt);
Check(A*B=Multiply(A,B));
end;
end;
end.