Skip to content

Commit 5f2dfe9

Browse files
committed
Add unit tests for 8 Bold units improving code coverage
New test files: - Test.BoldUpdatePrecondition.pas (18 tests, 54.6% coverage) - Test.BoldCondition.pas (18 tests, 28.7% coverage) - Test.BoldExternalizedReferences.pas (10 tests, 98.0% coverage) - Test.BoldPersistenceController.pas (8 tests, 60.6% coverage) - Test.BoldStubs.pas (8 tests, 97.1% coverage) - Test.BoldUMLTaggedValues.pas (6 tests, 100% coverage) - Test.BoldSortedHandle.pas (12 tests, 47.9% coverage) - Test.BoldDefaultId.pas (25 tests, 73.7% coverage) Total: 105 new tests across 8 test fixtures
1 parent ace905d commit 5f2dfe9

File tree

9 files changed

+2074
-0
lines changed

9 files changed

+2074
-0
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
unit Test.BoldExternalizedReferences;
2+
3+
interface
4+
5+
uses
6+
DUnitX.TestFramework,
7+
BoldExternalizedReferences;
8+
9+
type
10+
[TestFixture]
11+
TTestBoldExternalizedReferences = class
12+
private
13+
FList: TBoldExternalizedReferenceList;
14+
public
15+
[Setup]
16+
procedure Setup;
17+
[TearDown]
18+
procedure TearDown;
19+
20+
[Test]
21+
procedure TestCreate;
22+
[Test]
23+
procedure TestCountEmpty;
24+
[Test]
25+
procedure TestSetAndGetReferencedObject;
26+
[Test]
27+
procedure TestGetReferencedObject_NotFound;
28+
[Test]
29+
procedure TestCountAfterAdd;
30+
[Test]
31+
procedure TestSetReferencedObject_Replace;
32+
[Test]
33+
procedure TestSetReferencedObject_RemoveWithNil;
34+
[Test]
35+
procedure TestManageReferencedObjectProperty;
36+
[Test]
37+
procedure TestSetReferencedObject_SameValueNoOp;
38+
[Test]
39+
procedure TestMultipleReferees;
40+
end;
41+
42+
implementation
43+
44+
uses
45+
SysUtils,
46+
Classes;
47+
48+
{ TTestBoldExternalizedReferences }
49+
50+
procedure TTestBoldExternalizedReferences.Setup;
51+
begin
52+
FList := TBoldExternalizedReferenceList.Create;
53+
end;
54+
55+
procedure TTestBoldExternalizedReferences.TearDown;
56+
begin
57+
FList.Free;
58+
end;
59+
60+
procedure TTestBoldExternalizedReferences.TestCreate;
61+
begin
62+
Assert.IsNotNull(FList);
63+
end;
64+
65+
procedure TTestBoldExternalizedReferences.TestCountEmpty;
66+
begin
67+
Assert.AreEqual(0, FList.Count);
68+
end;
69+
70+
procedure TTestBoldExternalizedReferences.TestSetAndGetReferencedObject;
71+
var
72+
Referee, Referenced: TObject;
73+
begin
74+
Referee := TObject.Create;
75+
Referenced := TObject.Create;
76+
try
77+
FList.ReferencedObjects[Referee] := Referenced;
78+
Assert.AreSame(Referenced, FList.ReferencedObjects[Referee]);
79+
finally
80+
Referee.Free;
81+
Referenced.Free;
82+
end;
83+
end;
84+
85+
procedure TTestBoldExternalizedReferences.TestGetReferencedObject_NotFound;
86+
var
87+
Referee: TObject;
88+
begin
89+
Referee := TObject.Create;
90+
try
91+
Assert.IsNull(FList.ReferencedObjects[Referee]);
92+
finally
93+
Referee.Free;
94+
end;
95+
end;
96+
97+
procedure TTestBoldExternalizedReferences.TestCountAfterAdd;
98+
var
99+
Referee1, Referee2, Referenced1, Referenced2: TObject;
100+
begin
101+
Referee1 := TObject.Create;
102+
Referee2 := TObject.Create;
103+
Referenced1 := TObject.Create;
104+
Referenced2 := TObject.Create;
105+
try
106+
FList.ReferencedObjects[Referee1] := Referenced1;
107+
Assert.AreEqual(1, FList.Count);
108+
109+
FList.ReferencedObjects[Referee2] := Referenced2;
110+
Assert.AreEqual(2, FList.Count);
111+
finally
112+
Referee1.Free;
113+
Referee2.Free;
114+
Referenced1.Free;
115+
Referenced2.Free;
116+
end;
117+
end;
118+
119+
procedure TTestBoldExternalizedReferences.TestSetReferencedObject_Replace;
120+
var
121+
Referee, Referenced1, Referenced2: TObject;
122+
begin
123+
Referee := TObject.Create;
124+
Referenced1 := TObject.Create;
125+
Referenced2 := TObject.Create;
126+
try
127+
FList.ReferencedObjects[Referee] := Referenced1;
128+
Assert.AreSame(Referenced1, FList.ReferencedObjects[Referee]);
129+
Assert.AreEqual(1, FList.Count);
130+
131+
FList.ReferencedObjects[Referee] := Referenced2;
132+
Assert.AreSame(Referenced2, FList.ReferencedObjects[Referee]);
133+
Assert.AreEqual(1, FList.Count); // Count should still be 1 after replacement
134+
finally
135+
Referee.Free;
136+
Referenced1.Free;
137+
Referenced2.Free;
138+
end;
139+
end;
140+
141+
procedure TTestBoldExternalizedReferences.TestSetReferencedObject_RemoveWithNil;
142+
var
143+
Referee, Referenced: TObject;
144+
begin
145+
Referee := TObject.Create;
146+
Referenced := TObject.Create;
147+
try
148+
FList.ReferencedObjects[Referee] := Referenced;
149+
Assert.AreEqual(1, FList.Count);
150+
151+
FList.ReferencedObjects[Referee] := nil;
152+
Assert.AreEqual(0, FList.Count);
153+
Assert.IsNull(FList.ReferencedObjects[Referee]);
154+
finally
155+
Referee.Free;
156+
Referenced.Free;
157+
end;
158+
end;
159+
160+
procedure TTestBoldExternalizedReferences.TestManageReferencedObjectProperty;
161+
begin
162+
Assert.IsFalse(FList.ManageReferencedObject);
163+
164+
FList.ManageReferencedObject := True;
165+
Assert.IsTrue(FList.ManageReferencedObject);
166+
167+
FList.ManageReferencedObject := False;
168+
Assert.IsFalse(FList.ManageReferencedObject);
169+
end;
170+
171+
procedure TTestBoldExternalizedReferences.TestSetReferencedObject_SameValueNoOp;
172+
var
173+
Referee, Referenced: TObject;
174+
begin
175+
Referee := TObject.Create;
176+
Referenced := TObject.Create;
177+
try
178+
FList.ReferencedObjects[Referee] := Referenced;
179+
Assert.AreEqual(1, FList.Count);
180+
181+
// Setting same value should be a no-op
182+
FList.ReferencedObjects[Referee] := Referenced;
183+
Assert.AreEqual(1, FList.Count);
184+
Assert.AreSame(Referenced, FList.ReferencedObjects[Referee]);
185+
finally
186+
Referee.Free;
187+
Referenced.Free;
188+
end;
189+
end;
190+
191+
procedure TTestBoldExternalizedReferences.TestMultipleReferees;
192+
var
193+
Referee1, Referee2, Referee3: TObject;
194+
Referenced1, Referenced2, Referenced3: TObject;
195+
begin
196+
Referee1 := TObject.Create;
197+
Referee2 := TObject.Create;
198+
Referee3 := TObject.Create;
199+
Referenced1 := TObject.Create;
200+
Referenced2 := TObject.Create;
201+
Referenced3 := TObject.Create;
202+
try
203+
FList.ReferencedObjects[Referee1] := Referenced1;
204+
FList.ReferencedObjects[Referee2] := Referenced2;
205+
FList.ReferencedObjects[Referee3] := Referenced3;
206+
207+
Assert.AreEqual(3, FList.Count);
208+
Assert.AreSame(Referenced1, FList.ReferencedObjects[Referee1]);
209+
Assert.AreSame(Referenced2, FList.ReferencedObjects[Referee2]);
210+
Assert.AreSame(Referenced3, FList.ReferencedObjects[Referee3]);
211+
finally
212+
Referee1.Free;
213+
Referee2.Free;
214+
Referee3.Free;
215+
Referenced1.Free;
216+
Referenced2.Free;
217+
Referenced3.Free;
218+
end;
219+
end;
220+
221+
initialization
222+
TDUnitX.RegisterTestFixture(TTestBoldExternalizedReferences);
223+
224+
end.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
unit Test.BoldStubs;
2+
3+
interface
4+
5+
uses
6+
DUnitX.TestFramework,
7+
BoldStubs;
8+
9+
type
10+
[TestFixture]
11+
TTestBoldStubs = class
12+
public
13+
[Test]
14+
procedure TestTraceLogAssigned;
15+
[Test]
16+
procedure TestTraceLogReturnsInstance;
17+
[Test]
18+
procedure TestTraceLogReturnsSameInstance;
19+
[Test]
20+
procedure TestTraceLogSystemMessage;
21+
[Test]
22+
procedure TestTraceLogSystemMessageWithFormat;
23+
[Test]
24+
procedure TestTraceLogLogFileDir;
25+
[Test]
26+
procedure TestInSpanFetch_ReturnsFalse;
27+
[Test]
28+
procedure TestPrefetchDerivedMember_DoesNotRaise;
29+
end;
30+
31+
implementation
32+
33+
uses
34+
SysUtils;
35+
36+
{ TTestBoldStubs }
37+
38+
procedure TTestBoldStubs.TestTraceLogAssigned;
39+
begin
40+
Assert.IsTrue(TraceLogAssigned);
41+
end;
42+
43+
procedure TTestBoldStubs.TestTraceLogReturnsInstance;
44+
begin
45+
Assert.IsNotNull(TraceLog);
46+
end;
47+
48+
procedure TTestBoldStubs.TestTraceLogReturnsSameInstance;
49+
var
50+
Log1, Log2: TTraceLog;
51+
begin
52+
Log1 := TraceLog;
53+
Log2 := TraceLog;
54+
Assert.AreSame(Log1, Log2);
55+
end;
56+
57+
procedure TTestBoldStubs.TestTraceLogSystemMessage;
58+
begin
59+
// Should not raise, delegates to BoldLog
60+
TraceLog.SystemMessage('Test message', ekInfo);
61+
TraceLog.SystemMessage('Warning message', ekWarning);
62+
TraceLog.SystemMessage('Error message', ekError);
63+
TraceLog.SystemMessage('Debug message', ekDebug);
64+
Assert.Pass;
65+
end;
66+
67+
procedure TTestBoldStubs.TestTraceLogSystemMessageWithFormat;
68+
begin
69+
// Should not raise, delegates to BoldLog
70+
TraceLog.SystemMessage('Test %s %d', ['string', 42], ekInfo);
71+
TraceLog.SystemMessage('Warning %d', [123], ekWarning);
72+
Assert.Pass;
73+
end;
74+
75+
procedure TTestBoldStubs.TestTraceLogLogFileDir;
76+
var
77+
Dir: string;
78+
begin
79+
Dir := TraceLog.LogFileDir;
80+
Assert.IsNotEmpty(Dir);
81+
// Should return path of executable
82+
Assert.AreEqual(ExtractFilePath(ParamStr(0)), Dir);
83+
end;
84+
85+
procedure TTestBoldStubs.TestInSpanFetch_ReturnsFalse;
86+
begin
87+
Assert.IsFalse(InSpanFetch);
88+
end;
89+
90+
procedure TTestBoldStubs.TestPrefetchDerivedMember_DoesNotRaise;
91+
begin
92+
// Should not raise - it's a no-op stub
93+
PrefetchDerivedMember(nil);
94+
Assert.Pass;
95+
end;
96+
97+
initialization
98+
TDUnitX.RegisterTestFixture(TTestBoldStubs);
99+
100+
end.

0 commit comments

Comments
 (0)