public void CanUndo_Should_return_false_When_all_commands_have_been_undone(IUnDoManager manager) { manager.Do(Substitute.For <IUnDo>()); manager.Undo(); Check.That(manager.CanUndo).IsFalse(); }
public void CanRedo_Should_return_true_When_a_command_has_been_undone(IUnDoManager manager) { manager.Do(Substitute.For <IUnDo>()); manager.Undo(); Check.That(manager.CanRedo).IsTrue(); }
public void Version_Should_return_old_value_When_a_command_is_undone(IUnDoManager manager) { int oldVersion = manager.Version; manager.Do(Substitute.For <IUnDo>()); manager.Undo(); Check.That(manager.Version).IsEqualTo(oldVersion); }
public void RedoDescriptions_Should_return_descriptions_of_redoable_operations(IUnDoManager manager) { 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.RedoDescriptions).IsEmpty(); manager.Undo(); manager.Undo(); Check.That(manager.RedoDescriptions).ContainsExactly("kikoo", "lol"); }
public void Undo_Should_throw_InvalidOperationException_When_a_transaction_is_going_on(IUnDoManager manager) { using (manager.BeginTransaction()) { Check .ThatCode(() => manager.Undo()) .Throws <InvalidOperationException>() .WithMessage("Cannot perform Undo while a transaction is going on."); } }
public void Version_Should_return_last_value_When_a_command_is_redone(IUnDoManager manager) { manager.Do(Substitute.For <IUnDo>()); int lastVersion = manager.Version; manager.Undo(); manager.Redo(); Check.That(manager.Version).IsEqualTo(lastVersion); }
public void Do_Should_clear_undone_history(IUnDoManager manager) { manager.Do(Substitute.For <IUnDo>()); manager.Do(Substitute.For <IUnDo>()); manager.Undo(); Check.That(manager.CanRedo).IsTrue(); manager.Do(Substitute.For <IUnDo>()); Check.That(manager.CanRedo).IsFalse(); }
public void Undo_Should_Undo(IUnDoManager manager) { IUnDo undo = Substitute.For <IUnDo>(); bool done = false; undo.When(u => u.Undo()).Do(_ => done = true); manager.Do(undo); manager.Undo(); Check.That(done).IsTrue(); }
public void BeginTransaction_Should_add_commands_as_one_operation_in_history_once_disposed(IUnDoManager manager) { IUnDo undo = Substitute.For <IUnDo>(); undo.Description.Returns("dummy"); int version = manager.Version; using (IUnDoTransaction t1 = manager.BeginTransaction("first")) using (IUnDoTransaction t2 = manager.BeginTransaction("second")) { manager.Do(undo); manager.Do(undo); t2.Commit(); t1.Commit(); } Check.That(manager.Version).IsStrictlyGreaterThan(version); Check.That(manager.UndoDescriptions).ContainsExactly("first"); manager.Undo(); Check.That(manager.Version).IsEqualTo(version); }
public void Undo_Should_throw_InvalidOperationException_When_CanUndo_is_false(IUnDoManager manager) { Check .ThatCode(() => manager.Undo()) .Throws <InvalidOperationException>(); }