コード例 #1
0
        public void TestRestore()
        {
            //Arrange
            var obj      = (object)1;
            var link1Val = (object)2;
            var link2Val = (object)3;

            var link1 = new Mock <IPropertyAdapter>();

            link1.Setup(l => l.GetValue(obj)).Returns(link1Val);

            var link2 = new Mock <IPropertyAdapter>();

            link2.Setup(l => l.GetValue(link1Val)).Returns(link2Val);

            var property = new Mock <IPropertyAdapter>();

            var props = new List <IPropertyAdapter>()
            {
                link1.Object,
                link2.Object,
                property.Object
            };

            var memento = new PropertyChainMemento(obj, props);

            memento.SavedValue = FinalVal;

            //Act
            memento.Rollback();

            //Assert
            property.Verify(p => p.SetValue(link2Val, FinalVal), Times.Once());
        }
コード例 #2
0
        public void TestGetValue()
        {
            //Arrange
            var obj      = (object)1;
            var link1Val = (object)2;
            var link2Val = (object)3;

            var link1 = new Mock <IPropertyAdapter>();

            link1.Setup(l => l.GetValue(obj)).Returns(link1Val);

            var link2 = new Mock <IPropertyAdapter>();

            link2.Setup(l => l.GetValue(link1Val)).Returns(link2Val);

            var property = new Mock <IPropertyAdapter>();

            property.Setup(p => p.GetValue(link2Val)).Returns(FinalVal);

            var props = new List <IPropertyAdapter>()
            {
                link1.Object,
                link2.Object,
                property.Object
            };

            var memento = new PropertyChainMemento(obj, props);

            //Act
            object value = memento.GetValue();

            //Assert
            Assert.AreEqual(FinalVal, value);
        }