From 12c307d835c582ec9e004b4b81fdbeae329db59a Mon Sep 17 00:00:00 2001 From: Jaculabilis Date: Fri, 22 Apr 2022 13:33:17 -0700 Subject: [PATCH] Create a DATC-inspired document for illustrating time travel test cases --- MDATC.html | 672 ++++++++++++++++++ .../{TimeTravelTest.cs => MDATC_A.cs} | 12 +- 2 files changed, 678 insertions(+), 6 deletions(-) create mode 100644 MDATC.html rename MultiversalDiplomacyTests/{TimeTravelTest.cs => MDATC_A.cs} (96%) 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.

+ + +

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);