Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        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);
        }
Example #4
0
        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");
        }
Example #5
0
 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.");
     }
 }
Example #6
0
        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);
        }
Example #7
0
        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();
        }
Example #8
0
        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();
        }
Example #9
0
        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);
        }
Example #10
0
 public void Undo_Should_throw_InvalidOperationException_When_CanUndo_is_false(IUnDoManager manager)
 {
     Check
     .ThatCode(() => manager.Undo())
     .Throws <InvalidOperationException>();
 }