public void Grammar_WithStartRule_ReturnsStartRefOnStart() { var grammar = new AdHocGrammar(); grammar.TerminalType("A", "start"); grammar.StartWith("start"); var ruleRef = grammar.Start(); ruleRef.Should().NotBeNull(); ruleRef.RefName.Should().Be("start"); ruleRef.Name.Should().Be("start"); }
public void EvaluatingGrammar_WithMockRule_RunsMockRule() { var mockRule = new MockRule("mock", MockRuleBehavior.Success); var grammar = new AdHocGrammar(); grammar.DefineRule("start", mockRule); grammar.StartWith("start"); var lexer = StaticLexer.FromWords(); var opsMock = new RuleOperationsMock(new TokenStream(lexer).Start()); var ruleRef = grammar.Start(); var result = opsMock.Evaluate(ruleRef).Result; result.IsSuccess.Should().BeTrue(); mockRule.DidGrab.Should().BeTrue(); result.Index.Index.Should().Be(0); }