Skip to content

Commit 032a235

Browse files
Update unit test for -SAC
1 parent 1715174 commit 032a235

File tree

2 files changed

+128
-35
lines changed

2 files changed

+128
-35
lines changed

source/test/test_miscellaneous.pas

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,16 @@ interface
99
Classes, SysUtils, torrent_miscellaneous;
1010

1111
type
12-
TVerifyTrackerResult = record
12+
TStartupParameter = record
1313
TrackerListOrder: TTrackerListOrder;
14+
SkipAnnounceCheck: boolean;
15+
SourcePresent: boolean;
16+
SourceText: UTF8String;
17+
end;
18+
19+
20+
TVerifyTrackerResult = record
21+
StartupParameter: TStartupParameter;
1422

1523
TrackerOriginal,
1624
TrackerAdded,
@@ -469,7 +477,7 @@ function VerifyTrackerResult(var VerifyTracker: TVerifyTrackerResult): boolean;
469477
end;
470478

471479
//Must verify if the output is what we expected
472-
case VerifyTracker.TrackerListOrder of
480+
case VerifyTracker.StartupParameter.TrackerListOrder of
473481
// Console parameter: -U0
474482
// Insert new trackers list BEFORE, the original trackers list inside the torrent file.
475483
// And remove possible duplicated trackers from the ORIGINAL trackers list.

source/test/test_start_up_parameter.pas

Lines changed: 118 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -62,25 +62,26 @@ TTestStartUpParameter = class(TTestCase)
6262
FConsoleLogData: TConsoleLogData;
6363

6464
function ReadConsoleLogFile: boolean;
65-
procedure TestParameter(TrackerListOrder: TTrackerListOrder);
65+
procedure TestParameter(const StartupParameter: TStartupParameter);
6666
procedure DownloadPreTestTrackerList;
6767
procedure LoadTrackerListAddAndRemoved;
6868
procedure CallExecutableFile;
6969
procedure CopyTrackerEndResultToVerifyTrackerResult;
70-
procedure CreateEmptyTorrent(TrackerListOrder: TTrackerListOrder);
70+
procedure CreateEmptyTorrent(const StartupParameter: TStartupParameter);
7171
procedure TestEmptyTorrentResult;
72-
procedure CreateFilledTorrent(TrackerListOrder: TTrackerListOrder);
72+
procedure CreateFilledTorrent(const StartupParameter: TStartupParameter);
7373
procedure DownloadNewTrackonTrackers;
7474
procedure Test_Paramater_Ux(TrackerListOrder: TTrackerListOrder);
75-
procedure Add_One_URL(TrackerListOrder: TTrackerListOrder;
75+
procedure Add_One_URL(const StartupParameter: TStartupParameter;
7676
const tracker_URL: string; TestMustBeSuccess: boolean);
7777

7878
protected
7979
procedure SetUp; override;
8080
procedure TearDown; override;
8181
published
8282
procedure Test_Tracker_UserInput_All_Different_URL;
83-
procedure Test_Create_Empty_Torrent_And_Then_Filled_It_All_Mode;
83+
procedure Test_Tracker_UserInput_All_Different_URL_And_SAC;
84+
procedure Test_Create_Empty_Torrent_And_Then_Filled_It_All_List_Order_Mode;
8485

8586
procedure Test_Paramater_U0;
8687
procedure Test_Paramater_U1;
@@ -147,12 +148,24 @@ procedure TTestStartUpParameter.Test_Paramater_U7;
147148
Test_Paramater_Ux(tloRandomize);
148149
end;
149150

150-
procedure TTestStartUpParameter.TestParameter(TrackerListOrder: TTrackerListOrder);
151+
//procedure TTestStartUpParameter.TestParameter(TrackerListOrder: TTrackerListOrder);
152+
procedure TTestStartUpParameter.TestParameter(const StartupParameter: TStartupParameter);
151153
begin
152-
FVerifyTrackerResult.TrackerListOrder := TrackerListOrder;
154+
FVerifyTrackerResult.StartupParameter := StartupParameter;
153155

154156
//Fill in the command line parameter '-Ux', x = number
155-
FCommandLine := format('%s -U%d', [FFullPathToTorrent, Ord(TrackerListOrder)]);
157+
FCommandLine := format('%s -U%d', [FFullPathToTorrent,
158+
Ord(StartupParameter.TrackerListOrder)]);
159+
160+
if StartupParameter.SkipAnnounceCheck then
161+
begin
162+
FCommandLine := FCommandLine + ' -SAC';
163+
end;
164+
165+
if StartupParameter.SourcePresent then
166+
begin
167+
FCommandLine := FCommandLine + ' -SOURCE ' + StartupParameter.SourceText;
168+
end;
156169
end;
157170

158171
procedure TTestStartUpParameter.DownloadPreTestTrackerList;
@@ -196,7 +209,7 @@ procedure TTestStartUpParameter.CopyTrackerEndResultToVerifyTrackerResult;
196209
end;
197210

198211
procedure TTestStartUpParameter.CreateEmptyTorrent(
199-
TrackerListOrder: TTrackerListOrder);
212+
const StartupParameter: TStartupParameter);
200213
begin
201214
//write a empty remove trackers
202215
FVerifyTrackerResult.TrackerRemoved.Clear;
@@ -209,7 +222,7 @@ procedure TTestStartUpParameter.CreateEmptyTorrent(
209222
FILE_NAME_ADD_TRACKERS);
210223

