public void BeginExpression_WhenGivenAToken_PushesExpressionNode() { // Arrange: var token = new Token { TokenKind = TokenKind.String, Image = "<T>" }; var stack = new Stack <IAstNode>(); stack.Push(_nodeFactoryMock.Object.Create(AstNodeType.Syntax, token)); var builder = new AstBuilder(_nodeFactoryMock.Object, _prodInfoFactoryMock.Object, stack, _tracerMock.Object); // Act: builder.BeginExpression(token); // Assert: Assert.That(stack.Count, Is.EqualTo(2)); Assert.That(stack.Peek(), Is.InstanceOf(typeof(IExpressionNode))); Assert.That((stack.Peek() as IExpressionNode)?.Image, Is.EqualTo(token.Image)); Assert.That((stack.Peek() as IExpressionNode)?.Terms.Count, Is.EqualTo(0)); }