public void EatLeftExpressionTest()
        {
            // Arrange
            var snapshot          = Mock.Of <ISnapshot>();
            var operand           = Mock.Of <ICSharpExpression>();
            var isExpression      = Mock.Of <IIsExpression>(t => t.Operand == operand);
            var eater             = new Mock <IEater>();
            var isExpressionEater = new IsExpressionEater(eater.Object);

            // Act
            isExpressionEater.Eat(snapshot, isExpression);

            // Assert
            eater.Verify(t => t.Eat(snapshot, operand), Times.Once);
        }
        public void ReturnStubCandidateTest()
        {
            // Arrange
            var snapshot          = Mock.Of <ISnapshot>();
            var operand           = Mock.Of <ICSharpExpression>();
            var isExpression      = Mock.Of <IIsExpression>(t => t.Operand == operand);
            var eater             = Mock.Of <IEater>();
            var isExpressionEater = new IsExpressionEater(eater);

            // Act
            var kind = isExpressionEater.Eat(snapshot, isExpression);

            // Assert
            Assert.AreEqual(kind, ExpressionKind.StubCandidate);
        }
        public void ReturnStubCandidateTest()
        {
            // Arrange
            var snapshot = Mock.Of<ISnapshot>();
            var operand = Mock.Of<ICSharpExpression>();
            var isExpression = Mock.Of<IIsExpression>(t => t.Operand == operand);
            var eater = Mock.Of<IEater>();
            var isExpressionEater = new IsExpressionEater(eater);

            // Act
            var kind = isExpressionEater.Eat(snapshot, isExpression);

            // Assert
            Assert.AreEqual(kind, ExpressionKind.StubCandidate);
        }
        public void EatLeftExpressionTest()
        {
            // Arrange
            var snapshot = Mock.Of<ISnapshot>();
            var operand = Mock.Of<ICSharpExpression>();
            var isExpression = Mock.Of<IIsExpression>(t => t.Operand == operand);
            var eater = new Mock<IEater>();
            var isExpressionEater = new IsExpressionEater(eater.Object);

            // Act
            isExpressionEater.Eat(snapshot, isExpression);

            // Assert
            eater.Verify(t => t.Eat(snapshot, operand), Times.Once);
        }
        public void AddLeftExpressionToSnapshotTest()
        {
            // Arrange
            var snapshot     = new Mock <ISnapshot>();
            var operand      = Mock.Of <ICSharpExpression>();
            var isExpression = Mock.Of <IIsExpression>(t => t.Operand == operand);

            var eater             = Mock.Of <IEater>(t => t.Eat(snapshot.Object, operand) == ExpressionKind.None);
            var isExpressionEater = new IsExpressionEater(eater);

            // Act
            isExpressionEater.Eat(snapshot.Object, isExpression);

            // Assert
            snapshot.Verify(t => t.Add(ExpressionKind.None, operand), Times.Once);
        }
        public void AddLeftExpressionToSnapshotTest()
        {
            // Arrange
            var snapshot = new Mock<ISnapshot>();
            var operand = Mock.Of<ICSharpExpression>();
            var isExpression = Mock.Of<IIsExpression>(t => t.Operand == operand);

            var eater = Mock.Of<IEater>(t => t.Eat(snapshot.Object, operand) == ExpressionKind.None);
            var isExpressionEater = new IsExpressionEater(eater);

            // Act
            isExpressionEater.Eat(snapshot.Object, isExpression);

            // Assert
            snapshot.Verify(t => t.Add(ExpressionKind.None, operand), Times.Once);
        }