211224
//Generate the command line parameter
212-
TestParameter(TrackerListOrder);
225+
TestParameter(StartupParameter);
213226

214227
//call the tracker editor exe file
215228
CallExecutableFile;
@@ -224,7 +237,8 @@ procedure TTestStartUpParameter.TestEmptyTorrentResult;
224237
'The tracker list should be empty.');
225238
end;
226239

227-
procedure TTestStartUpParameter.CreateFilledTorrent(TrackerListOrder: TTrackerListOrder);
240+
procedure TTestStartUpParameter.CreateFilledTorrent(
241+
const StartupParameter: TStartupParameter);
228242
begin
229243
DownloadNewTrackonTrackers;
230244

@@ -254,7 +268,7 @@ procedure TTestStartUpParameter.CreateFilledTorrent(TrackerListOrder: TTrackerLi
254268
FILE_NAME_ADD_TRACKERS);
255269

256270
//Generate the command line parameter
257-
TestParameter(TrackerListOrder);
271+
TestParameter(StartupParameter);
258272

259273
//call the tracker editor exe file
260274
CallExecutableFile;
@@ -284,10 +298,14 @@ procedure TTestStartUpParameter.Test_Paramater_Ux(TrackerListOrder: TTrackerList
284298

285299
var
286300
OK: boolean;
301+
StartupParameter: TStartupParameter;
287302
begin
288303
//Create a torrent with fix torrent items
289304
//this is the pre test condition
290-
CreateFilledTorrent(tloInsertNewBeforeAndKeepNewIntact);
305+
StartupParameter.TrackerListOrder := tloInsertNewBeforeAndKeepNewIntact;
306+
StartupParameter.SkipAnnounceCheck := False;
307+
StartupParameter.SourcePresent := False;
308+
CreateFilledTorrent(StartupParameter);
291309

292310
//Download all the trackers .txt files
293311
DownloadPreTestTrackerList;
@@ -296,7 +314,8 @@ procedure TTestStartUpParameter.Test_Paramater_Ux(TrackerListOrder: TTrackerList
296314
LoadTrackerListAddAndRemoved;
297315

298316
//Generate the command line parameter
299-
TestParameter(TrackerListOrder);
317+
StartupParameter.TrackerListOrder := TrackerListOrder;
318+
TestParameter(StartupParameter);
300319

301320
//call the tracker editor exe file
302321
CallExecutableFile;
@@ -318,7 +337,7 @@ procedure TTestStartUpParameter.Test_Paramater_Ux(TrackerListOrder: TTrackerList
318337
Check(FConsoleLogData.TorrentFilesCount = TEST_TORRENT_FILES_COUNT);
319338
end;
320339

321-
procedure TTestStartUpParameter.Add_One_URL(TrackerListOrder: TTrackerListOrder;
340+
procedure TTestStartUpParameter.Add_One_URL(const StartupParameter: TStartupParameter;
322341
const tracker_URL: string; TestMustBeSuccess: boolean);
323342
begin
324343
//add one tracker to the 'add_trackers'
@@ -329,7 +348,7 @@ procedure TTestStartUpParameter.Add_One_URL(TrackerListOrder: TTrackerListOrder;
329348
FILE_NAME_ADD_TRACKERS);
330349

331350
//Generate the command line parameter
332-
TestParameter(TrackerListOrder);
351+
TestParameter(StartupParameter);
333352

334353
//call the tracker editor exe file
335354
CallExecutableFile;
@@ -362,49 +381,115 @@ procedure TTestStartUpParameter.Test_Tracker_UserInput_All_Different_URL;
362381
var
363382
TrackerListOrder: TTrackerListOrder;
364383
TrackerURL: string;
384+
StartupParameter: TStartupParameter;
365385
const
366386
ANNOUNCE = '/announce';
367387
ANNOUNCE_PHP = '/announce.php';
368388
begin
389+
StartupParameter.SkipAnnounceCheck := False;
390+
StartupParameter.SourcePresent := False;
391+
369392
//Test if all the tracker update mode is working
370393
for TrackerListOrder in TTrackerListOrder do
371394
begin
395+
StartupParameter.TrackerListOrder := TrackerListOrder;
396+
372397
TrackerURL := 'udp://test.com';
373-
Add_One_URL(TrackerListOrder, TrackerURL, False);
374-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE, True);
375-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE_PHP, True);
398+
Add_One_URL(StartupParameter, TrackerURL, False);
399+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE, True);
400+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE_PHP, True);
376401

