From e9af6accdd28aed209f0b4eed889c6a8a7fa58fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:06:34 +0200 Subject: [PATCH 1/9] Add new regression test for all possible group sizes --- .../Tests/TournamentAllPossibleGroupSizes.cs | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs diff --git a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs new file mode 100644 index 00000000..777018bf --- /dev/null +++ b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs @@ -0,0 +1,61 @@ +using Turnierplan.Core.Tournament; + +namespace Turnierplan.Core.Test.Regression.Tests; + +/// +/// This test creates match plans for all supported tournament group sizes. This test +/// was written to ensure the correct migration from JSON-based group match definitions +/// to the C#-based definitions. +/// +internal sealed class TournamentAllPossibleGroupSizes : TournamentRegressionTestBase +{ + public TournamentAllPossibleGroupSizes() + { + var counter = 1; + var group = Step(t => t.AddGroup('A', "Test")); + + // Initially for group with 2 teams + Step(t => + { + var t1 = t.AddTeam($"Test {counter++}"); + var t2 = t.AddTeam($"Test {counter++}"); + + t.AddGroupParticipant(group, t1); + t.AddGroupParticipant(group, t2); + + t.GenerateMatchPlan(new MatchPlanConfiguration + { + GroupRoundConfig = new GroupRoundConfig + { + GroupMatchOrder = GroupMatchOrder.Alternating, + GroupPhaseRounds = 0 + } + }); + }); + + Step(AddAnotherTeam); // group with 3 teams + Step(AddAnotherTeam); // group with 4 teams + Step(AddAnotherTeam); // group with 5 teams + Step(AddAnotherTeam); // group with 6 teams + Step(AddAnotherTeam); // group with 7 teams + Step(AddAnotherTeam); // group with 8 teams + Step(AddAnotherTeam); // group with 9 teams + + return; + + void AddAnotherTeam(Tournament.Tournament t) + { + var tNext = t.AddTeam($"Test {counter++}"); + t.AddGroupParticipant(group, tNext); + + t.GenerateMatchPlan(new MatchPlanConfiguration + { + GroupRoundConfig = new GroupRoundConfig + { + GroupMatchOrder = GroupMatchOrder.Alternating, + GroupPhaseRounds = 0 + } + }); + } + } +} From 674899ee6ff0141b485373132e42b8fc32d08583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:19:22 +0200 Subject: [PATCH 2/9] Fix bug and add handling of exceptional steps --- .../RegressionTestBase.cs | 40 +++++++++++++++++++ .../Tests/TournamentAllPossibleGroupSizes.cs | 10 +++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs b/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs index 4d5b1062..c5b065a7 100644 --- a/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs +++ b/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs @@ -49,6 +49,33 @@ protected TResult Step(Func step) return result; } + protected void ExceptionalStep(Action step) + where TException : Exception + { + if (_subject is null) + { + throw new InvalidOperationException($"Call '{nameof(Subject)}()' first to initialize the test subject."); + } + + TException? exception = null; + + try + { + step(_subject); + } + catch (TException e) + { + exception = e; + } + + if (exception is null) + { + throw new InvalidOperationException($"Expected the step to throw an exception of type '{typeof(TException).FullName}', but that did not happen."); + } + + AddExceptionalSaveState(exception); + } + private void AddSaveState() { _builder.Append('['); @@ -57,4 +84,17 @@ private void AddSaveState() _builder.AppendLine(); _builder.AppendSubject(_subject); } + + private void AddExceptionalSaveState(Exception exception) + { + _builder.Append('['); + _builder.Append(++_saveStateIndex); + _builder.Append(']'); + _builder.AppendLine(); + _builder.Append("[Exception] "); + _builder.Append(exception.GetType().FullName); + _builder.Append(": "); + _builder.AppendLine(exception.Message); + _builder.AppendSubject(_subject); + } } diff --git a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs index 777018bf..4658aa04 100644 --- a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs +++ b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs @@ -1,3 +1,4 @@ +using Turnierplan.Core.Exceptions; using Turnierplan.Core.Tournament; namespace Turnierplan.Core.Test.Regression.Tests; @@ -28,7 +29,7 @@ public TournamentAllPossibleGroupSizes() GroupRoundConfig = new GroupRoundConfig { GroupMatchOrder = GroupMatchOrder.Alternating, - GroupPhaseRounds = 0 + GroupPhaseRounds = 1 } }); }); @@ -41,6 +42,9 @@ public TournamentAllPossibleGroupSizes() Step(AddAnotherTeam); // group with 8 teams Step(AddAnotherTeam); // group with 9 teams + // Adding another team throws an exception because there exists no config for 10 teams + ExceptionalStep(AddAnotherTeam); + return; void AddAnotherTeam(Tournament.Tournament t) @@ -53,9 +57,9 @@ void AddAnotherTeam(Tournament.Tournament t) GroupRoundConfig = new GroupRoundConfig { GroupMatchOrder = GroupMatchOrder.Alternating, - GroupPhaseRounds = 0 + GroupPhaseRounds = 1 } - }); + }, clearMatches: true); } } } From c89f345afe3aceb31703203f1585e0866fa73b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:19:42 +0200 Subject: [PATCH 3/9] Rename methods --- src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs | 6 +++--- .../Tests/TournamentAllPossibleGroupSizes.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs b/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs index c5b065a7..840d7b6a 100644 --- a/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs +++ b/src/Turnierplan.Core.Test.Regression/RegressionTestBase.cs @@ -49,7 +49,7 @@ protected TResult Step(Func step) return result; } - protected void ExceptionalStep(Action step) + protected void StepWithException(Action step) where TException : Exception { if (_subject is null) @@ -73,7 +73,7 @@ protected void ExceptionalStep(Action step) throw new InvalidOperationException($"Expected the step to throw an exception of type '{typeof(TException).FullName}', but that did not happen."); } - AddExceptionalSaveState(exception); + AddSaveStateWithException(exception); } private void AddSaveState() @@ -85,7 +85,7 @@ private void AddSaveState() _builder.AppendSubject(_subject); } - private void AddExceptionalSaveState(Exception exception) + private void AddSaveStateWithException(Exception exception) { _builder.Append('['); _builder.Append(++_saveStateIndex); diff --git a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs index 4658aa04..bb8c109f 100644 --- a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs +++ b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleGroupSizes.cs @@ -43,7 +43,7 @@ public TournamentAllPossibleGroupSizes() Step(AddAnotherTeam); // group with 9 teams // Adding another team throws an exception because there exists no config for 10 teams - ExceptionalStep(AddAnotherTeam); + StepWithException(AddAnotherTeam); return; From 3c485f6f31b0a1a25e527c60e470884496e8504e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:19:58 +0200 Subject: [PATCH 4/9] Add excected output TournamentAllPossibleGroupSizes.out --- .../TournamentAllPossibleGroupSizes.out | 261 ++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleGroupSizes.out diff --git a/src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleGroupSizes.out b/src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleGroupSizes.out new file mode 100644 index 00000000..cfe3a386 --- /dev/null +++ b/src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleGroupSizes.out @@ -0,0 +1,261 @@ +[1] +reg_name;Private;False;0;0;0;0;0;0 +[2] +reg_name;Private;False;0;0;1;0;0;0 +G1;A;Test;0 +[3] +reg_name;Private;False;0;2;1;1;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +G1;A;Test;2 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +M4;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +[4] +reg_name;Private;False;0;3;1;3;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +G1;A;Test;3 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +M6;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M7;2;0;;G1/1;G1/2;;;1;True;False;;;;;;False +M8;3;0;;G1/2;G1/0;;;1;True;False;;;;;;False +[5] +reg_name;Private;False;0;4;1;6;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +G1;A;Test;4 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +M10;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M11;2;0;;G1/2;G1/3;;;1;True;False;;;;;;False +M12;3;0;;G1/0;G1/2;;;1;True;False;;;;;;False +M13;4;0;;G1/1;G1/3;;;1;True;False;;;;;;False +M14;5;0;;G1/3;G1/0;;;1;True;False;;;;;;False +M15;6;0;;G1/1;G1/2;;;1;True;False;;;;;;False +[6] +reg_name;Private;False;0;5;1;10;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +T16;Test 5;;False;0;0;0;0;0;0 +G1;A;Test;5 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +>16;1;5;0;0;0;0;0;0;0;0;0;0 +M17;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M18;2;0;;G1/2;G1/3;;;1;True;False;;;;;;False +M19;3;0;;G1/4;G1/0;;;1;True;False;;;;;;False +M20;4;0;;G1/1;G1/2;;;1;True;False;;;;;;False +M21;5;0;;G1/3;G1/4;;;1;True;False;;;;;;False +M22;6;0;;G1/2;G1/0;;;1;True;False;;;;;;False +M23;7;0;;G1/1;G1/4;;;1;True;False;;;;;;False +M24;8;0;;G1/0;G1/3;;;1;True;False;;;;;;False +M25;9;0;;G1/4;G1/2;;;1;True;False;;;;;;False +M26;10;0;;G1/3;G1/1;;;1;True;False;;;;;;False +[7] +reg_name;Private;False;0;6;1;15;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +T16;Test 5;;False;0;0;0;0;0;0 +T27;Test 6;;False;0;0;0;0;0;0 +G1;A;Test;6 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +>16;1;5;0;0;0;0;0;0;0;0;0;0 +>27;1;6;0;0;0;0;0;0;0;0;0;0 +M28;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M29;2;0;;G1/2;G1/3;;;1;True;False;;;;;;False +M30;3;0;;G1/4;G1/5;;;1;True;False;;;;;;False +M31;4;0;;G1/2;G1/0;;;1;True;False;;;;;;False +M32;5;0;;G1/5;G1/1;;;1;True;False;;;;;;False +M33;6;0;;G1/3;G1/4;;;1;True;False;;;;;;False +M34;7;0;;G1/0;G1/5;;;1;True;False;;;;;;False +M35;8;0;;G1/4;G1/2;;;1;True;False;;;;;;False +M36;9;0;;G1/3;G1/1;;;1;True;False;;;;;;False +M37;10;0;;G1/4;G1/0;;;1;True;False;;;;;;False +M38;11;0;;G1/5;G1/3;;;1;True;False;;;;;;False +M39;12;0;;G1/1;G1/2;;;1;True;False;;;;;;False +M40;13;0;;G1/0;G1/3;;;1;True;False;;;;;;False +M41;14;0;;G1/1;G1/4;;;1;True;False;;;;;;False +M42;15;0;;G1/2;G1/5;;;1;True;False;;;;;;False +[8] +reg_name;Private;False;0;7;1;21;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +T16;Test 5;;False;0;0;0;0;0;0 +T27;Test 6;;False;0;0;0;0;0;0 +T43;Test 7;;False;0;0;0;0;0;0 +G1;A;Test;7 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +>16;1;5;0;0;0;0;0;0;0;0;0;0 +>27;1;6;0;0;0;0;0;0;0;0;0;0 +>43;1;7;0;0;0;0;0;0;0;0;0;0 +M44;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M45;2;0;;G1/2;G1/3;;;1;True;False;;;;;;False +M46;3;0;;G1/4;G1/5;;;1;True;False;;;;;;False +M47;4;0;;G1/3;G1/6;;;1;True;False;;;;;;False +M48;5;0;;G1/0;G1/5;;;1;True;False;;;;;;False +M49;6;0;;G1/4;G1/2;;;1;True;False;;;;;;False +M50;7;0;;G1/5;G1/1;;;1;True;False;;;;;;False +M51;8;0;;G1/6;G1/4;;;1;True;False;;;;;;False +M52;9;0;;G1/2;G1/0;;;1;True;False;;;;;;False +M53;10;0;;G1/3;G1/4;;;1;True;False;;;;;;False +M54;11;0;;G1/1;G1/2;;;1;True;False;;;;;;False +M55;12;0;;G1/6;G1/0;;;1;True;False;;;;;;False +M56;13;0;;G1/2;G1/5;;;1;True;False;;;;;;False +M57;14;0;;G1/0;G1/3;;;1;True;False;;;;;;False +M58;15;0;;G1/1;G1/6;;;1;True;False;;;;;;False +M59;16;0;;G1/4;G1/0;;;1;True;False;;;;;;False +M60;17;0;;G1/5;G1/6;;;1;True;False;;;;;;False +M61;18;0;;G1/3;G1/1;;;1;True;False;;;;;;False +M62;19;0;;G1/6;G1/2;;;1;True;False;;;;;;False +M63;20;0;;G1/1;G1/4;;;1;True;False;;;;;;False +M64;21;0;;G1/5;G1/3;;;1;True;False;;;;;;False +[9] +reg_name;Private;False;0;8;1;28;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +T16;Test 5;;False;0;0;0;0;0;0 +T27;Test 6;;False;0;0;0;0;0;0 +T43;Test 7;;False;0;0;0;0;0;0 +T65;Test 8;;False;0;0;0;0;0;0 +G1;A;Test;8 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +>16;1;5;0;0;0;0;0;0;0;0;0;0 +>27;1;6;0;0;0;0;0;0;0;0;0;0 +>43;1;7;0;0;0;0;0;0;0;0;0;0 +>65;1;8;0;0;0;0;0;0;0;0;0;0 +M66;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M67;2;0;;G1/2;G1/3;;;1;True;False;;;;;;False +M68;3;0;;G1/4;G1/5;;;1;True;False;;;;;;False +M69;4;0;;G1/6;G1/7;;;1;True;False;;;;;;False +M70;5;0;;G1/0;G1/3;;;1;True;False;;;;;;False +M71;6;0;;G1/5;G1/1;;;1;True;False;;;;;;False +M72;7;0;;G1/2;G1/7;;;1;True;False;;;;;;False +M73;8;0;;G1/6;G1/4;;;1;True;False;;;;;;False +M74;9;0;;G1/0;G1/5;;;1;True;False;;;;;;False +M75;10;0;;G1/7;G1/3;;;1;True;False;;;;;;False +M76;11;0;;G1/1;G1/6;;;1;True;False;;;;;;False +M77;12;0;;G1/4;G1/2;;;1;True;False;;;;;;False +M78;13;0;;G1/0;G1/7;;;1;True;False;;;;;;False +M79;14;0;;G1/5;G1/6;;;1;True;False;;;;;;False +M80;15;0;;G1/3;G1/4;;;1;True;False;;;;;;False +M81;16;0;;G1/1;G1/2;;;1;True;False;;;;;;False +M82;17;0;;G1/6;G1/0;;;1;True;False;;;;;;False +M83;18;0;;G1/4;G1/7;;;1;True;False;;;;;;False +M84;19;0;;G1/2;G1/5;;;1;True;False;;;;;;False +M85;20;0;;G1/3;G1/1;;;1;True;False;;;;;;False +M86;21;0;;G1/4;G1/0;;;1;True;False;;;;;;False +M87;22;0;;G1/6;G1/2;;;1;True;False;;;;;;False +M88;23;0;;G1/7;G1/1;;;1;True;False;;;;;;False +M89;24;0;;G1/5;G1/3;;;1;True;False;;;;;;False +M90;25;0;;G1/2;G1/0;;;1;True;False;;;;;;False +M91;26;0;;G1/1;G1/4;;;1;True;False;;;;;;False +M92;27;0;;G1/3;G1/6;;;1;True;False;;;;;;False +M93;28;0;;G1/7;G1/5;;;1;True;False;;;;;;False +[10] +reg_name;Private;False;0;9;1;36;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +T16;Test 5;;False;0;0;0;0;0;0 +T27;Test 6;;False;0;0;0;0;0;0 +T43;Test 7;;False;0;0;0;0;0;0 +T65;Test 8;;False;0;0;0;0;0;0 +T94;Test 9;;False;0;0;0;0;0;0 +G1;A;Test;9 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +>16;1;5;0;0;0;0;0;0;0;0;0;0 +>27;1;6;0;0;0;0;0;0;0;0;0;0 +>43;1;7;0;0;0;0;0;0;0;0;0;0 +>65;1;8;0;0;0;0;0;0;0;0;0;0 +>94;1;9;0;0;0;0;0;0;0;0;0;0 +M95;1;0;;G1/0;G1/1;;;1;True;False;;;;;;False +M96;2;0;;G1/2;G1/3;;;1;True;False;;;;;;False +M97;3;0;;G1/4;G1/5;;;1;True;False;;;;;;False +M98;4;0;;G1/6;G1/7;;;1;True;False;;;;;;False +M99;5;0;;G1/8;G1/0;;;1;True;False;;;;;;False +M100;6;0;;G1/1;G1/2;;;1;True;False;;;;;;False +M101;7;0;;G1/3;G1/4;;;1;True;False;;;;;;False +M102;8;0;;G1/5;G1/6;;;1;True;False;;;;;;False +M103;9;0;;G1/7;G1/8;;;1;True;False;;;;;;False +M104;10;0;;G1/2;G1/0;;;1;True;False;;;;;;False +M105;11;0;;G1/5;G1/3;;;1;True;False;;;;;;False +M106;12;0;;G1/1;G1/4;;;1;True;False;;;;;;False +M107;13;0;;G1/8;G1/6;;;1;True;False;;;;;;False +M108;14;0;;G1/0;G1/3;;;1;True;False;;;;;;False +M109;15;0;;G1/4;G1/7;;;1;True;False;;;;;;False +M110;16;0;;G1/1;G1/6;;;1;True;False;;;;;;False +M111;17;0;;G1/2;G1/5;;;1;True;False;;;;;;False +M112;18;0;;G1/3;G1/8;;;1;True;False;;;;;;False +M113;19;0;;G1/0;G1/7;;;1;True;False;;;;;;False +M114;20;0;;G1/5;G1/1;;;1;True;False;;;;;;False +M115;21;0;;G1/4;G1/2;;;1;True;False;;;;;;False +M116;22;0;;G1/7;G1/3;;;1;True;False;;;;;;False +M117;23;0;;G1/6;G1/0;;;1;True;False;;;;;;False +M118;24;0;;G1/8;G1/2;;;1;True;False;;;;;;False +M119;25;0;;G1/3;G1/1;;;1;True;False;;;;;;False +M120;26;0;;G1/6;G1/4;;;1;True;False;;;;;;False +M121;27;0;;G1/7;G1/5;;;1;True;False;;;;;;False +M122;28;0;;G1/1;G1/8;;;1;True;False;;;;;;False +M123;29;0;;G1/4;G1/0;;;1;True;False;;;;;;False +M124;30;0;;G1/6;G1/2;;;1;True;False;;;;;;False +M125;31;0;;G1/5;G1/8;;;1;True;False;;;;;;False +M126;32;0;;G1/7;G1/1;;;1;True;False;;;;;;False +M127;33;0;;G1/0;G1/5;;;1;True;False;;;;;;False +M128;34;0;;G1/3;G1/6;;;1;True;False;;;;;;False +M129;35;0;;G1/8;G1/4;;;1;True;False;;;;;;False +M130;36;0;;G1/2;G1/7;;;1;True;False;;;;;;False +[11] +[Exception] Turnierplan.Core.Exceptions.TurnierplanException: No group match definitions exist for a group with 10 teams. +reg_name;Private;False;0;10;1;0;0;0 +T2;Test 1;;False;0;0;0;0;0;0 +T3;Test 2;;False;0;0;0;0;0;0 +T5;Test 3;;False;0;0;0;0;0;0 +T9;Test 4;;False;0;0;0;0;0;0 +T16;Test 5;;False;0;0;0;0;0;0 +T27;Test 6;;False;0;0;0;0;0;0 +T43;Test 7;;False;0;0;0;0;0;0 +T65;Test 8;;False;0;0;0;0;0;0 +T94;Test 9;;False;0;0;0;0;0;0 +T131;Test 10;;False;0;0;0;0;0;0 +G1;A;Test;10 +>2;1;1;0;0;0;0;0;0;0;0;0;0 +>3;1;2;0;0;0;0;0;0;0;0;0;0 +>5;1;3;0;0;0;0;0;0;0;0;0;0 +>9;1;4;0;0;0;0;0;0;0;0;0;0 +>16;1;5;0;0;0;0;0;0;0;0;0;0 +>27;1;6;0;0;0;0;0;0;0;0;0;0 +>43;1;7;0;0;0;0;0;0;0;0;0;0 +>65;1;8;0;0;0;0;0;0;0;0;0;0 +>94;1;9;0;0;0;0;0;0;0;0;0;0 +>131;1;10;0;0;0;0;0;0;0;0;0;0 \ No newline at end of file From 18e03a36ed31ee1c8167b14f2b5cdbf4fceacfe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:32:44 +0200 Subject: [PATCH 5/9] Add TODO --- src/Turnierplan.Core/Tournament/Tournament.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Turnierplan.Core/Tournament/Tournament.cs b/src/Turnierplan.Core/Tournament/Tournament.cs index 6b8cb1fa..ad565f0a 100644 --- a/src/Turnierplan.Core/Tournament/Tournament.cs +++ b/src/Turnierplan.Core/Tournament/Tournament.cs @@ -861,6 +861,8 @@ private void GenerateFinalsMatches(FinalsRoundConfig? config, int matchIndexOffs throw new TurnierplanException($"No pre-defined first finals round configuration exists for {_groups.Count} groups and {firstFinalsRoundMatchCount} matches."); } + // TODO: #411 - Do we need a check that no group has less teams than 'definition.RequiredTeamsPerGroup'? + for (var i = 0; i < definition.Matches.Count; i++) { var teamSelectorA = definition.Matches[i].TeamA; From 917b0b723366fa9f8c8cdb9fad95e8f4ee870c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:36:23 +0200 Subject: [PATCH 6/9] First version of regression test --- .../TournamentAllPossibleFinalsPhases.cs | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs diff --git a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs new file mode 100644 index 00000000..989a2817 --- /dev/null +++ b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs @@ -0,0 +1,96 @@ +using Turnierplan.Core.Exceptions; +using Turnierplan.Core.Tournament; + +namespace Turnierplan.Core.Test.Regression.Tests; + +/// +/// This test creates match plans for all supported finals phases. This test was written to ensure +/// the correct migration from JSON-based group match definitions to the C#-based definitions. +/// +internal sealed class TournamentAllPossibleFinalsPhases : TournamentRegressionTestBase +{ + public TournamentAllPossibleFinalsPhases() + { + // Set as low as possible to reduce size of expected test output + const int teamsCountPerGroup = 4; + + var groupCounter = 'A'; + var teamCounter = 1; + + // -- 1 group -- + Step(AddAnotherGroup); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + + // -- 2 groups -- + Step(AddAnotherGroup); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); + + // -- 3 groups -- + Step(AddAnotherGroup); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); + + // -- 4 groups -- + Step(AddAnotherGroup); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); + + // -- 5 groups -- + Step(AddAnotherGroup); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); + + // -- 6 groups -- + Step(AddAnotherGroup); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); + + // -- 7 groups -- + Step(AddAnotherGroup); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); + StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); + + return; + + void AddAnotherGroup(Tournament.Tournament t) + { + var teams = Enumerable.Range(0, teamsCountPerGroup).Select(_ => t.AddTeam($"Team {teamCounter++}")).ToList(); + var group = t.AddGroup(groupCounter, $"Test {groupCounter++}"); + teams.ForEach(team => t.AddGroupParticipant(group, team)); + } + + void GenerateMatchPlan(Tournament.Tournament t, FinalsRoundOrder firstRound) + { + t.GenerateMatchPlan(new MatchPlanConfiguration + { + GroupRoundConfig = new GroupRoundConfig + { + GroupMatchOrder = GroupMatchOrder.Alternating, + GroupPhaseRounds = 1 + }, + FinalsRoundConfig = new FinalsRoundConfig + { + FirstFinalsRoundOrder = firstRound, + EnableThirdPlacePlayoff = false, + TeamSelectors = null, + AdditionalPlayoffs = null + } + }, clearMatches: true); + } + } +} From 19deadf01ff6ae372c9863cdd3e06bf572911602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:37:19 +0200 Subject: [PATCH 7/9] Add expected out file --- .../TournamentAllPossibleFinalsPhases.out | 890 ++++++++++++++++++ 1 file changed, 890 insertions(+) create mode 100644 src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleFinalsPhases.out diff --git a/src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleFinalsPhases.out b/src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleFinalsPhases.out new file mode 100644 index 00000000..ac3f5ba8 --- /dev/null +++ b/src/Turnierplan.Core.Test.Regression/Expected/TournamentAllPossibleFinalsPhases.out @@ -0,0 +1,890 @@ +[1] +reg_name;Private;False;0;0;0;0;0;0 +[2] +reg_name;Private;False;0;4;1;0;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +[3] +reg_name;Private;False;0;4;1;7;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +M6;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M7;2;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M8;3;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M9;4;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M10;5;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M11;6;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M12;7;0;;R5/1;R5/2;;;;False;True;1;;;;;False +[4] +reg_name;Private;False;0;4;1;9;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +M13;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M14;2;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M15;3;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M16;4;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M17;5;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M18;6;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M19;7;0;;R5/1;R5/4;;;;False;True;;;;;;False +M20;8;0;;R5/2;R5/3;;;;False;True;;;;;;False +M21;9;0;;W7;W8;;;;False;True;1;;;;;False +[5] +reg_name;Private;False;0;8;2;9;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +M13;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M14;2;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M15;3;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M16;4;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M17;5;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M18;6;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M19;7;0;;R5/1;R5/4;;;;False;True;;;;;;False +M20;8;0;;R5/2;R5/3;;;;False;True;;;;;;False +M21;9;0;;W7;W8;;;;False;True;1;;;;;False +[6] +reg_name;Private;False;0;8;2;13;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +M27;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M28;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M29;3;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M30;4;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M31;5;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M32;6;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M33;7;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M34;8;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M35;9;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M36;10;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M37;11;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M38;12;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M39;13;0;;R5/1;R26/1;;;;False;True;1;;;;;False +[7] +reg_name;Private;False;0;8;2;15;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +M40;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M41;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M42;3;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M43;4;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M44;5;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M45;6;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M46;7;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M47;8;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M48;9;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M49;10;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M50;11;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M51;12;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M52;13;0;;R5/1;R26/2;;;;False;True;;;;;;False +M53;14;0;;R26/1;R5/2;;;;False;True;;;;;;False +M54;15;0;;W13;W14;;;;False;True;1;;;;;False +[8] +reg_name;Private;False;0;8;2;19;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +M55;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M56;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M57;3;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M58;4;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M59;5;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M60;6;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M61;7;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M62;8;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M63;9;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M64;10;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M65;11;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M66;12;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M67;13;0;;R5/1;R26/4;;;;False;True;;;;;;False +M68;14;0;;R5/2;R26/3;;;;False;True;;;;;;False +M69;15;0;;R5/3;R26/2;;;;False;True;;;;;;False +M70;16;0;;R5/4;R26/1;;;;False;True;;;;;;False +M71;17;0;;W13;W14;;;;False;True;;;;;;False +M72;18;0;;W15;W16;;;;False;True;;;;;;False +M73;19;0;;W17;W18;;;;False;True;1;;;;;False +[9] +reg_name;Private;False;0;12;3;19;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +M55;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M56;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M57;3;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M58;4;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M59;5;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M60;6;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M61;7;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M62;8;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M63;9;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M64;10;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M65;11;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M66;12;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M67;13;0;;R5/1;R26/4;;;;False;True;;;;;;False +M68;14;0;;R5/2;R26/3;;;;False;True;;;;;;False +M69;15;0;;R5/3;R26/2;;;;False;True;;;;;;False +M70;16;0;;R5/4;R26/1;;;;False;True;;;;;;False +M71;17;0;;W13;W14;;;;False;True;;;;;;False +M72;18;0;;W15;W16;;;;False;True;;;;;;False +M73;19;0;;W17;W18;;;;False;True;1;;;;;False +[10] +reg_name;Private;False;0;12;3;21;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +M79;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M80;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M81;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M82;4;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M83;5;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M84;6;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M85;7;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M86;8;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M87;9;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M88;10;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M89;11;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M90;12;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M91;13;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M92;14;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M93;15;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M94;16;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M95;17;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M96;18;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M97;19;0;;R5/1;R26/1;;;;False;True;;;;;;False +M98;20;0;;R78/1;N5,26,78/0/2;;;;False;True;;;;;;False +M99;21;0;;W19;W20;;;;False;True;1;;;;;False +[11] +reg_name;Private;False;0;12;3;25;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +M100;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M101;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M102;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M103;4;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M104;5;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M105;6;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M106;7;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M107;8;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M108;9;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M109;10;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M110;11;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M111;12;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M112;13;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M113;14;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M114;15;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M115;16;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M116;17;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M117;18;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M118;19;0;;R5/1;N5,26,78/0/3;;;;False;True;;;;;;False +M119;20;0;;R26/1;N5,26,78/1/3;;;;False;True;;;;;;False +M120;21;0;;R5/2;R78/2;;;;False;True;;;;;;False +M121;22;0;;R26/2;R78/1;;;;False;True;;;;;;False +M122;23;0;;W19;W20;;;;False;True;;;;;;False +M123;24;0;;W21;W22;;;;False;True;;;;;;False +M124;25;0;;W23;W24;;;;False;True;1;;;;;False +[12] +reg_name;Private;False;0;16;4;25;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +M100;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M101;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M102;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M103;4;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M104;5;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M105;6;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M106;7;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M107;8;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M108;9;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M109;10;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M110;11;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M111;12;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M112;13;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M113;14;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M114;15;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M115;16;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M116;17;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M117;18;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M118;19;0;;R5/1;N5,26,78/0/3;;;;False;True;;;;;;False +M119;20;0;;R26/1;N5,26,78/1/3;;;;False;True;;;;;;False +M120;21;0;;R5/2;R78/2;;;;False;True;;;;;;False +M121;22;0;;R26/2;R78/1;;;;False;True;;;;;;False +M122;23;0;;W19;W20;;;;False;True;;;;;;False +M123;24;0;;W21;W22;;;;False;True;;;;;;False +M124;25;0;;W23;W24;;;;False;True;1;;;;;False +[13] +reg_name;Private;False;0;16;4;27;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +M130;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M131;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M132;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M133;4;0;;G129/0;G129/1;;;129;True;False;;;;;;False +M134;5;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M135;6;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M136;7;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M137;8;0;;G129/2;G129/3;;;129;True;False;;;;;;False +M138;9;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M139;10;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M140;11;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M141;12;0;;G129/0;G129/2;;;129;True;False;;;;;;False +M142;13;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M143;14;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M144;15;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M145;16;0;;G129/1;G129/3;;;129;True;False;;;;;;False +M146;17;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M147;18;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M148;19;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M149;20;0;;G129/3;G129/0;;;129;True;False;;;;;;False +M150;21;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M151;22;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M152;23;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M153;24;0;;G129/1;G129/2;;;129;True;False;;;;;;False +M154;25;0;;R5/1;R26/1;;;;False;True;;;;;;False +M155;26;0;;R78/1;R129/1;;;;False;True;;;;;;False +M156;27;0;;W25;W26;;;;False;True;1;;;;;False +[14] +reg_name;Private;False;0;16;4;31;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +M157;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M158;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M159;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M160;4;0;;G129/0;G129/1;;;129;True;False;;;;;;False +M161;5;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M162;6;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M163;7;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M164;8;0;;G129/2;G129/3;;;129;True;False;;;;;;False +M165;9;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M166;10;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M167;11;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M168;12;0;;G129/0;G129/2;;;129;True;False;;;;;;False +M169;13;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M170;14;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M171;15;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M172;16;0;;G129/1;G129/3;;;129;True;False;;;;;;False +M173;17;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M174;18;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M175;19;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M176;20;0;;G129/3;G129/0;;;129;True;False;;;;;;False +M177;21;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M178;22;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M179;23;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M180;24;0;;G129/1;G129/2;;;129;True;False;;;;;;False +M181;25;0;;R5/1;R78/2;;;;False;True;;;;;;False +M182;26;0;;R26/1;R129/2;;;;False;True;;;;;;False +M183;27;0;;R78/1;R5/2;;;;False;True;;;;;;False +M184;28;0;;R129/1;R26/2;;;;False;True;;;;;;False +M185;29;0;;W25;W26;;;;False;True;;;;;;False +M186;30;0;;W27;W28;;;;False;True;;;;;;False +M187;31;0;;W29;W30;;;;False;True;1;;;;;False +[15] +reg_name;Private;False;0;20;5;31;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +T188;Team 17;;False;0;0;0;0;0;0 +T189;Team 18;;False;0;0;0;0;0;0 +T190;Team 19;;False;0;0;0;0;0;0 +T191;Team 20;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +G192;E;Test E;4 +>188;192;1;0;0;0;0;0;0;0;0;0;0 +>189;192;2;0;0;0;0;0;0;0;0;0;0 +>190;192;3;0;0;0;0;0;0;0;0;0;0 +>191;192;4;0;0;0;0;0;0;0;0;0;0 +M157;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M158;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M159;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M160;4;0;;G129/0;G129/1;;;129;True;False;;;;;;False +M161;5;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M162;6;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M163;7;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M164;8;0;;G129/2;G129/3;;;129;True;False;;;;;;False +M165;9;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M166;10;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M167;11;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M168;12;0;;G129/0;G129/2;;;129;True;False;;;;;;False +M169;13;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M170;14;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M171;15;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M172;16;0;;G129/1;G129/3;;;129;True;False;;;;;;False +M173;17;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M174;18;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M175;19;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M176;20;0;;G129/3;G129/0;;;129;True;False;;;;;;False +M177;21;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M178;22;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M179;23;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M180;24;0;;G129/1;G129/2;;;129;True;False;;;;;;False +M181;25;0;;R5/1;R78/2;;;;False;True;;;;;;False +M182;26;0;;R26/1;R129/2;;;;False;True;;;;;;False +M183;27;0;;R78/1;R5/2;;;;False;True;;;;;;False +M184;28;0;;R129/1;R26/2;;;;False;True;;;;;;False +M185;29;0;;W25;W26;;;;False;True;;;;;;False +M186;30;0;;W27;W28;;;;False;True;;;;;;False +M187;31;0;;W29;W30;;;;False;True;1;;;;;False +[16] +reg_name;Private;False;0;20;5;37;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +T188;Team 17;;False;0;0;0;0;0;0 +T189;Team 18;;False;0;0;0;0;0;0 +T190;Team 19;;False;0;0;0;0;0;0 +T191;Team 20;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +G192;E;Test E;4 +>188;192;1;0;0;0;0;0;0;0;0;0;0 +>189;192;2;0;0;0;0;0;0;0;0;0;0 +>190;192;3;0;0;0;0;0;0;0;0;0;0 +>191;192;4;0;0;0;0;0;0;0;0;0;0 +M193;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M194;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M195;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M196;4;0;;G129/0;G129/1;;;129;True;False;;;;;;False +M197;5;0;;G192/0;G192/1;;;192;True;False;;;;;;False +M198;6;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M199;7;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M200;8;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M201;9;0;;G129/2;G129/3;;;129;True;False;;;;;;False +M202;10;0;;G192/2;G192/3;;;192;True;False;;;;;;False +M203;11;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M204;12;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M205;13;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M206;14;0;;G129/0;G129/2;;;129;True;False;;;;;;False +M207;15;0;;G192/0;G192/2;;;192;True;False;;;;;;False +M208;16;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M209;17;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M210;18;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M211;19;0;;G129/1;G129/3;;;129;True;False;;;;;;False +M212;20;0;;G192/1;G192/3;;;192;True;False;;;;;;False +M213;21;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M214;22;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M215;23;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M216;24;0;;G129/3;G129/0;;;129;True;False;;;;;;False +M217;25;0;;G192/3;G192/0;;;192;True;False;;;;;;False +M218;26;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M219;27;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M220;28;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M221;29;0;;G129/1;G129/2;;;129;True;False;;;;;;False +M222;30;0;;G192/1;G192/2;;;192;True;False;;;;;;False +M223;31;0;;R5/1;R26/1;;;;False;True;;;;;;False +M224;32;0;;R78/1;N5,26,78,129,192/0/2;;;;False;True;;;;;;False +M225;33;0;;R129/1;N5,26,78,129,192/1/2;;;;False;True;;;;;;False +M226;34;0;;R192/1;N5,26,78,129,192/2/2;;;;False;True;;;;;;False +M227;35;0;;W31;W32;;;;False;True;;;;;;False +M228;36;0;;W33;W34;;;;False;True;;;;;;False +M229;37;0;;W35;W36;;;;False;True;1;;;;;False +[17] +reg_name;Private;False;0;24;6;37;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +T188;Team 17;;False;0;0;0;0;0;0 +T189;Team 18;;False;0;0;0;0;0;0 +T190;Team 19;;False;0;0;0;0;0;0 +T191;Team 20;;False;0;0;0;0;0;0 +T230;Team 21;;False;0;0;0;0;0;0 +T231;Team 22;;False;0;0;0;0;0;0 +T232;Team 23;;False;0;0;0;0;0;0 +T233;Team 24;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +G192;E;Test E;4 +>188;192;1;0;0;0;0;0;0;0;0;0;0 +>189;192;2;0;0;0;0;0;0;0;0;0;0 +>190;192;3;0;0;0;0;0;0;0;0;0;0 +>191;192;4;0;0;0;0;0;0;0;0;0;0 +G234;F;Test F;4 +>230;234;1;0;0;0;0;0;0;0;0;0;0 +>231;234;2;0;0;0;0;0;0;0;0;0;0 +>232;234;3;0;0;0;0;0;0;0;0;0;0 +>233;234;4;0;0;0;0;0;0;0;0;0;0 +M193;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M194;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M195;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M196;4;0;;G129/0;G129/1;;;129;True;False;;;;;;False +M197;5;0;;G192/0;G192/1;;;192;True;False;;;;;;False +M198;6;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M199;7;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M200;8;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M201;9;0;;G129/2;G129/3;;;129;True;False;;;;;;False +M202;10;0;;G192/2;G192/3;;;192;True;False;;;;;;False +M203;11;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M204;12;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M205;13;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M206;14;0;;G129/0;G129/2;;;129;True;False;;;;;;False +M207;15;0;;G192/0;G192/2;;;192;True;False;;;;;;False +M208;16;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M209;17;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M210;18;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M211;19;0;;G129/1;G129/3;;;129;True;False;;;;;;False +M212;20;0;;G192/1;G192/3;;;192;True;False;;;;;;False +M213;21;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M214;22;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M215;23;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M216;24;0;;G129/3;G129/0;;;129;True;False;;;;;;False +M217;25;0;;G192/3;G192/0;;;192;True;False;;;;;;False +M218;26;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M219;27;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M220;28;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M221;29;0;;G129/1;G129/2;;;129;True;False;;;;;;False +M222;30;0;;G192/1;G192/2;;;192;True;False;;;;;;False +M223;31;0;;R5/1;R26/1;;;;False;True;;;;;;False +M224;32;0;;R78/1;N5,26,78,129,192/0/2;;;;False;True;;;;;;False +M225;33;0;;R129/1;N5,26,78,129,192/1/2;;;;False;True;;;;;;False +M226;34;0;;R192/1;N5,26,78,129,192/2/2;;;;False;True;;;;;;False +M227;35;0;;W31;W32;;;;False;True;;;;;;False +M228;36;0;;W33;W34;;;;False;True;;;;;;False +M229;37;0;;W35;W36;;;;False;True;1;;;;;False +[18] +reg_name;Private;False;0;24;6;43;0;0 +T1;Team 1;;False;0;0;0;0;0;0 +T2;Team 2;;False;0;0;0;0;0;0 +T3;Team 3;;False;0;0;0;0;0;0 +T4;Team 4;;False;0;0;0;0;0;0 +T22;Team 5;;False;0;0;0;0;0;0 +T23;Team 6;;False;0;0;0;0;0;0 +T24;Team 7;;False;0;0;0;0;0;0 +T25;Team 8;;False;0;0;0;0;0;0 +T74;Team 9;;False;0;0;0;0;0;0 +T75;Team 10;;False;0;0;0;0;0;0 +T76;Team 11;;False;0;0;0;0;0;0 +T77;Team 12;;False;0;0;0;0;0;0 +T125;Team 13;;False;0;0;0;0;0;0 +T126;Team 14;;False;0;0;0;0;0;0 +T127;Team 15;;False;0;0;0;0;0;0 +T128;Team 16;;False;0;0;0;0;0;0 +T188;Team 17;;False;0;0;0;0;0;0 +T189;Team 18;;False;0;0;0;0;0;0 +T190;Team 19;;False;0;0;0;0;0;0 +T191;Team 20;;False;0;0;0;0;0;0 +T230;Team 21;;False;0;0;0;0;0;0 +T231;Team 22;;False;0;0;0;0;0;0 +T232;Team 23;;False;0;0;0;0;0;0 +T233;Team 24;;False;0;0;0;0;0;0 +G5;A;Test A;4 +>1;5;1;0;0;0;0;0;0;0;0;0;0 +>2;5;2;0;0;0;0;0;0;0;0;0;0 +>3;5;3;0;0;0;0;0;0;0;0;0;0 +>4;5;4;0;0;0;0;0;0;0;0;0;0 +G26;B;Test B;4 +>22;26;1;0;0;0;0;0;0;0;0;0;0 +>23;26;2;0;0;0;0;0;0;0;0;0;0 +>24;26;3;0;0;0;0;0;0;0;0;0;0 +>25;26;4;0;0;0;0;0;0;0;0;0;0 +G78;C;Test C;4 +>74;78;1;0;0;0;0;0;0;0;0;0;0 +>75;78;2;0;0;0;0;0;0;0;0;0;0 +>76;78;3;0;0;0;0;0;0;0;0;0;0 +>77;78;4;0;0;0;0;0;0;0;0;0;0 +G129;D;Test D;4 +>125;129;1;0;0;0;0;0;0;0;0;0;0 +>126;129;2;0;0;0;0;0;0;0;0;0;0 +>127;129;3;0;0;0;0;0;0;0;0;0;0 +>128;129;4;0;0;0;0;0;0;0;0;0;0 +G192;E;Test E;4 +>188;192;1;0;0;0;0;0;0;0;0;0;0 +>189;192;2;0;0;0;0;0;0;0;0;0;0 +>190;192;3;0;0;0;0;0;0;0;0;0;0 +>191;192;4;0;0;0;0;0;0;0;0;0;0 +G234;F;Test F;4 +>230;234;1;0;0;0;0;0;0;0;0;0;0 +>231;234;2;0;0;0;0;0;0;0;0;0;0 +>232;234;3;0;0;0;0;0;0;0;0;0;0 +>233;234;4;0;0;0;0;0;0;0;0;0;0 +M235;1;0;;G5/0;G5/1;;;5;True;False;;;;;;False +M236;2;0;;G26/0;G26/1;;;26;True;False;;;;;;False +M237;3;0;;G78/0;G78/1;;;78;True;False;;;;;;False +M238;4;0;;G129/0;G129/1;;;129;True;False;;;;;;False +M239;5;0;;G192/0;G192/1;;;192;True;False;;;;;;False +M240;6;0;;G234/0;G234/1;;;234;True;False;;;;;;False +M241;7;0;;G5/2;G5/3;;;5;True;False;;;;;;False +M242;8;0;;G26/2;G26/3;;;26;True;False;;;;;;False +M243;9;0;;G78/2;G78/3;;;78;True;False;;;;;;False +M244;10;0;;G129/2;G129/3;;;129;True;False;;;;;;False +M245;11;0;;G192/2;G192/3;;;192;True;False;;;;;;False +M246;12;0;;G234/2;G234/3;;;234;True;False;;;;;;False +M247;13;0;;G5/0;G5/2;;;5;True;False;;;;;;False +M248;14;0;;G26/0;G26/2;;;26;True;False;;;;;;False +M249;15;0;;G78/0;G78/2;;;78;True;False;;;;;;False +M250;16;0;;G129/0;G129/2;;;129;True;False;;;;;;False +M251;17;0;;G192/0;G192/2;;;192;True;False;;;;;;False +M252;18;0;;G234/0;G234/2;;;234;True;False;;;;;;False +M253;19;0;;G5/1;G5/3;;;5;True;False;;;;;;False +M254;20;0;;G26/1;G26/3;;;26;True;False;;;;;;False +M255;21;0;;G78/1;G78/3;;;78;True;False;;;;;;False +M256;22;0;;G129/1;G129/3;;;129;True;False;;;;;;False +M257;23;0;;G192/1;G192/3;;;192;True;False;;;;;;False +M258;24;0;;G234/1;G234/3;;;234;True;False;;;;;;False +M259;25;0;;G5/3;G5/0;;;5;True;False;;;;;;False +M260;26;0;;G26/3;G26/0;;;26;True;False;;;;;;False +M261;27;0;;G78/3;G78/0;;;78;True;False;;;;;;False +M262;28;0;;G129/3;G129/0;;;129;True;False;;;;;;False +M263;29;0;;G192/3;G192/0;;;192;True;False;;;;;;False +M264;30;0;;G234/3;G234/0;;;234;True;False;;;;;;False +M265;31;0;;G5/1;G5/2;;;5;True;False;;;;;;False +M266;32;0;;G26/1;G26/2;;;26;True;False;;;;;;False +M267;33;0;;G78/1;G78/2;;;78;True;False;;;;;;False +M268;34;0;;G129/1;G129/2;;;129;True;False;;;;;;False +M269;35;0;;G192/1;G192/2;;;192;True;False;;;;;;False +M270;36;0;;G234/1;G234/2;;;234;True;False;;;;;;False +M271;37;0;;R5/1;R26/1;;;;False;True;;;;;;False +M272;38;0;;R78/1;R129/1;;;;False;True;;;;;;False +M273;39;0;;R192/1;N5,26,78,129,192,234/0/2;;;;False;True;;;;;;False +M274;40;0;;R234/1;N5,26,78,129,192,234/1/2;;;;False;True;;;;;;False +M275;41;0;;W37;W38;;;;False;True;;;;;;False +M276;42;0;;W39;W40;;;;False;True;;;;;;False +M277;43;0;;W41;W42;;;;False;True;1;;;;;False \ No newline at end of file From 6e89b475e80e604b4fbfb27ed672b31350179efd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:37:38 +0200 Subject: [PATCH 8/9] Remove some checks --- .../TournamentAllPossibleFinalsPhases.cs | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs index 989a2817..54bce2b0 100644 --- a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs +++ b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs @@ -21,49 +21,30 @@ public TournamentAllPossibleFinalsPhases() Step(AddAnotherGroup); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); // -- 2 groups -- Step(AddAnotherGroup); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); // -- 3 groups -- Step(AddAnotherGroup); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); // -- 4 groups -- Step(AddAnotherGroup); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); // -- 5 groups -- Step(AddAnotherGroup); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); // -- 6 groups -- Step(AddAnotherGroup); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); Step(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); - - // -- 7 groups -- - Step(AddAnotherGroup); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.FinalOnly)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.SemiFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.QuarterFinals)); - StepWithException(t => GenerateMatchPlan(t, FinalsRoundOrder.EighthFinals)); return; From 3919737ab118cd4beee335200d52516f4540fa86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=B6rner?= Date: Sun, 12 Jul 2026 12:40:53 +0200 Subject: [PATCH 9/9] Remove using stmt --- .../Tests/TournamentAllPossibleFinalsPhases.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs index 54bce2b0..4bd067cd 100644 --- a/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs +++ b/src/Turnierplan.Core.Test.Regression/Tests/TournamentAllPossibleFinalsPhases.cs @@ -1,4 +1,3 @@ -using Turnierplan.Core.Exceptions; using Turnierplan.Core.Tournament; namespace Turnierplan.Core.Test.Regression.Tests;