public void OneMultipliedByPlusOne()
 {
     // When operators are removed entirely by the OperatorCombiner, if they are removed from in front of numeric values, the numeric value is wrapped
     // up in a CInt, CLng or CDbl call so that it is clear to the processing following it that it is not a numeric literal (but a function is chosen
     // that will its value - so here, for the small value 1 it is CInt).
     Assert.Equal(
         new IToken[]
     {
         new NumericValueToken("1", 0),
         new OperatorToken("*", 0),
         new BuiltInFunctionToken("CInt", 0),
         new OpenBrace(0),
         new NumericValueToken("1", 0),
         new CloseBrace(0)
     },
         OperatorCombiner.Combine(
             new IToken[]
     {
         new NumericValueToken("1", 0),
         new OperatorToken("*", 0),
         new OperatorToken("+", 0),
         new NumericValueToken("1", 0)
     }
             ),
         new TokenSetComparer()
         );
 }
 public void TwoGreaterThanOrEqualToOne()
 {
     Assert.Equal(
         new IToken[]
     {
         new NumericValueToken("2", 0),
         new ComparisonOperatorToken(">=", 0),
         new NumericValueToken("1", 0)
     },
         OperatorCombiner.Combine(
             new IToken[]
     {
         new NumericValueToken("2", 0),
         new ComparisonOperatorToken(">", 0),
         new ComparisonOperatorToken("=", 0),
         new NumericValueToken("1", 0)
     }
             ),
         new TokenSetComparer()
         );
 }
 public void OneMinusNegativeOne()
 {
     Assert.Equal(
         new IToken[]
     {
         new NumericValueToken("1", 0),
         new OperatorToken("+", 0),
         new NumericValueToken("1", 0)
     },
         OperatorCombiner.Combine(
             new IToken[]
     {
         new NumericValueToken("1", 0),
         new OperatorToken("-", 0),
         new OperatorToken("-", 0),
         new NumericValueToken("1", 0)
     }
             ),
         new TokenSetComparer()
         );
 }
        private static IEnumerable <IToken> GetTokens(string scriptContent)
        {
            // Break down content into String, Comment and UnprocessedContent tokens
            var tokens = StringBreaker.SegmentString(scriptContent);

            // Break down further into String, Comment, Atom and AbstractEndOfStatement tokens
            var atomTokens = new List <IToken>();

            foreach (var token in tokens)
            {
                if (token is UnprocessedContentToken)
                {
                    atomTokens.AddRange(TokenBreaker.BreakUnprocessedToken((UnprocessedContentToken)token));
                }
                else
                {
                    atomTokens.Add(token);
                }
            }

            return(NumberRebuilder.Rebuild(OperatorCombiner.Combine(atomTokens)).ToList());
        }