forked from External/mage
This commit is contained in:
parent
6568c1f18a
commit
b4519a3361
3 changed files with 76 additions and 25 deletions
|
|
@ -9,7 +9,11 @@ import java.util.List;
|
|||
*/
|
||||
public class AmountTestableResult extends BaseTestableResult {
|
||||
|
||||
int amount = 0;
|
||||
Integer amount = null;
|
||||
|
||||
boolean aiAssertEnabled = false;
|
||||
int aiAssertMinAmount = 0;
|
||||
int aiAssertMaxAmount = 0;
|
||||
|
||||
public void onFinish(String resDebugSource, boolean status, List<String> info, int amount) {
|
||||
this.onFinish(resDebugSource, status, info);
|
||||
|
|
@ -18,12 +22,38 @@ public class AmountTestableResult extends BaseTestableResult {
|
|||
|
||||
@Override
|
||||
public String getResAssert() {
|
||||
return null; // TODO: implement
|
||||
if (!this.aiAssertEnabled) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// not finished
|
||||
if (this.amount == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!this.getResStatus()) {
|
||||
return String.format("Wrong status: need %s, but get %s",
|
||||
true, // res must be true all the time
|
||||
this.getResStatus()
|
||||
);
|
||||
}
|
||||
|
||||
// wrong amount
|
||||
if (this.amount < this.aiAssertMinAmount || this.amount > this.aiAssertMaxAmount) {
|
||||
return String.format("Wrong amount: need [%d, %d], but get %d",
|
||||
this.aiAssertMinAmount,
|
||||
this.aiAssertMaxAmount,
|
||||
this.amount
|
||||
);
|
||||
}
|
||||
|
||||
// all fine
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClear() {
|
||||
super.onClear();
|
||||
this.amount = 0;
|
||||
this.amount = null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,15 @@ class AnnounceXTestableDialog extends BaseTestableDialog {
|
|||
this.max = max;
|
||||
}
|
||||
|
||||
private AnnounceXTestableDialog aiMustChoose(int minAmount, int maxAmount) {
|
||||
// require min/max cause AI logic uses random choices
|
||||
AmountTestableResult res = ((AmountTestableResult) this.getResult());
|
||||
res.aiAssertEnabled = true;
|
||||
res.aiAssertMinAmount = minAmount;
|
||||
res.aiAssertMaxAmount = maxAmount;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showDialog(Player player, Ability source, Game game, Player opponent) {
|
||||
Player choosingPlayer = this.isYou ? player : opponent;
|
||||
|
|
@ -51,17 +60,17 @@ class AnnounceXTestableDialog extends BaseTestableDialog {
|
|||
List<Boolean> 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));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 0).aiMustChoose(0, 0));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 1).aiMustChoose(0, 1));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 3).aiMustChoose(0, 3));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 50).aiMustChoose(0, 50));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 0, 500).aiMustChoose(0, 500));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 1, 1).aiMustChoose(1, 1));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 1, 3).aiMustChoose(1, 3));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 1, 50).aiMustChoose(1, 50));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 3, 3).aiMustChoose(3, 3));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 3, 10).aiMustChoose(3, 10));
|
||||
runner.registerDialog(new AnnounceXTestableDialog(isYou, isMana, 10, 10).aiMustChoose(10, 10));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,15 @@ class GetAmountTestableDialog extends BaseTestableDialog {
|
|||
this.max = max;
|
||||
}
|
||||
|
||||
private GetAmountTestableDialog aiMustChoose(int minAmount, int maxAmount) {
|
||||
// require min/max cause AI logic uses random choices
|
||||
AmountTestableResult res = ((AmountTestableResult) this.getResult());
|
||||
res.aiAssertEnabled = true;
|
||||
res.aiAssertMinAmount = minAmount;
|
||||
res.aiAssertMaxAmount = maxAmount;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showDialog(Player player, Ability source, Game game, Player opponent) {
|
||||
Player choosingPlayer = this.isYou ? player : opponent;
|
||||
|
|
@ -51,17 +60,20 @@ class GetAmountTestableDialog extends BaseTestableDialog {
|
|||
static public void register(TestableDialogsRunner runner) {
|
||||
List<Boolean> isYous = Arrays.asList(false, true);
|
||||
for (boolean isYou : isYous) {
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 0));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 1));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 3));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 50));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 500));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 1));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 3));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 50));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 3, 3));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 3, 10));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 10, 10));
|
||||
// TODO: add good and bad effects:
|
||||
// - on good: choose random big value
|
||||
// - on bad: choose lower value
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 0).aiMustChoose(0, 0));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 1).aiMustChoose(0, 1));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 3).aiMustChoose(0, 3));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 50).aiMustChoose(0, 50));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 0, 500).aiMustChoose(0, 500));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 1).aiMustChoose(1, 1));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 3).aiMustChoose(1, 3));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 1, 50).aiMustChoose(1, 50));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 3, 3).aiMustChoose(3, 3));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 3, 10).aiMustChoose(3, 10));
|
||||
runner.registerDialog(new GetAmountTestableDialog(isYou, 10, 10).aiMustChoose(10, 10));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue