source: branches/bigint/Packages/Common/TestCase.pas

Last change on this file was 8, checked in by chronos, 3 months ago
  • Added: Common package.
  • Added: Memory form to show content of memory.
File size: 2.2 KB
Line 
1unit TestCase;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, Generics.Collections;
7
8type
9 TTestResult = (trNone, trPassed, trFailed);
10
11 { TTestCase }
12
13 TTestCase = class
14 public
15 Name: string;
16 TestResult: TTestResult;
17 Log: string;
18 procedure Initialize; virtual;
19 procedure Run; virtual;
20 procedure Finalize; virtual;
21 procedure Evaluate(Passed: Boolean);
22 procedure Pass;
23 procedure Fail;
24 constructor Create; virtual;
25 end;
26
27 TTestCaseClass = class of TTestCase;
28
29 { TTestCases }
30
31 TTestCases = class(TObjectList<TTestCase>)
32 function AddNew(Name: string; TestClass: TTestCaseClass): TTestCase;
33 procedure Run;
34 end;
35
36
37resourcestring
38 SNone = 'None';
39 SPassed = 'Passed';
40 SFailed = 'Failed';
41
42const
43 ResultText: array[TTestResult] of string = (SNone, SPassed, SFailed);
44
45procedure Translate;
46
47
48implementation
49
50procedure Translate;
51begin
52 ResultText[trNone] := SNone;
53 ResultText[trPassed] := SPassed;
54 ResultText[trFailed] := SFailed;
55end;
56
57{ TTestCase }
58
59procedure TTestCase.Initialize;
60begin
61 TestResult := trNone;
62end;
63
64procedure TTestCase.Run;
65begin
66end;
67
68procedure TTestCase.Finalize;
69begin
70end;
71
72procedure TTestCase.Evaluate(Passed: Boolean);
73begin
74 if Passed then TestResult := trPassed
75 else TestResult := trFailed;
76end;
77
78procedure TTestCase.Pass;
79begin
80 TestResult := trPassed;
81end;
82
83procedure TTestCase.Fail;
84begin
85 TestResult := trFailed;
86end;
87
88constructor TTestCase.Create;
89begin
90end;
91
92{ TTestCases }
93
94function TTestCases.AddNew(Name: string; TestClass: TTestCaseClass): TTestCase;
95begin
96 Result := TestClass.Create;
97 Result.Name := Name;
98 Add(Result);
99end;
100
101procedure TTestCases.Run;
102var
103 I: Integer;
104 Passed: Integer;
105 Failed: Integer;
106begin
107 Passed := 0;
108 Failed := 0;
109 for I := 0 to Count - 1 do
110 with Items[I] do begin
111 WriteLn('== ' + Name + ' ======= ');
112 Initialize;
113 Run;
114 Finalize;
115 if TestResult = trPassed then Inc(Passed);
116 if TestResult = trFailed then Inc(Failed);
117 end;
118
119 for I := 0 to Count - 1 do
120 with Items[I] do begin
121 WriteLn(Name + ': ' + ResultText[TestResult]);
122 end;
123 WriteLn('Total: ' + IntToStr(Count) + ', Passed: ' + IntToStr(Passed) +
124 ', Failed: ' + IntToStr(Failed));
125end;
126
127end.
Note: See TracBrowser for help on using the repository browser.