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()); }
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); }