From 243ad8cdddcac9f30c340c6db76d4f6ad76a3a9a Mon Sep 17 00:00:00 2001
From: Oleg Agafonov <jaydi85@gmail.com>
Date: Thu, 22 Nov 2018 06:21:35 +0400
Subject: [PATCH] Tests: added support of zero targets in TestPlayer (empty
 string in addTarget); Tests: fixed CopySpellTest;

---
 .../java/org/mage/test/cards/copy/CopySpellTest.java   | 10 ++++++++--
 .../src/test/java/org/mage/test/player/TestPlayer.java |  7 +++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/CopySpellTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/CopySpellTest.java
index 2ec1c261ed..fb3892ecbb 100644
--- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/CopySpellTest.java
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/CopySpellTest.java
@@ -24,9 +24,15 @@ public class CopySpellTest extends CardTestPlayerBase {
         addCard(Zone.BATTLEFIELD, playerB, "Pillarfield Ox", 1);
         addCard(Zone.BATTLEFIELD, playerB, "Island", 1);
 
+        // start chain from A - return pillar to hand
         castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Chain of Vapor", "Pillarfield Ox");
-        setChoice(playerB, "Yes");
-        addTarget(playerB, "Silvercoat Lion");
+        //setChoice(playerB, "Yes"); // want to sacrifice
+        addTarget(playerB, "Island"); // select a land to sacrifice
+        setChoice(playerB, "Yes"); // want to copy spell
+        setChoice(playerB, "Yes"); // want to change target
+        addTarget(playerB, "Silvercoat Lion"); // new target after copy
+        // stop the chain on 0 land
+        addTarget(playerB, "");
 
         setStopAt(1, PhaseStep.BEGIN_COMBAT);
         execute();
diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
index 30e83c5c63..932c63de59 100644
--- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
+++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java
@@ -1160,6 +1160,13 @@ public class TestPlayer implements Player {
                 abilityControllerId = target.getAbilityController();
             }
 
+            // do not select
+            if (targets.get(0).equals("")) {
+                Assert.assertEquals("found empty choice, but target is not support 0 choice", 0, target.getMinNumberOfTargets());
+                targets.remove(0);
+                return true;
+            }
+
             // player
             if (target instanceof TargetPlayer
                     || target instanceof TargetAnyTarget