@@ -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);
148149end ;
149150
150- procedure TTestStartUpParameter.TestParameter (TrackerListOrder: TTrackerListOrder);
151+ // procedure TTestStartUpParameter.TestParameter(TrackerListOrder: TTrackerListOrder);
152+ procedure TTestStartUpParameter.TestParameter (const StartupParameter: TStartupParameter);
151153begin
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 ;
156169end ;
157170
158171procedure TTestStartUpParameter.DownloadPreTestTrackerList ;
@@ -196,7 +209,7 @@ procedure TTestStartUpParameter.CopyTrackerEndResultToVerifyTrackerResult;
196209end ;
197210
198211procedure TTestStartUpParameter.CreateEmptyTorrent (
199- TrackerListOrder: TTrackerListOrder );
212+ const StartupParameter: TStartupParameter );
200213begin
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.' );
225238end ;
226239
227- procedure TTestStartUpParameter.CreateFilledTorrent (TrackerListOrder: TTrackerListOrder);
240+ procedure TTestStartUpParameter.CreateFilledTorrent (
241+ const StartupParameter: TStartupParameter);
228242begin
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
285299var
286300 OK: boolean;
301+ StartupParameter: TStartupParameter;
287302begin
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);
319338end ;
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);
323342begin
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;
362381var
363382 TrackerListOrder: TTrackerListOrder;
364383 TrackerURL: string;
384+ StartupParameter: TStartupParameter;
365385const
366386 ANNOUNCE = ' /announce' ;
367387 ANNOUNCE_PHP = ' /announce.php' ;
368388begin
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 ;
396421end ;
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;
400480var
401481 TrackerListOrder: TTrackerListOrder;
482+ StartupParameter: TStartupParameter;
402483begin
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