コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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");
        }