diff --git a/Mage.Common/src/main/java/mage/utils/testers/AnnounceXTestableDialog.java b/Mage.Common/src/main/java/mage/utils/testers/AnnounceXTestableDialog.java
new file mode 100644
index 00000000000..bd346448472
--- /dev/null
+++ b/Mage.Common/src/main/java/mage/utils/testers/AnnounceXTestableDialog.java
@@ -0,0 +1,65 @@
+package mage.utils.testers;
+
+import mage.abilities.Ability;
+import mage.game.Game;
+import mage.players.Player;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Part of testable game dialogs
+ *
+ * Supported methods:
+ * - player.announceX()
+ *
+ * @author JayDi85
+ */
+class AnnounceXTestableDialog extends BaseTestableDialog {
+
+ boolean isYou; // who choose - you or opponent
+ boolean isMana; // reason - for mana payment or another value
+ int min;
+ int max;
+
+ public AnnounceXTestableDialog(boolean isYou, boolean isMana, int min, int max) {
+ super(String.format("player.announceX(%s)", isYou ? "you" : "AI"),
+ String.format("%s from %d to %d", isMana ? "mana" : "cost", min, max), "");
+ this.isYou = isYou;
+ this.isMana = isMana;
+ this.min = min;
+ this.max = max;
+ }
+
+ @Override
+ public List showDialog(Player player, Ability source, Game game, Player opponent) {
+ Player choosingPlayer = this.isYou ? player : opponent;
+ String message = "message with html";
+ int chooseRes;
+ chooseRes = choosingPlayer.announceX(this.min, this.max, message, game, source, this.isMana);
+ List result = new ArrayList<>();
+ result.add(getGroup() + " - " + this.getName() + " selected " + chooseRes);
+ return result;
+ }
+
+ static public void register(TestableDialogsRunner runner) {
+ List isYous = Arrays.asList(false, true);
+ List isManas = Arrays.asList(false, true);
+ for (boolean isYou : isYous) {
+ for (boolean isMana : isManas) {
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 0));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 1));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 3));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 50));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 500));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 1, 1));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 1, 3));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 1, 50));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 3, 3));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 3, 10));
+ runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 10, 10));
+ }
+ }
+ }
+}
diff --git a/Mage.Common/src/main/java/mage/utils/testers/ChooseTargetTestableDialog.java b/Mage.Common/src/main/java/mage/utils/testers/ChooseTargetTestableDialog.java
index 152428fb8d8..65284618774 100644
--- a/Mage.Common/src/main/java/mage/utils/testers/ChooseTargetTestableDialog.java
+++ b/Mage.Common/src/main/java/mage/utils/testers/ChooseTargetTestableDialog.java
@@ -32,7 +32,7 @@ class ChooseTargetTestableDialog extends BaseTestableDialog {
public ChooseTargetTestableDialog(boolean isPlayerChoice, boolean isTargetChoice, boolean notTarget, boolean isYou, String name, Target target) {
super(String.format("%s%s(%s, %s)",
isPlayerChoice ? "player.choose" : "target.choose",
- isTargetChoice ? "target" : "", // chooseTarget or choose
+ isTargetChoice ? "Target" : "", // chooseTarget or choose
isYou ? "you" : "AI",
notTarget ? "not target" : "target"), name, target.toString());
this.isPlayerChoice = isPlayerChoice;
diff --git a/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java b/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java
index 3afbcd62f73..96e9c0a8b58 100644
--- a/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java
+++ b/Mage.Common/src/main/java/mage/utils/testers/TestableDialogsRunner.java
@@ -29,8 +29,7 @@ import java.util.stream.Collectors;
* [x] chooseTargetAmount
* [x] chooseUse
* [x] choosePile
- * [ ] announceXMana // TODO: implement
- * [ ] announceXCost // TODO: implement
+ * [x] announceX
* [ ] getAmount // TODO: implement
* [ ] getMultiAmountWithIndividualConstraints // TODO: implement
*
@@ -74,6 +73,7 @@ public class TestableDialogsRunner {
ChooseChoiceTestableDialog.register(this);
ChoosePileTestableDialog.register(this);
ChooseAmountTestableDialog.register(this);
+ AnnounceXTestableDialog.register(this);
}
void registerDialog(TestableDialog dialog) {