public void ProdRefNode_WithIdentifier_ReturnsCorrectString() { // Arranged: var node = new ProdRefNode(new Token(TokenKind.Identifier, "<T>"), _tracer); // Act: var actual = node.ToString(); // Assert: Assert.That(actual, Is.EqualTo("<T>")); }
private Mock <IAstNodeFactory> BuildNodeFactory() { var mock = new Mock <IAstNodeFactory>(); // Syntax mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Syntax), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new SyntaxNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Statement mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Statement), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new StatementNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Expression mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Expression), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new ExpressionNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Term mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Term), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new TermNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Factor mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Factor), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new FactorNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Paren mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Paren), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new ParenNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Option mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Option), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new OptionNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Kleene mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.KleeneStar), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new KleeneNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // ProdRef mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.ProdRef), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new ProdRefNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Terminal mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Terminal), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new TerminalNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); // Action mock.Setup(factory => factory.Create(It.Is <AstNodeType>(nodeType => nodeType == AstNodeType.Action), It.IsAny <IToken>())) .Returns((AstNodeType nodeType, IToken token) => { var node = new ActionNode(token, _tracerMock.Object); _allNodes.Add(node); return(node); }); mock.Setup(factory => factory.AllNodes).Returns(_allNodes); return(mock); }