/** * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.core.structure; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import junit.framework.TestCase; public class FastStackTest extends TestCase { public void testStackIteratorRemove() throws Exception { FastStack<Integer> stack = new FastStack<Integer>(15); stack.push(10); stack.push(20); stack.push(30); Iterator<Integer> it = stack.topDownIterator(); List<Integer> found = new ArrayList<Integer>(); //Should be able to pop while in this iterator! while (it.hasNext()) { Integer next = it.next(); found.add(next); stack.pop(); } List<Integer> expected = new ArrayList<Integer>(); expected.add(30); expected.add(20); expected.add(10); assertEquals(expected, found); assertEquals(stack.size(), 0); } public void testStack() throws Exception { FastStack<Integer> stack = new FastStack<Integer>(15); stack.push(1); assertEquals(1, stack.size()); stack.pop(); assertEquals(0, stack.size()); for (int i = 0; i < 50; i++) { stack.push(i); } assertEquals(49, (int) stack.peek()); Iterator<Integer> it = stack.iterator(); for (int i = 0; i < 50; i++) { assertEquals(i, (int) it.next()); } it = stack.topDownIterator(); for (int i = 49; i >= 0; i--) { assertEquals(i, (int) it.next()); } assertTrue(!stack.empty()); for (int i = 49; i >= 0; i--) { assertEquals(i, (int) stack.pop()); } assertTrue(stack.empty()); FastStack<Integer> stack2 = new FastStack<Integer>(5); stack2.push(1); stack2.push(2); FastStack<Integer> stack3 = new FastStack<Integer>(1); stack3.push(3); stack3.push(4); stack.addAll(stack2); assertEquals(2, stack.size()); stack.addAll(stack3); assertEquals(4, stack.size()); it = stack.iterator(); for (int i = 0; i < 4; i++) { assertEquals(i + 1, (int) it.next()); } stack = stack.createCopy(); it = stack.iterator(); for (int i = 0; i < 4; i++) { assertEquals(i + 1, (int) it.next()); } assertEquals(4, stack.size()); } }