Exemple #1
0
        public void Parse_MatchingInfixExpression_ReturnsInfixExpression()
        {
            //set up
            var parser = new MockInfixBinaryOperatorParser {
                TermParser = new ValueParser()
            };

            var tokens = new MockTokenStream(
                new NumberToken(1),
                new DelimiterToken(parser.OperatorDelimiter),
                new NumberToken(2)
                );

            //act
            var expression = parser.Parse(tokens);

            //test
            if (expression is MockBinaryOperation operation)
            {
                Assert.IsTrue(operation.Left is Number {
                    Value: 1
                });
        // same token-stream as above, but the bigger token comes first this time
        protected TokenStream GetTS2A()
        {
            var ts = new MockTokenStream();

            ts.SetupAction = () =>
                                 {
                                     ts.termAtt = ts.AddAttribute<ITermAttribute>();
                                     ts.posIncrAtt = ts.AddAttribute<IPositionIncrementAttribute>();
                                     ts.offsetAtt = ts.AddAttribute<IOffsetAttribute>();
                                     var lst = new List<Token>();
                                     Token t = CreateToken("hispeed", 0, 8);
                                     t.PositionIncrement = 1;
                                     lst.Add(t);
                                     t = CreateToken("hi", 0, 2);
                                     t.PositionIncrement = 0;
                                     lst.Add(t);
                                     t = CreateToken("speed", 3, 8);
                                     t.PositionIncrement = 1;
                                     lst.Add(t);
                                     t = CreateToken("10", 8, 10);
                                     t.PositionIncrement = 1;
                                     lst.Add(t);
                                     t = CreateToken("foo", 11, 14);
                                     t.PositionIncrement = 1;
                                     lst.Add(t);
                                     ts.iter = lst.GetEnumerator();

                                 };
            ts.IncrementTokenAction = () =>
                                          {
                                              if (ts.iter.MoveNext())
                                              {
                                                  Token token = ts.iter.Current;
                                                  ts.ClearAttributes();
                                                  ts.termAtt.SetTermBuffer(token.Term);
                                                  ts.posIncrAtt.PositionIncrement = (token.PositionIncrement);
                                                  ts.offsetAtt.SetOffset(token.StartOffset, token.EndOffset);
                                                  return true;
                                              }
                                              return false;
                                          };

            ts.RunSetup();
            return ts;
        }