예제 #1
0
 public void AddItem(TItem item)
 {
     Items.Add(item);
     _historyOperations.Push('+');
     _historyItems.Push(item);
     _historyIndex.Push(0);
 }
예제 #2
0
 public void AddItem(TItem item)
 {
     Items.Add(item);
     stackValues.Push(item);
     stackKeys.Push('a');
     indexesRemovedItems.Push(-1);
 }
예제 #3
0
 public void AddItem(TItem item)
 {
     Items.Add(item);
     ItemsStack.Push(item);
     ActionStack.Push(ActionMade.Pushed);
     IndexStack.Push(Items.IndexOf(item));
 }
예제 #4
0
파일: ListModel.cs 프로젝트: IPgyt01/Kontur
        public void AddItem(TItem item)
        {
            var commandAdd = new CommandAdd <TItem>(Items, item);

            SizeStack.Push(commandAdd);
            commandAdd.Do();
        }
예제 #5
0
 public void AddItem(TItem item)
 {
     Items.Add(item);
     executeList.Push(new ExecuteList {
         Index = Items.Count - 1, action = ActionEx.Add, Item = item
     });
 }
        public void AddCommand(List <T> items, T item)
        {
            var newAddCommand = new AddCommand <T>(items, item);

            newAddCommand.Execute();
            _commandHistory.Push(newAddCommand);
        }
예제 #7
0
        public void Count_StackSize()
        {
            var stack = new LimitedSizeStack <int>(20);

            stack.Push(0);
            stack.Push(10);
            stack.Push(20);
            Assert.AreEqual(3, stack.Count);
        }
예제 #8
0
        public void WorkCorrectlyWhenLimitZero()
        {
            var stack = new LimitedSizeStack <int>(0);

            stack.Push(1);
            stack.Push(2);
            stack.Push(3);
            Assert.AreEqual(0, stack.Count);
        }
예제 #9
0
        public void ForgetFirstElement_AfterPushBeyondLimit()
        {
            var stack = new LimitedSizeStack <int>(2);

            stack.Push(0);
            stack.Push(10);
            stack.Push(20);
            Assert.AreEqual(2, stack.Count);
            Assert.AreEqual(20, stack.Pop());
        }
예제 #10
0
        public void PushAfterEmptyStack()
        {
            var stack = new LimitedSizeStack <int>(20);

            stack.Push(0);
            stack.Push(1);
            stack.Pop();
            stack.Pop();
            stack.Push(2);
            Assert.AreEqual(2, stack.Pop());
        }
예제 #11
0
        public void PopAfterPush()
        {
            var stack = new LimitedSizeStack <int>(20);

            stack.Push(0);
            stack.Push(1);
            stack.Push(2);
            Assert.AreEqual(2, stack.Pop());
            Assert.AreEqual(1, stack.Pop());
            Assert.AreEqual(0, stack.Pop());
        }
        public void PopPushAfterLimitReached()
        {
            var stack = new LimitedSizeStack <int>(2);

            stack.Push(0);
            stack.Push(1);
            stack.Push(2);
            stack.Pop();
            stack.Push(3);
            Assert.AreEqual(3, stack.Pop());
            Assert.AreEqual(1, stack.Pop());
        }
예제 #13
0
        public void StackDontKeepAllElements()
        {
            Counter counter = new Counter();
            var     stack   = new LimitedSizeStack <FinalizableClass>(30);

            for (int i = 0; i < 100; ++i)
            {
                stack.Push(new FinalizableClass(counter));
            }
            // Явный вызов сборщика мусора. В обычных программах так делать не нужно почти никогда.
            // Но в этом тесте нам нужно убедиться, что на вытесненные из стека элементы больше не осталось ссылок,
            // Для этого мы вызываем сборщик мусора и проверяем, у скольки объектов сборщик мусора вызвал деструктор
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Assert.AreEqual(70, counter.Value);
            stack.Push(new FinalizableClass(counter)); // Чтобы объект стека не собрался сборщиком мусора раньше времени
        }
예제 #14
0
        public void Push_ShouldTakeConstantTime()
        {
            int limit = 100000;
            var stack = new LimitedSizeStack <int>(limit);

            for (int i = 0; i < 5 * limit; ++i)
            {
                stack.Push(0);
            }
            Assert.AreEqual(limit, stack.Count);
        }
 public void AddItem(TItem item)
 {
     actionsList.Push(new Tuple <Action, TItem, int>(Action.AddItem, item, Items.Count));
     Items.Add(item);
 }
예제 #16
0
 public void AddItem(TItem item)
 {
     Items.Add(item);
     commands.Push(new AddCommand <TItem>(Items));
 }
예제 #17
0
 public void AddItem(TItem item)
 {
     stack.Push(new StackNode <TItem>(item, Items.Count, Command.Add));
     Items.Add(item);
 }
예제 #18
0
 public void AddItem(TItem item)
 {
     storyAction.Push(Tuple.Create(TypeAction.AddItem, item, Items.Count));
     Items.Add(item);
 }
예제 #19
0
 public void AddItem(TItem item)
 {
     Items.Add(item);
     Events.Push(new Tuple <TItem, int, bool>(item, Items.Count - 1, true));
 }
예제 #20
0
 public void Execute()
 {
     items.Add(item);
     backup.Push(this);
 }
예제 #21
0
 public void Execute()
 {
     removedItem = items[index];
     items.RemoveAt(index);
     backup.Push(this);
 }
예제 #22
0
 public void AddItem(TItem item)
 {
     actionStory.Push(Tuple.Create(ActionType.AddItem, item, Items.Count));
     Items.Add(item);
 }
예제 #23
0
 // Добавление дела
 public void AddItem(TItem item)
 {
     // В стэк кладется дело и false - событие добавления
     lastActions.Push(Tuple.Create(false, item));
     Items.Add(item);
 }