diff --git a/MDATC.html b/MDATC.html
new file mode 100644
index 0000000..5d372a6
--- /dev/null
+++ b/MDATC.html
@@ -0,0 +1,672 @@
+
+
+Multiversal Diplomacy Adjudicator Test Cases
+
+
+
+
+MDATC: MULTIVERSAL DIPLOMACY ADJUDICATOR TEST CASES
+Diplomacy is the Avalon Hill Game Company's trademark for its game of international intrigue, which game is copyright 1976 by Avalon Hill. Avalon Hill belongs to Hasbro.
+
+TABLE OF CONTENTS
+
+
+1. INTRODUCTION
+
+
+2. MULTIVERSAL VARIANT RULES
+
+2.A. TIME TRAVEL
+
+
+2.B. ORDER NOTATION
+The order notation in this document is as in DATC, with the following additions for multiversal time travel.
+
+- A season within a particular timeline is designated in the format X:Y, where X is the turn (starting from 0 and advancing with each movement phase) and Y is the timeline number (starting from 0 and advancing with each timeline fork).
+- Adjudication is implied to be done between successive seasons. For example, if orders are listed for 0:0 and then for 1:0, it is implied that the orders for 0:0 were adjudicated.
+- Units are designated by unit type, province, and season, e.g. "A Munich 1:0". A destination for a move order or support-to-move order is designated by province and season, e.g. "Munich 1:0".
+
+
+
+3. TEST CASES
+
+3.A. TIMELINE FORKING
+
+
+3.A.1. TEST CASE, MOVE INTO OWN PAST FORKS TIMELINE
+A unit that moves into its own immediate past causes the timeline to fork.
+
+ Germany 0:0
+ A Munich hold
+
+ Germany 1:0
+ A Munich - Tyrolia 0:0
+
+A Munich 1:0 moves to Tyrolia 0:0. The main timeline advances to 2:0 with an empty board. A forked timeline advances to 1:1 with armies in Munich and Tyrolia.
+
+
+
+
+
+
+
+
+
+3.A.2. TEST CASE, SUPPORT TO REPELLED PAST MOVE FORKS TIMELINE
+A unit that supports a move that previously failed in the past, such that it now succeeds, causes the timeline to fork.
+
+ Austria 0:0
+ A Tyrolia hold
+
+ Germany 0:0
+ A Munich - Tyrolia
+
+ Austria 1:0
+ A Tyrolia hold
+
+ Germany 1:0
+ A Munich supports A Munich 0:0 - Tyrolia 0:0
+
+With the support from A Munich 1:0, A Munich 0:0 dislodges A Tyrolia 0:0. A forked timeline advances to 1:1 where A Tyrolia 0:0 has been dislodged. The main timeline advances to 2:0 where A Munich and A Tyrolia are in their initial positions.
+
+
+
+
+
+
+
+
+
+3.A.3. TEST CASE, FAILED MOVE DOES NOT FORK TIMELINE
+A unit that attempts to move into the past, but is repelled, does not cause the timeline to fork.
+
+ Austria 0:0
+ A Tyrolia hold
+
+ Germany 0:0
+ A Munich hold
+
+ Austria 1:0
+ A Tyrolia hold
+
+ Germany 1:0
+ A Munich - Tyrolia 0:0
+
+The move by A Munich 1:0 fails. The main timeline advances to 2:0 with both armies in their initial positions. No alternate timeline is created.
+
+
+
+
+
+
+
+
+
+3.A.4. TEST CASE, SUPERFLUOUS SUPPORT DOES NOT FORK TIMELINE
+A unit that supports a move that succeeded in the past and still succeeds after the additional future support does not cause the timeline to fork.
+
+ Germany 0:0
+ A Munich - Tyrolia
+ A Bohemia hold
+
+ Germany 1:0
+ A Tyrolia hold
+ A Bohemia supports A Munich 0:0 - Tyrolia
+
+Both units in 1:0 continue to 2:0. No alternate timeline is created.
+
+
+
+
+
+
+
+
+
+3.A.5. TEST CASE, CROSS-TIMELINE SUPPORT DOES NOT FORK HEAD
+In this test case, a unit elsewhere on the map moves into the past to cause a timeline fork. Once there are two parallel timelines, a support from one to the head of the other should not cause any forking, since timeline forks only occur when the past changes, not the present.
+
+ Austria
+ A Tyrolia 2:0 hold
+ A Tyrolia 1:1 hold
+
+ Germany
+ A Munich 2:0 - Tyrolia
+ A Munich 1:1 supports A Munich 2:0 - Tyrolia
+
+A Munich 2:0 dislodges A Tyrolia 2:0. No alternate timeline is created.
+
+
+
+
+
+
+
+
+
+
+3.A.6. TEST CASE, CUTTING CROSS-TIMELINE SUPPORT DOES NOT FORK
+Following 3.A.5, a cross-timeline support that previously succeeded is cut.
+
+ Germany
+ A Munich 2:0 - Tyrolia
+ A Munich 1:1 supports A Munich 2:0 - Tyrolia
+
+ Austria
+ A Tyrolia 2:0 holds
+ A Tyrolia 1:1 holds
+
+ Germany
+ A Tyrolia 3:0 holds
+ A Munich 2:1 holds
+
+ Austria
+ A Tyrolia 2:1 - Munich 1:1
+
+Cutting the support does not change the past or cause a timeline fork.
+
+
+
+
+
+
+
+
+
diff --git a/MultiversalDiplomacyTests/TimeTravelTest.cs b/MultiversalDiplomacyTests/MDATC_A.cs
similarity index 96%
rename from MultiversalDiplomacyTests/TimeTravelTest.cs
rename to MultiversalDiplomacyTests/MDATC_A.cs
index 11216f8..6b951c4 100644
--- a/MultiversalDiplomacyTests/TimeTravelTest.cs
+++ b/MultiversalDiplomacyTests/MDATC_A.cs
@@ -9,7 +9,7 @@ namespace MultiversalDiplomacyTests;
public class TimeTravelTest
{
[Test]
- public void MoveIntoOwnPastForksTimeline()
+ public void MDATC_3_A_1_MoveIntoOwnPastForksTimeline()
{
TestCaseBuilder setup = new(World.WithStandardMap(), MovementPhaseAdjudicator.Instance);
@@ -55,7 +55,7 @@ public class TimeTravelTest
}
[Test]
- public void SupportToRepelledPastMoveForksTimeline()
+ public void MDATC_3_A_2_SupportToRepelledPastMoveForksTimeline()
{
TestCaseBuilder setup = new(World.WithStandardMap(), MovementPhaseAdjudicator.Instance);
@@ -105,7 +105,7 @@ public class TimeTravelTest
}
[Test]
- public void FailedMoveDoesNotForkTimeline()
+ public void MDATC_3_A_3_FailedMoveDoesNotForkTimeline()
{
TestCaseBuilder setup = new(World.WithStandardMap(), MovementPhaseAdjudicator.Instance);
@@ -145,7 +145,7 @@ public class TimeTravelTest
}
[Test]
- public void SuperfluousSupportDoesNotForkTimeline()
+ public void MDATC_3_A_4_SuperfluousSupportDoesNotForkTimeline()
{
TestCaseBuilder setup = new(World.WithStandardMap(), MovementPhaseAdjudicator.Instance);
@@ -187,7 +187,7 @@ public class TimeTravelTest
}
[Test]
- public void CrossTimelineSupportDoesNotForkHead()
+ public void MDATC_3_A_5_CrossTimelineSupportDoesNotForkHead()
{
TestCaseBuilder setup = new(World.WithStandardMap(), MovementPhaseAdjudicator.Instance);
@@ -240,7 +240,7 @@ public class TimeTravelTest
}
[Test]
- public void CuttingCrossTimelineSupportDoesNotFork()
+ public void MDATC_3_A_6_CuttingCrossTimelineSupportDoesNotFork()
{
TestCaseBuilder setup = new(World.WithStandardMap(), MovementPhaseAdjudicator.Instance);