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);
        }
Exemple #5
0
        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
        }