Skip to content

Commit 39deb74

Browse files
committed
Created NsJavaLocatorTest with a few tests
1 parent dd96873 commit 39deb74

4 files changed

Lines changed: 508 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
# Lazarus local files (user-specific info)
2121
*.lps
22+
*.fpcunit.ini
2223

2324
# Lazarus backups and unit output folders.
2425
# These can be changed by user in Lazarus/project options.

CoreTest.pas

Lines changed: 367 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,367 @@
1+
unit CoreTest;
2+
3+
{$mode objfpc}{$H+}
4+
5+
interface
6+
7+
uses
8+
Classes, SysUtils, Core, Utils, fpcunit, fgl, testregistry;
9+
10+
type
11+
12+
{ NsJavaLocatorTest }
13+
14+
NsJavaLocatorTest = class(TTestCase)
15+
published
16+
procedure TestEvaluator();
17+
procedure TestIsOptimal;
18+
end;
19+
20+
{ TSimpleSettings }
21+
22+
TSimpleSettings = class(TObject, TSettings)
23+
public
24+
FRegistryPaths : TVStringList;
25+
FEnvironmentVariables : TVStringList;
26+
FFilePaths : TVStringList;
27+
FFilteredPaths : TVStringList;
28+
FSkipOSPath : Boolean;
29+
FMinVersion : VString;
30+
FMaxVersion : VString;
31+
FOptimalVersion : VString;
32+
33+
function GetRegistryPaths() : TVStringList;
34+
function GetEnvironmentVariables() : TVStringList;
35+
function GetFilePaths() : TVStringList;
36+
function GetFilteredPaths() : TVStringList;
37+
function GetSkipOSPath() : Boolean;
38+
function GetMinVersion() : VString;
39+
function GetMaxVersion() : VString;
40+
function GetOptimalVersion() : VString;
41+
end;
42+
43+
implementation
44+
45+
{ TSimpleSettings }
46+
47+
function TSimpleSettings.GetRegistryPaths : TVStringList;
48+
begin
49+
Result := FRegistryPaths;
50+
end;
51+
52+
function TSimpleSettings.GetEnvironmentVariables : TVStringList;
53+
begin
54+
Result := FEnvironmentVariables;
55+
end;
56+
57+
function TSimpleSettings.GetFilePaths : TVStringList;
58+
begin
59+
Result := FFilePaths;
60+
end;
61+
62+
function TSimpleSettings.GetFilteredPaths : TVStringList;
63+
begin
64+
Result := FFilteredPaths;
65+
end;
66+
67+
function TSimpleSettings.GetSkipOSPath : Boolean;
68+
begin
69+
Result := FSkipOSPath;
70+
end;
71+
72+
function TSimpleSettings.GetMinVersion : VString;
73+
begin
74+
Result := FMinVersion;
75+
end;
76+
77+
function TSimpleSettings.GetMaxVersion : VString;
78+
begin
79+
Result := FMaxVersion;
80+
end;
81+
82+
function TSimpleSettings.GetOptimalVersion : VString;
83+
begin
84+
Result := FOptimalVersion;
85+
end;
86+
87+
procedure NsJavaLocatorTest.TestEvaluator();
88+
89+
type
90+
TInstallations = specialize TFPGObjectList<TJavaInstallation>;
91+
92+
var
93+
eval : TEvaluator;
94+
Installations : TInstallations;
95+
Settings : TSimpleSettings;
96+
inst1, inst2, inst3, inst4, inst5, inst6 : TJavaInstallation;
97+
98+
begin
99+
Installations := TInstallations.Create(True);
100+
inst1 := TJavaInstallation.Create();
101+
inst1.Architecture := TArchitecture.x64;
102+
inst1.Version := 7;
103+
inst1.Build := 180;
104+
Installations.Add(inst1);
105+
inst2 := TJavaInstallation.Create();
106+
inst2.Architecture := TArchitecture.x64;
107+
inst2.Version := 8;
108+
inst2.Build := 380;
109+
Installations.Add(inst2);
110+
inst3 := TJavaInstallation.Create();
111+
inst3.Architecture := TArchitecture.x86;
112+
inst3.Version := 8;
113+
inst3.Build := 180;
114+
Installations.Add(inst3);
115+
inst4 := TJavaInstallation.Create();
116+
inst4.Architecture := TArchitecture.x86;
117+
inst4.Version := 11;
118+
inst4.Build := 20;
119+
Installations.Add(inst4);
120+
inst5 := TJavaInstallation.Create();
121+
inst5.Architecture := TArchitecture.x64;
122+
inst5.Version := 11;
123+
inst5.Build := 5;
124+
Installations.Add(inst5);
125+
inst6 := TJavaInstallation.Create();
126+
inst6.Architecture := TArchitecture.UNKNOWN;
127+
inst6.Version := 21;
128+
inst6.Build := 13;
129+
Installations.Add(inst6);
130+
131+
Settings := TSimpleSettings.Create;
132+
eval := TEvaluator.Create(Installations, Settings, Nil);
133+
eval.Process();
134+
AssertTrue(inst5.Equals(Installations.Items[0]));
135+
AssertTrue(inst2.Equals(Installations.Items[1]));
136+
AssertTrue(inst1.Equals(Installations.Items[2]));
137+
AssertTrue(inst4.Equals(Installations.Items[3]));
138+
AssertTrue(inst3.Equals(Installations.Items[4]));
139+
AssertTrue(inst6.Equals(Installations.Items[5]));
140+
141+
Settings.FOptimalVersion := '<9';
142+
inst6.Architecture := TArchitecture.ia64;
143+
eval.Process();
144+
AssertTrue(inst2.Equals(Installations.Items[0]));
145+
AssertTrue(inst1.Equals(Installations.Items[1]));
146+
AssertTrue(inst3.Equals(Installations.Items[2]));
147+
AssertTrue(inst6.Equals(Installations.Items[3]));
148+
AssertTrue(inst5.Equals(Installations.Items[4]));
149+
AssertTrue(inst4.Equals(Installations.Items[5]));
150+
151+
Installations.Free;
152+
Settings.Free;
153+
end;
154+
155+
procedure NsJavaLocatorTest.TestIsOptimal();
156+
157+
var
158+
opt : TVersionCondition;
159+
inst : TJavaInstallation;
160+
161+
begin
162+
opt.Valid := False;
163+
inst := TJavaInstallation.Create();
164+
try
165+
// Equal
166+
opt.CompareType := TCompareType.equal;
167+
AssertFalse(ConditionTrue(opt, inst)); // Invalid = Invalid
168+
inst.Version := 2;
169+
AssertFalse(ConditionTrue(opt, inst)); // 2 = Invalid
170+
inst.Build := 2;
171+
AssertFalse(ConditionTrue(opt, inst)); // 2.2 = Invalid
172+
inst.Version := -1;
173+
inst.Build := -1;
174+
opt.Version := 2;
175+
opt.Valid := True;
176+
opt.Build := -1;
177+
AssertFalse(ConditionTrue(opt, inst)); // Invalid = 2
178+
inst.Version := 1;
179+
AssertFalse(ConditionTrue(opt, inst)); // 1 = 2
180+
inst.Version := 2;
181+
AssertTrue(ConditionTrue(opt, inst)); // 2 = 2
182+
opt.Build := 4;
183+
AssertFalse(ConditionTrue(opt, inst)); // 2 = 2.4
184+
inst.Build := 3;
185+
AssertFalse(ConditionTrue(opt, inst)); // 2.3 = 2.4
186+
inst.Build := 4;
187+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 = 2.4
188+
opt.Build := -1;
189+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 = 2
190+
191+
// Less
192+
inst.Version := 2;
193+
inst.Build := 4;
194+
opt.Version := 2;
195+
opt.Build := -1;
196+
opt.CompareType := TCompareType.less;
197+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 < 2
198+
opt.Build := 3;
199+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 < 2.3
200+
opt.Build := -1;
201+
inst.Version := 1;
202+
AssertTrue(ConditionTrue(opt, inst)); // 1.4 < 2
203+
inst.Version := 2;
204+
opt.Build := 4;
205+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 < 2.4
206+
opt.Build := 5;
207+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 < 2.5
208+
inst.Build := -1;
209+
AssertFalse(ConditionTrue(opt, inst)); // 2 < 2.5
210+
inst.Version := -1;
211+
AssertFalse(ConditionTrue(opt, inst)); // Invalid < 2.5
212+
inst.Version := 2;
213+
inst.Build := 6;
214+
AssertFalse(ConditionTrue(opt, inst)); // 2.6 < 2.5
215+
inst.Version := 1;
216+
inst.Build := 5;
217+
AssertTrue(ConditionTrue(opt, inst)); // 1.5 < 2.5
218+
inst.Build := 6;
219+
AssertTrue(ConditionTrue(opt, inst)); // 1.6 < 2.5
220+
inst.Version := 3;
221+
AssertFalse(ConditionTrue(opt, inst)); // 3.6 < 2.5
222+
opt.Build := -1;
223+
AssertFalse(ConditionTrue(opt, inst)); // 3.6 < 2
224+
inst.Build := -1;
225+
AssertFalse(ConditionTrue(opt, inst)); // 3 < 2
226+
inst.Version := 2;
227+
AssertFalse(ConditionTrue(opt, inst)); // 2 < 2
228+
inst.Version := 1;
229+
AssertTrue(ConditionTrue(opt, inst)); // 1 < 2
230+
231+
// LessOrEqual
232+
inst.Version := 2;
233+
inst.Build := 4;
234+
opt.Version := 2;
235+
opt.Build := -1;
236+
opt.CompareType := TCompareType.lessOrEqual;
237+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 <= 2
238+
opt.Build := 3;
239+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 <= 2.3
240+
opt.Build := -1;
241+
inst.Version := 1;
242+
AssertTrue(ConditionTrue(opt, inst)); // 1.4 <= 2
243+
inst.Version := 2;
244+
opt.Build := 4;
245+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 <= 2.4
246+
opt.Build := 5;
247+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 <= 2.5
248+
inst.Build := -1;
249+
AssertFalse(ConditionTrue(opt, inst)); // 2 <= 2.5
250+
inst.Version := -1;
251+
AssertFalse(ConditionTrue(opt, inst)); // Invalid <= 2.5
252+
inst.Version := 2;
253+
inst.Build := 6;
254+
AssertFalse(ConditionTrue(opt, inst)); // 2.6 <= 2.5
255+
inst.Version := 1;
256+
inst.Build := 5;
257+
AssertTrue(ConditionTrue(opt, inst)); // 1.5 <= 2.5
258+
inst.Build := 6;
259+
AssertTrue(ConditionTrue(opt, inst)); // 1.6 <= 2.5
260+
inst.Version := 3;
261+
AssertFalse(ConditionTrue(opt, inst)); // 3.6 <= 2.5
262+
opt.Build := -1;
263+
AssertFalse(ConditionTrue(opt, inst)); // 3.6 <= 2
264+
inst.Build := -1;
265+
AssertFalse(ConditionTrue(opt, inst)); // 3 <= 2
266+
inst.Version := 2;
267+
AssertTrue(ConditionTrue(opt, inst)); // 2 <= 2
268+
inst.Version := 1;
269+
AssertTrue(ConditionTrue(opt, inst)); // 1 <= 2
270+
271+
// More
272+
inst.Version := 2;
273+
inst.Build := 4;
274+
opt.Version := 2;
275+
opt.Build := -1;
276+
opt.CompareType := TCompareType.more;
277+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 > 2
278+
opt.Build := 4;
279+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 > 2.4
280+
opt.Build := -1;
281+
inst.Version := 3;
282+
AssertTrue(ConditionTrue(opt, inst)); // 3.4 > 2
283+
inst.Version := 2;
284+
opt.Build := 5;
285+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 > 2.5
286+
opt.Build := 3;
287+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 > 2.3
288+
inst.Build := -1;
289+
AssertFalse(ConditionTrue(opt, inst)); // 2 > 2.3
290+
inst.Version := -1;
291+
AssertFalse(ConditionTrue(opt, inst)); // Invalid > 2.3
292+
inst.Version := 2;
293+
inst.Build := 2;
294+
AssertFalse(ConditionTrue(opt, inst)); // 2.2 > 2.3
295+
inst.Version := 3;
296+
inst.Build := 1;
297+
AssertTrue(ConditionTrue(opt, inst)); // 3.1 > 2.3
298+
inst.Build := 6;
299+
AssertTrue(ConditionTrue(opt, inst)); // 3.6 > 2.3
300+
inst.Build := 2;
301+
AssertTrue(ConditionTrue(opt, inst)); // 3.2 > 2.3
302+
inst.Version := 2;
303+
AssertFalse(ConditionTrue(opt, inst)); // 2.2 > 2.3
304+
inst.Version := 1;
305+
AssertFalse(ConditionTrue(opt, inst)); // 1.2 > 2.3
306+
opt.Build := -1;
307+
AssertFalse(ConditionTrue(opt, inst)); // 1.2 > 2
308+
inst.Build := -1;
309+
AssertFalse(ConditionTrue(opt, inst)); // 1 > 2
310+
inst.Version := 2;
311+
AssertFalse(ConditionTrue(opt, inst)); // 2 > 2
312+
inst.Version := 3;
313+
AssertTrue(ConditionTrue(opt, inst)); // 3 > 2
314+
315+
// MoreOrEqual
316+
inst.Version := 2;
317+
inst.Build := 4;
318+
opt.Version := 2;
319+
opt.Build := -1;
320+
opt.CompareType := TCompareType.moreOrEqual;
321+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 >= 2
322+
opt.Build := 4;
323+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 >= 2.4
324+
opt.Build := -1;
325+
inst.Version := 3;
326+
AssertTrue(ConditionTrue(opt, inst)); // 3.4 >= 2
327+
inst.Version := 2;
328+
opt.Build := 5;
329+
AssertFalse(ConditionTrue(opt, inst)); // 2.4 >= 2.5
330+
opt.Build := 3;
331+
AssertTrue(ConditionTrue(opt, inst)); // 2.4 >= 2.3
332+
inst.Build := -1;
333+
AssertFalse(ConditionTrue(opt, inst)); // 2 >= 2.3
334+
inst.Version := -1;
335+
AssertFalse(ConditionTrue(opt, inst)); // Invalid >= 2.3
336+
inst.Version := 2;
337+
inst.Build := 2;
338+
AssertFalse(ConditionTrue(opt, inst)); // 2.2 >= 2.3
339+
inst.Version := 3;
340+
inst.Build := 1;
341+
AssertTrue(ConditionTrue(opt, inst)); // 3.1 >= 2.3
342+
inst.Build := 6;
343+
AssertTrue(ConditionTrue(opt, inst)); // 3.6 >= 2.3
344+
inst.Build := 2;
345+
AssertTrue(ConditionTrue(opt, inst)); // 3.2 >= 2.3
346+
inst.Version := 2;
347+
AssertFalse(ConditionTrue(opt, inst)); // 2.2 >= 2.3
348+
inst.Version := 1;
349+
AssertFalse(ConditionTrue(opt, inst)); // 1.2 >= 2.3
350+
opt.Build := -1;
351+
AssertFalse(ConditionTrue(opt, inst)); // 1.2 >= 2
352+
inst.Build := -1;
353+
AssertFalse(ConditionTrue(opt, inst)); // 1 >= 2
354+
inst.Version := 2;
355+
AssertTrue(ConditionTrue(opt, inst)); // 2 >= 2
356+
inst.Version := 3;
357+
AssertTrue(ConditionTrue(opt, inst)); // 3 >= 2
358+
finally
359+
inst.Free;
360+
end;
361+
end;
362+
363+
initialization
364+
365+
RegisterTest(NsJavaLocatorTest);
366+
end.
367+

0 commit comments

Comments
 (0)