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