public void DoRemove_ICollection_Should_keep_index_When_source_is_IList() { IUnDoManager manager = new UnDoManager(); ICollection <int> source = new List <int> { 0, 1 }; manager.DoRemove(source, 0); manager.Undo(); Check.That(source).ContainsExactly(0, 1); }
public void UnDoSet_ExceptWith_Should_work() { IUnDoManager manager = new UnDoManager(); ISet <int> unDoSet = new HashSet <int> { 1, 2, 3 }.AsUnDo(manager); unDoSet.ExceptWith(new[] { 2 }); Check.That(unDoSet.OrderBy(i => i)).ContainsExactly(1, 3); manager.Undo(); Check.That(unDoSet.OrderBy(i => i)).ContainsExactly(1, 2, 3); }
public void IUnDoTransactionDispose_Should_undo_When_not_committed() { IUnDoManager manager = new UnDoManager(1); bool unDone = false; using (IUnDoTransaction transaction = manager.BeginTransaction()) { IUnDo undo = Substitute.For <IUnDo>(); undo.When(u => u.Undo()).Do(_ => unDone = true); manager.Do(undo); } Check.That(unDone).IsTrue(); }
public void DoAdd_ICollection_Should_keep_index_When_source_is_IList() { IUnDoManager manager = new UnDoManager(); ICollection <int> source = new List <int> { 0, 1 }; manager.DoAdd(source, 2); source.Add(3); manager.Undo(); Check.That(source).ContainsExactly(0, 1, 3); manager.Redo(); Check.That(source).ContainsExactly(0, 1, 2, 3); }
public void Do_Should_operation_When_max_capacity_is_one() { IUnDoManager manager = new UnDoManager(1); IUnDo operation1 = Substitute.For <IUnDo>(); IUnDo operation2 = Substitute.For <IUnDo>(); operation1.Description.Returns("kikoo"); operation2.Description.Returns("lol"); manager.Do(operation1); manager.Do(operation2); Check.That(manager.UndoDescriptions).ContainsExactly("lol"); Check.That(manager.RedoDescriptions).IsEmpty(); manager.Undo(); Check.That(manager.UndoDescriptions).IsEmpty(); Check.That(manager.RedoDescriptions).ContainsExactly("lol"); }