377402
TrackerURL := 'http://test.com';
378-
Add_One_URL(TrackerListOrder, TrackerURL, False);
379-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE, True);
380-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE_PHP, True);
403+
Add_One_URL(StartupParameter, TrackerURL, False);
404+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE, True);
405+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE_PHP, True);
381406

382407
TrackerURL := 'https://test.com';
383-
Add_One_URL(TrackerListOrder, TrackerURL, False);
384-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE, True);
385-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE_PHP, True);
408+
Add_One_URL(StartupParameter, TrackerURL, False);
409+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE, True);
410+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE_PHP, True);
386411

387412
//webtorrent may have NOT announce
388413
TrackerURL := 'ws://test.com';
389-
Add_One_URL(TrackerListOrder, TrackerURL, True);
390-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE, True);
414+
Add_One_URL(StartupParameter, TrackerURL, True);
415+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE, True);
391416

392417
TrackerURL := 'wss://test.com';
393-
Add_One_URL(TrackerListOrder, TrackerURL, True);
394-
Add_One_URL(TrackerListOrder, TrackerURL + ANNOUNCE, True);
418+
Add_One_URL(StartupParameter, TrackerURL, True);
419+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE, True);
395420
end;
396421
end;
397422

423+
procedure TTestStartUpParameter.Test_Tracker_UserInput_All_Different_URL_And_SAC;
424+
var
425+
TrackerListOrder: TTrackerListOrder;
426+
TrackerURL: string;
427+
StartupParameter: TStartupParameter;
428+
const
429+
ANNOUNCE = '/announce';
430+
ANNOUNCE_PHP = '/announce.php';
431+
ANNOUNCE_private = '/announce?abcd';
398432

