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()); }