public void CanGetSymbolForSubStatementsKeywords()
        {
            var keywords = new List <string>
            {
                Keywords.SubStatements.Many,
                Keywords.SubStatements.Much
            };

            var sentence = String.Join(" ", keywords);

            var lex = new Lex();

            lex.Init(sentence);

            var symbol       = lex.GetNextSymbol();
            var symbolsCount = 0;

            while (symbol != null)
            {
                Assert.AreEqual(SymbolKind.SubStatemant, symbol.Kind);

                symbol = lex.GetNextSymbol();
                symbolsCount++;
            }

            Assert.AreEqual(keywords.Count, symbolsCount);
        }
        public void CanGetSymbolForRomanKeywords()
        {
            var keywords = new List <string>
            {
                Keywords.RomanSymbols.I,
                Keywords.RomanSymbols.V,
                Keywords.RomanSymbols.X,
                Keywords.RomanSymbols.L,
                Keywords.RomanSymbols.C,
                Keywords.RomanSymbols.D,
                Keywords.RomanSymbols.M,
            };

            var sentence = String.Join(" ", keywords);

            var lex = new Lex();

            lex.Init(sentence);

            var symbol       = lex.GetNextSymbol();
            var symbolsCount = 0;

            while (symbol != null)
            {
                Assert.AreEqual(SymbolKind.RomanSymbol, symbol.Kind);

                symbol = lex.GetNextSymbol();
                symbolsCount++;
            }

            Assert.AreEqual(keywords.Count, symbolsCount);
        }
        public void CanGetSymbolForClassifierAndUnitDeclaration()
        {
            const string sentence = "one Banana is 32 Reais";

            var lex = new Lex();

            lex.Init(sentence);

            lex.GetNextSymbol(); //skip one
            var classifier = lex.GetNextSymbol();

            lex.GetNextSymbol(); //skip is
            lex.GetNextSymbol(); //skip 32
            var unit = lex.GetNextSymbol();

            Assert.AreEqual(SymbolKind.Classifier, classifier.Kind);
            Assert.AreEqual(SymbolKind.Unit, unit.Kind);
        }
        public void CanGetSymbolForConstantDeclaration()
        {
            const string sentence = "hello";

            var lex = new Lex();

            lex.Init(sentence);

            var symbol = lex.GetNextSymbol();

            Assert.AreEqual(SymbolKind.Constant, symbol.Kind);
        }
        public void CanGetSymbolForStatementsKeywords()
        {
            const string sentence = Keywords.Statements.How;

            var lex = new Lex();

            lex.Init(sentence);

            var symbol = lex.GetNextSymbol();

            Assert.IsNotNull(symbol);
            Assert.AreEqual(SymbolKind.Statement, symbol.Kind);
        }
        public void CanGetSymbolForQualifiersKeywords()
        {
            const string sentence = Keywords.Qualifiers.QueryCommandQualifier;

            var lex = new Lex();

            lex.Init(sentence);

            var symbol = lex.GetNextSymbol();

            Assert.IsNotNull(symbol);
            Assert.AreEqual(SymbolKind.QueryQualifier, symbol.Kind);
        }
        public void CanGetSymbolForOperatorsKeywords()
        {
            const string sentence = Keywords.Operators.Is;

            var lex = new Lex();

            lex.Init(sentence);

            var symbol = lex.GetNextSymbol();

            Assert.IsNotNull(symbol);
            Assert.AreEqual(SymbolKind.Operator, symbol.Kind);
        }
        public void CanGetSymbolForClassifierAndUnitOnQuery()
        {
            const string sentence = "how many Reais is one Banana ?";

            var lex = new Lex();

            lex.Init(sentence);

            lex.GetNextSymbol(); //skip how
            lex.GetNextSymbol(); //skip many
            var unit = lex.GetNextSymbol();

            lex.GetNextSymbol(); //skip is
            lex.GetNextSymbol(); //skip one
            var classifier = lex.GetNextSymbol();

            Assert.AreEqual(SymbolKind.Classifier, classifier.Kind);
            Assert.AreEqual(SymbolKind.Unit, unit.Kind);
        }