* New patch from Dean Zobec

- memory leaks fixed in the money example;
  - no more need to start the test methods with "test"
This commit is contained in:
michael 2004-12-08 19:12:32 +00:00
parent af35ebb4e7
commit 123f82f176
4 changed files with 28 additions and 21 deletions

View File

@ -44,7 +44,7 @@ type
procedure SetUp; override; procedure SetUp; override;
procedure TearDown; override; procedure TearDown; override;
published published
procedure TestCountTestCases; procedure CheckCountTestCases;
procedure TestExtractMethods; procedure TestExtractMethods;
end; end;
@ -160,7 +160,7 @@ end;
procedure TTestSuiteTest.TestCountTestCases; procedure TTestSuiteTest.CheckCountTestCases;
begin begin
AssertTrue(FSuite.CountTestCases = 2); AssertTrue(FSuite.CountTestCases = 2);
end; end;
@ -173,7 +173,7 @@ begin
s := ''; s := '';
for i := 0 to FSuite.CountTestCases - 1 do for i := 0 to FSuite.CountTestCases - 1 do
s := s + UpperCase(FSuite[i].TestName) + ' '; s := s + UpperCase(FSuite[i].TestName) + ' ';
AssertEquals('Failure in extracting methods:', 'TESTCOUNTTESTCASES TESTEXTRACTMETHODS ', s ); AssertEquals('Failure in extracting methods:', 'CHECKCOUNTTESTCASES TESTEXTRACTMETHODS ', s );
end; end;
procedure TAssertTest.TestEqualsInt; procedure TAssertTest.TestEqualsInt;

View File

@ -152,12 +152,12 @@ end;
class function TMoneyBag.CreateWith(m1: IMoney; m2: IMoney): IMoney; class function TMoneyBag.CreateWith(m1: IMoney; m2: IMoney): IMoney;
var var
mb: TMoneyBag; mb: IMoney;
begin begin
mb := TMoneyBag.Create; mb := TMoneyBag.Create;
m1.AppendTo(mb); m1.AppendTo(TMoneyBag(mb._Self));
m2.AppendTo(mb); m2.AppendTo(TMoneyBag(mb._Self));
Result := mb.Simplify; Result := TMoneyBag(mb._Self).Simplify;
end; end;
constructor TMoneyBag.Create; constructor TMoneyBag.Create;
@ -166,7 +166,11 @@ begin
end; end;
destructor TMoneyBag.Destroy; destructor TMoneyBag.Destroy;
var
i: integer;
begin begin
for i := 0 to FMonies.Count - 1 do
IInterface(FMonies.items[i])._release;
FMonies.Free; FMonies.Free;
inherited Destroy; inherited Destroy;
end; end;

View File

@ -121,11 +121,17 @@ begin
end; end;
procedure TMoneyTest.testIsZero; procedure TMoneyTest.testIsZero;
var
F0CHF, F12USD, F0USD, FMB0: IMoney;
begin begin
AssertTrue('error: [0 CHF] is to be considered zero!', TMoney.Create(0, 'CHF').IsZero); F0CHF := TMoney.Create(0, 'CHF');
AssertFalse('error: [12 USD] is not to be considered zero!', TMoney.Create(12, 'USD').IsZero); F0USD := TMoney.Create(0, 'USD');
F12USD := TMoney.Create(12, 'USD');
AssertTrue('error: [0 CHF] is to be considered zero!', F0CHF.IsZero);
AssertFalse('error: [12 USD] is not to be considered zero!', F12USD.IsZero);
AssertTrue(FMB1.subtract(FMB1).isZero); AssertTrue(FMB1.subtract(FMB1).isZero);
AssertTrue(TMoneyBag.CreateWith(TMoney.Create(0, 'CHF'), TMoney.Create(0, 'USD')).isZero); FMB0 :=TMoneyBag.CreateWith(F0CHF, F0USD);
AssertTrue(FMB0.isZero);
end; end;
procedure TMoneyTest.testMixedSimpleAdd; procedure TMoneyTest.testMixedSimpleAdd;
@ -171,10 +177,14 @@ end;
procedure TMoneyTest.testSimplify; procedure TMoneyTest.testSimplify;
var var
money: IMoney; money: IMoney;
F26CHF, F28CHF, F54CHF: IMoney;
begin begin
money := TMoneyBag.CreateWith(TMoney.Create(26, 'CHF'), TMoney.Create(28, 'CHF')); F26CHF := TMoney.Create(26, 'CHF');
AssertTrue('Expected ' + TMoney.Create(54, 'CHF').toString + ' but was ' F28CHF := TMoney.Create(28, 'CHF');
+ money.toString, TMoney.Create(54, 'CHF').equals(money)); money := TMoneyBag.CreateWith(F26CHF, F28CHF);
F54CHF := TMoney.Create(54, 'CHF');
AssertTrue('Expected ' + F54CHF.toString + ' but was '
+ money.toString, F54CHF.equals(money));
end; end;
procedure TMoneyTest.testNormalize2; procedure TMoneyTest.testNormalize2;

View File

@ -160,7 +160,6 @@ type
FTestSuiteName: string; FTestSuiteName: string;
function GetTest(Index: integer): TTest; function GetTest(Index: integer): TTest;
protected protected
function IsTestMethod(AMethodName: string): boolean; virtual;
function GetTestName: string; override; function GetTestName: string; override;
function GetTestSuiteName: string; override; function GetTestSuiteName: string; override;
procedure SetTestSuiteName(const aName: string); override; procedure SetTestSuiteName(const aName: string); override;
@ -635,7 +634,6 @@ begin
GetMethodList(AClass, ml); GetMethodList(AClass, ml);
for i := 0 to ml.Count -1 do for i := 0 to ml.Count -1 do
begin begin
if IsTestMethod(ml.Strings[i]) then
AddTest(tc.CreateWith(ml.Strings[i], tc.ClassName)); AddTest(tc.CreateWith(ml.Strings[i], tc.ClassName));
end; end;
finally finally
@ -703,11 +701,6 @@ begin
FTestSuiteName := aName; FTestSuiteName := aName;
end; end;
function TTestSuite.IsTestMethod(AMethodName: string): Boolean;
begin
Result := Pos('TEST', UpperCase(AMethodName))= 1;
end;
function TTestSuite.CountTestCases: integer; function TTestSuite.CountTestCases: integer;
var var
i: integer; i: integer;