public void ShowdownParser_Pokemon_Parses(string filename, string?nickname, string name, string?sex, string?item, string ability, string?evs, string?ivs, string nature, IEnumerable <string> moves) { var stream = new AntlrInputStream(new StreamReader( Environment.CurrentDirectory + Path.DirectorySeparatorChar + "Resources" + Path.DirectorySeparatorChar + filename)); var lexer = new ShowdownLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new ShowdownParser(tokens); var tree = parser.pokemon(); Assert.Null(tree.exception); Assert.Equal(nickname, tree.nickname()?.GetFullText()); Assert.Equal(name, tree.specie()?.GetFullText()); Assert.Equal(sex, tree.sex()?.GetText()); Assert.Equal(ability, tree.ability()?.GetFullText()); Assert.Equal(evs, tree.evs().stats()?.GetFullText()); Assert.Equal(ivs, tree.ivs()?.GetText()); Assert.Equal(nature, tree.nature()?.GetText()); Assert.Equal(item, tree.item()?.GetFullText()); Assert.Equal( moves, tree.moves()?.move()?.Select(context => context.GetFullText()) ); }
public void ShowdownParser_Sex_Parses(string gender) { var stream = new AntlrInputStream(gender); var lexer = new ShowdownLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new ShowdownParser(tokens); var tree = parser.sex(); Assert.Null(tree.exception); Assert.Equal(gender, tree.GetFullText()); }
public void ShowdownParser_Specie_Parses(string specie) { var stream = new AntlrInputStream(specie); var lexer = new ShowdownLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new ShowdownParser(tokens); var tree = parser.specie(); Assert.Null(tree.exception); Assert.Equal(specie, tree.GetFullText()); }
public void ShowdownParser_Sex_NotParses() { string gender = "foo"; var stream = new AntlrInputStream(gender); var lexer = new ShowdownLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new ShowdownParser(tokens); var tree = parser.sex(); Assert.NotNull(tree); var exception = tree.exception; Assert.NotNull(exception); Assert.IsType <InputMismatchException>(exception); }
public static void Main(string[] args) { var input = CommandLine.Parser .Default .ParseArguments <ShowdownOptions>(args) .MapResult(opts => opts.InputPath, _ => null !); var str = new AntlrInputStream(new StreamReader( Environment.CurrentDirectory + Path.DirectorySeparatorChar + input)); var lexer = new ShowdownLexer(str); var tokens = new CommonTokenStream(lexer); var parser = new ShowdownParser(tokens); var errorListener = new ConsoleErrorListener <IToken>(); parser.AddErrorListener(errorListener); var tree = parser.team(); var visitor = new ShowdownObjectVisitor(); var team = visitor.Visit(tree) as IList <PokemonSet>; }
public void ShowdownParser_Team_Parses(string filename, string[] filenames) { string basePath = Environment.CurrentDirectory + Path.DirectorySeparatorChar + "Resources" + Path.DirectorySeparatorChar; var stream = new AntlrInputStream(new StreamReader(basePath + filename)); string folderPath = basePath + Path.DirectorySeparatorChar + filename.Split(".")[0] + Path.DirectorySeparatorChar; var expected = filenames.Select(file => File.ReadAllText(folderPath + file, Encoding.UTF8)); var lexer = new ShowdownLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new ShowdownParser(tokens); var tree = parser.team(); var parsed = tree.pokemon().Select(pkmn => pkmn.GetFullText()); Assert.Equal(expected.Count(), parsed.Count()); // TODO: test each pokemon }