mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
This commit is contained in:
parent
a47c5726ec
commit
b66912ea44
3 changed files with 67 additions and 22 deletions
|
|
@ -42,7 +42,7 @@ class ChooseAmountTestableDialog extends BaseTestableDialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ChooseAmountTestableDialog aiMustChoose(boolean resStatus, int targetsCount) {
|
private ChooseAmountTestableDialog aiMustChoose(boolean resStatus, int targetsCount) {
|
||||||
// TODO: AI use default distribution, imrove someday
|
// TODO: AI use default distribution, improve someday
|
||||||
TargetTestableResult res = ((TargetTestableResult) this.getResult());
|
TargetTestableResult res = ((TargetTestableResult) this.getResult());
|
||||||
res.aiAssertEnabled = true;
|
res.aiAssertEnabled = true;
|
||||||
res.aiAssertResStatus = resStatus;
|
res.aiAssertResStatus = resStatus;
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Part of testable game dialogs
|
* Part of testable game dialogs
|
||||||
|
|
@ -51,6 +52,26 @@ class GetMultiAmountTestableDialog extends BaseTestableDialog {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GetMultiAmountTestableDialog aiMustChoose(Integer... needValues) {
|
||||||
|
// TODO: AI use default distribution (min possible values), improve someday
|
||||||
|
MultiAmountTestableResult res = ((MultiAmountTestableResult) this.getResult());
|
||||||
|
res.aiAssertEnabled = true;
|
||||||
|
res.aiAssertValues = Arrays.stream(needValues).collect(Collectors.toList());
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private GetMultiAmountTestableDialog aiMustChooseMany(Integer options, Integer perOption) {
|
||||||
|
List<Integer> need = new ArrayList<>();
|
||||||
|
IntStream.rangeClosed(1, options).forEach(x -> {
|
||||||
|
need.add(perOption);
|
||||||
|
});
|
||||||
|
|
||||||
|
MultiAmountTestableResult res = ((MultiAmountTestableResult) this.getResult());
|
||||||
|
res.aiAssertEnabled = true;
|
||||||
|
res.aiAssertValues = need;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showDialog(Player player, Ability source, Game game, Player opponent) {
|
public void showDialog(Player player, Ability source, Game game, Player opponent) {
|
||||||
Player choosingPlayer = this.isYou ? player : opponent;
|
Player choosingPlayer = this.isYou ? player : opponent;
|
||||||
|
|
@ -91,29 +112,29 @@ class GetMultiAmountTestableDialog extends BaseTestableDialog {
|
||||||
for (boolean isYou : isYous) {
|
for (boolean isYou : isYous) {
|
||||||
// make sure default values are valid due min/max settings
|
// make sure default values are valid due min/max settings
|
||||||
|
|
||||||
|
// TODO: add bad effect for AI (must test default distribution)
|
||||||
|
|
||||||
// single target
|
// single target
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 0 def", 0, 1, genSameOptions(1, 0, 1, 0)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 0 def", 0, 1, genSameOptions(1, 0, 1, 0)).aiMustChoose(1));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 0 def", 0, 3, genSameOptions(1, 0, 3, 0)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 0 def", 0, 3, genSameOptions(1, 0, 3, 0)).aiMustChoose(3));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 1 def", 1, 1, genSameOptions(1, 1, 1, 1)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 1 def", 1, 1, genSameOptions(1, 1, 1, 1)).aiMustChoose(1));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 1 def", 1, 3, genSameOptions(1, 1, 3, 1)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 1 def", 1, 3, genSameOptions(1, 1, 3, 1)).aiMustChoose(3));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 5 def", 0, 10, genSameOptions(1, 0, 10, 5)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 5 def", 0, 10, genSameOptions(1, 0, 10, 5)).aiMustChoose(10));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 10 def", 10, 10, genSameOptions(1, 0, 10, 10)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "one, 10 def", 10, 10, genSameOptions(1, 0, 10, 10)).aiMustChoose(10));
|
||||||
// multiple targets
|
// multiple targets
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 0 def", 0, 5, genSameOptions(3, 0, 3, 0)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 0 def", 0, 5, genSameOptions(3, 0, 3, 0)).aiMustChoose(2, 2, 1));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 0 def", 0, 5, genSameOptions(3, 0, 3, 0)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 1 def", 1, 5, genSameOptions(3, 1, 3, 1)).aiMustChoose(2, 2, 1));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 1 def", 1, 5, genSameOptions(3, 1, 3, 1)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 20 def", 0, 60, genSameOptions(3, 0, 60, 20)).aiMustChoose(20, 20, 20));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 1 def", 1, 5, genSameOptions(3, 1, 3, 1)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 20 def", 60, 60, genSameOptions(3, 0, 60, 20)).aiMustChoose(20, 20, 20));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 20 def", 0, 60, genSameOptions(3, 0, 60, 20)));
|
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "many, 20 def", 60, 60, genSameOptions(3, 0, 60, 20)));
|
|
||||||
// big lists
|
// big lists
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "big list", 0, 100, genSameOptions(20, 0, 100, 0)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "big list", 0, 100, genSameOptions(20, 0, 100, 0)).aiMustChooseMany(20, 5));
|
||||||
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "big list", 0, 100, genSameOptions(100, 0, 100, 0)));
|
runner.registerDialog(new GetMultiAmountTestableDialog(isYou, "big list", 0, 100, genSameOptions(100, 0, 100, 0)).aiMustChooseMany(100, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<List<Integer>> genSameOptions(int amount, int min, int max, int def) {
|
private static List<List<Integer>> genSameOptions(int options, int min, int max, int def) {
|
||||||
List<List<Integer>> res = new ArrayList<>();
|
List<List<Integer>> res = new ArrayList<>();
|
||||||
for (int i = 0; i < amount; i++) {
|
for (int i = 0; i < options; i++) {
|
||||||
// min, max, default
|
// min, max, default
|
||||||
res.add(Arrays.asList(min, max, def));
|
res.add(Arrays.asList(min, max, def));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,21 +10,45 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
public class MultiAmountTestableResult extends BaseTestableResult {
|
public class MultiAmountTestableResult extends BaseTestableResult {
|
||||||
|
|
||||||
List<Integer> values = new ArrayList<>();
|
List<Integer> selectedValues;
|
||||||
|
|
||||||
public void onFinish(String resDebugSource, boolean status, List<String> info, List<Integer> values) {
|
boolean aiAssertEnabled = false;
|
||||||
|
List<Integer> aiAssertValues = new ArrayList<>();
|
||||||
|
|
||||||
|
public void onFinish(String resDebugSource, boolean status, List<String> info, List<Integer> selectedValues) {
|
||||||
this.onFinish(resDebugSource, status, info);
|
this.onFinish(resDebugSource, status, info);
|
||||||
this.values = values;
|
this.selectedValues = selectedValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getResAssert() {
|
public String getResAssert() {
|
||||||
return null; // TODO: implement
|
if (!this.aiAssertEnabled) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// not finished
|
||||||
|
if (this.selectedValues == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// wrong selection
|
||||||
|
String selected = this.selectedValues.toString();
|
||||||
|
String need = this.aiAssertValues.toString();
|
||||||
|
|
||||||
|
if (!selected.equals(need)) {
|
||||||
|
return String.format("Wrong selection: need %s, but get %s",
|
||||||
|
need,
|
||||||
|
selected
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// all fine
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClear() {
|
public void onClear() {
|
||||||
super.onClear();
|
super.onClear();
|
||||||
this.values.clear();
|
this.selectedValues = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue