Add tests for trainer team moves

This commit is contained in:
Benjamin Popp 2021-02-10 21:39:45 -06:00
parent 8128b87aa0
commit fcf6b7b4c2
3 changed files with 65 additions and 57 deletions

View File

@ -309,7 +309,10 @@ namespace HavenSoft.HexManiac.Core.Models.Runs {
}
private IEnumerable<AutocompleteItem> GetAutocompleteMoveOptions(string line, int caretIndex) {
throw new NotImplementedException();
var namePart = line.Split("-")[1].Trim();
return ArrayRunEnumSegment.GetOptions(model, HardcodeTablesModel.MoveNamesTable)
.Where(option => option.MatchesPartial(namePart, onlyCheckLettersAndDigits: true))
.Select(option => new AutocompleteItem(option, $"- {option}"));
}
public bool DependsOn(string anchorName) => anchorName == HardcodeTablesModel.ItemsTableName || anchorName == HardcodeTablesModel.MoveNamesTable || anchorName == HardcodeTablesModel.PokemonNameTable;

View File

@ -313,61 +313,5 @@ namespace HavenSoft.HexManiac.Tests {
Assert.Equal("\"Poison Gas\"", options[0].Text);
Assert.Equal("\"Poison Sting\"", options[1].Text);
}
[Fact]
public void TrainerTeam_RequestAutocompletePokemonLevel_NoOptions() {
CreateTextTable(HardcodeTablesModel.ItemsTableName, 0x100, "potion", "hyper potion", "rare candy", "masterball");
CreateTextTable(HardcodeTablesModel.PokemonNameTable, 0x140, "bulbasaur", "farfetch'd", "nidoran \\sm", "mr. mime");
CreateTextTable(HardcodeTablesModel.MoveNamesTable, 0x180, "tackle", "scratch", "hyper beam", "rest");
var run = new TrainerPokemonTeamRun(Model, 0, SortedSpan<int>.None);
var options = run.GetAutoCompleteOptions("1 bulbasaur (3)", 0, 1);
Assert.Empty(options);
}
[Fact]
public void TrainerTeam_RequestAutocompletePokemonSpecies_CorrectOptions() {
CreateTextTable(HardcodeTablesModel.ItemsTableName, 0x100, "potion", "hyper potion", "rare candy", "masterball");
CreateTextTable(HardcodeTablesModel.PokemonNameTable, 0x140, "bulbasaur", "farfetch'd", "nidoran \\sm", "mr. mime");
CreateTextTable(HardcodeTablesModel.MoveNamesTable, 0x180, "tackle", "scratch", "hyper beam", "rest");
var run = new TrainerPokemonTeamRun(Model, 0, SortedSpan<int>.None);
var options = run.GetAutoCompleteOptions("1 i (3) @potion", 0, 3);
Assert.Equal(2, options.Count);
Assert.Equal("1 \"nidoran \\sm\" (3) @potion", options[0].LineText);
Assert.Equal("\"mr. mime\"", options[1].Text);
}
[Fact]
public void TrainerTeam_RequestAutocompletePokemonIVs_NoOptions() {
CreateTextTable(HardcodeTablesModel.ItemsTableName, 0x100, "potion", "hyper potion", "rare candy", "masterball");
CreateTextTable(HardcodeTablesModel.PokemonNameTable, 0x140, "bulbasaur", "farfetch'd", "nidoran \\sm", "mr. mime");
CreateTextTable(HardcodeTablesModel.MoveNamesTable, 0x180, "tackle", "scratch", "hyper beam", "rest");
var run = new TrainerPokemonTeamRun(Model, 0, SortedSpan<int>.None);
var options = run.GetAutoCompleteOptions("1 i (3) @potion", 0, 6);
Assert.Empty(options);
}
[Fact]
public void TrainerTeam_RequestAutocompleteItem_CorrectOptions() {
CreateTextTable(HardcodeTablesModel.ItemsTableName, 0x100, "potion", "hyper potion", "rare candy", "masterball");
CreateTextTable(HardcodeTablesModel.PokemonNameTable, 0x140, "bulbasaur", "farfetch'd", "nidoran \\sm", "mr. mime");
CreateTextTable(HardcodeTablesModel.MoveNamesTable, 0x180, "tackle", "scratch", "hyper beam", "rest");
var run = new TrainerPokemonTeamRun(Model, 0, SortedSpan<int>.None);
var options = run.GetAutoCompleteOptions("1 i (3) @potion", 0, 12);
Assert.Equal(2, options.Count);
Assert.Equal("1 i (3) @potion", options[0].LineText);
Assert.Equal("\"hyper potion\"", options[1].Text);
}
// TODO test how it works for trainer teams (moves)
// TODO test how it works for item effects (elements)
// TODO test how it works for item effects (enums)
}
}

View File

@ -0,0 +1,61 @@
using HavenSoft.HexManiac.Core;
using HavenSoft.HexManiac.Core.Models;
using HavenSoft.HexManiac.Core.Models.Runs;
using System.Linq;
using Xunit;
namespace HavenSoft.HexManiac.Tests {
public class TrainerTeamTests : BaseViewModelTestClass {
private readonly TrainerPokemonTeamRun run;
public TrainerTeamTests() {
CreateTextTable(HardcodeTablesModel.ItemsTableName, 0x100, "potion", "hyper potion", "rare candy", "masterball");
CreateTextTable(HardcodeTablesModel.PokemonNameTable, 0x140, "bulbasaur", "farfetch'd", "nidoran \\sm", "mr. mime");
CreateTextTable(HardcodeTablesModel.MoveNamesTable, 0x180, "tackle", "scratch", "hyper beam", "rest");
run = new TrainerPokemonTeamRun(Model, 0, SortedSpan<int>.None);
}
[Fact]
public void TrainerTeam_RequestAutocompletePokemonLevel_NoOptions() {
var options = run.GetAutoCompleteOptions("1 bulbasaur (3)", 0, 1);
Assert.Empty(options);
}
[Fact]
public void TrainerTeam_RequestAutocompletePokemonSpecies_CorrectOptions() {
var options = run.GetAutoCompleteOptions("1 i (3) @potion", 0, 3);
Assert.Equal(2, options.Count);
Assert.Equal("1 \"nidoran \\sm\" (3) @potion", options[0].LineText);
Assert.Equal("\"mr. mime\"", options[1].Text);
}
[Fact]
public void TrainerTeam_RequestAutocompletePokemonIVs_NoOptions() {
var options = run.GetAutoCompleteOptions("1 i (3) @potion", 0, 6);
Assert.Empty(options);
}
[Fact]
public void TrainerTeam_RequestAutocompleteItem_CorrectOptions() {
var options = run.GetAutoCompleteOptions("1 i (3) @potion", 0, 12);
Assert.Equal(2, options.Count);
Assert.Equal("1 i (3) @potion", options[0].LineText);
Assert.Equal("\"hyper potion\"", options[1].Text);
}
[Fact]
public void TrainerTeam_RequestAutocompleteMove_CorrectOptions() {
var options = run.GetAutoCompleteOptions("- t", 0, 12);
Assert.Equal(3, options.Count);
Assert.Equal("- tackle", options[0].LineText);
Assert.Equal("scratch", options[1].Text);
Assert.Equal("rest", options[2].Text);
}
}
}