public void DoClear_Should_add_old_elements_When_undone() { ICollection <object> source = new List <object> { new object(), new object(), new object() }; IUnDoManager manager = Substitute.For <IUnDoManager>(); IUnDo undo = null; List <object> sourceCopy = source.ToList(); manager.Do(Arg.Do <IUnDo>(i => undo = i)); manager.DoClear(source); Check.That(undo).IsNotNull(); undo.Do(); Check.That(source.Count).IsEqualTo(0); undo.Undo(); Check.That(source).ContainsExactly(sourceCopy); }
public void DoOnUnDo_Should_call_action() { IUnDoManager manager = Substitute.For <IUnDoManager>(); IUnDo undo = null; bool done = false; manager.Do(Arg.Do <IUnDo>(i => undo = i)); manager.DoOnUndo(() => done = true); Check.That(undo).IsNotNull(); undo.Undo(); Check.That(done).IsTrue(); }
public void Do_IDictionary_Should_remove_element_When_undone() { object key = new(); IDictionary <object, object> source = new Dictionary <object, object>(); IUnDoManager manager = Substitute.For <IUnDoManager>(); IUnDo undo = null; manager.Do(Arg.Do <IUnDo>(i => undo = i)); manager.Do(source, key, null); Check.That(undo).IsNotNull(); undo.Do(); Check.That(source.ContainsKey(key)).IsTrue(); undo.Undo(); Check.That(source.ContainsKey(key)).IsFalse(); }