399-
procedure TTestStartUpParameter.Test_Create_Empty_Torrent_And_Then_Filled_It_All_Mode;
433+
procedure TestStartUpParameter;
434+
begin
435+
Add_One_URL(StartupParameter, TrackerURL, True);
436+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE, True);
437+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE_PHP, True);
438+
Add_One_URL(StartupParameter, TrackerURL + ANNOUNCE_private, True);
439+
end;
440+
441+
procedure TestAllURL;
442+
begin
443+
//Test if all the tracker update mode is working
444+
for TrackerListOrder in TTrackerListOrder do
445+
begin
446+
StartupParameter.TrackerListOrder := TrackerListOrder;
447+
448+
TrackerURL := 'udp://test.com';
449+
TestStartUpParameter;
450+
451+
TrackerURL := 'http://test.com';
452+
TestStartUpParameter;
453+
454+
TrackerURL := 'https://test.com';
455+
TestStartUpParameter;
456+
457+
TrackerURL := 'ws://test.com';
458+
TestStartUpParameter;
459+
460+
TrackerURL := 'wss://test.com';
461+
TestStartUpParameter;
462+
end;
463+
end;
464+
465+
begin
466+
// Skip announce check.
467+
StartupParameter.SkipAnnounceCheck := True;
468+
StartupParameter.SourcePresent := False;
469+
TestAllURL;
470+
471+
// Skip announce check and add SOURCE
472+
StartupParameter.SkipAnnounceCheck := True;
473+
StartupParameter.SourcePresent := True;
474+
StartupParameter.SourceText := 'ABCDE';
475+
TestAllURL;
476+
end;
477+
478+
procedure TTestStartUpParameter.
479+
Test_Create_Empty_Torrent_And_Then_Filled_It_All_List_Order_Mode;
400480
var
401481
TrackerListOrder: TTrackerListOrder;
482+
StartupParameter: TStartupParameter;
402483
begin
403484
//Test if all the mode that support empty torrent creation
404485
//Empty torrent -> filled torrent -> empty torrent
405486

487+
StartupParameter.SkipAnnounceCheck := False;
488+
StartupParameter.SourcePresent := False;
489+
406490
for TrackerListOrder in TTrackerListOrder do
407491
begin
492+
StartupParameter.TrackerListOrder := TrackerListOrder;
408493

409494
//It is by design that it can not create a empty torrent
410495
//The 'KeepOriginalIntactAndRemoveNothing' prevent it from deleting the torrent
@@ -419,7 +504,7 @@ procedure TTestStartUpParameter.Test_Create_Empty_Torrent_And_Then_Filled_It_All
419504
continue;
420505

421506
//Create empty the torrent
422-
CreateEmptyTorrent(TrackerListOrder);
507+
CreateEmptyTorrent(StartupParameter);
423508
//check the exit code
424509
CheckEquals(0, FExitCode);
425510

@@ -431,7 +516,7 @@ procedure TTestStartUpParameter.Test_Create_Empty_Torrent_And_Then_Filled_It_All
431516
Check(FConsoleLogData.TorrentFilesCount = TEST_TORRENT_FILES_COUNT);
432517

433518
//fill the empty torrent with data
434-
CreateFilledTorrent(TrackerListOrder);
519+
CreateFilledTorrent(StartupParameter);
435520
//check the exit code
436521
CheckEquals(0, FExitCode);
437522

@@ -442,7 +527,7 @@ procedure TTestStartUpParameter.Test_Create_Empty_Torrent_And_Then_Filled_It_All
442527
Check(FConsoleLogData.TorrentFilesCount = TEST_TORRENT_FILES_COUNT);
443528

444529
//Create empty the torrent again
445-
CreateEmptyTorrent(TrackerListOrder);
530+
CreateEmptyTorrent(StartupParameter);
446531
//check the exit code
447532
CheckEquals(0, FExitCode);
448533

0 commit comments

Comments
 (0)