@Override public void moveObjectsOfPositionTo(ShortPoint2D position, AbstractMaterialRequestPriorityQueue newAbstractQueue) { assert newAbstractQueue instanceof SimpleMaterialRequestPriorityQueue : "can't move positions between diffrent types of queues."; SimpleMaterialRequestPriorityQueue newQueue = (SimpleMaterialRequestPriorityQueue) newAbstractQueue; for (int queueIdx = 0; queueIdx < queues.length; queueIdx++) { Iterator<MaterialRequestObject> iter = queues[queueIdx].iterator(); while (iter.hasNext()) { MaterialRequestObject curr = iter.next(); if (curr.getPosition().equals(position)) { iter.remove(); newQueue.queues[queueIdx].pushEnd(curr); curr.requestQueue = newQueue; } } } }
@Override public void moveObjectsOfPositionTo(ShortPoint2D position, AbstractMaterialRequestPriorityQueue newAbstractQueue) { assert newAbstractQueue instanceof MaterialsForBuildingsRequestPriorityQueue : "can't move positions between different types of queues."; MaterialsForBuildingsRequestPriorityQueue newQueue = (MaterialsForBuildingsRequestPriorityQueue) newAbstractQueue; for (int priorityIndex = 0; priorityIndex < queues.length; priorityIndex++) { DoubleLinkedList<MaterialRequestObject>[] priorityQueue = queues[priorityIndex]; for (int queueIdx = 0; queueIdx < numberOfConfigurableBuildings; queueIdx++) { Iterator<MaterialRequestObject> iterator = priorityQueue[queueIdx].iterator(); while (iterator.hasNext()) { MaterialRequestObject curr = iterator.next(); if (curr.getPosition().equals(position)) { iterator.remove(); newQueue.queues[priorityIndex][queueIdx].pushEnd(curr); curr.requestQueue = newQueue; } } } } }
@Test public void testIteratorRemove() { for (int i = 0; i < TEST_NUMBERS; i++) { list.pushEnd(new DoubleLinkedIntListItem(i)); } int i = 0; Iterator<DoubleLinkedIntListItem> iter = list.iterator(); while (iter.hasNext()) { assertEquals(i, iter.next().value); iter.remove(); i++; } assertEquals(TEST_NUMBERS, i); assertEquals(0, list.size()); assertTrue(list.isEmpty()); assertFalse(list.iterator().hasNext()); }
@Test public void testIteratorRemoveHalf() { for (int i = 0; i < TEST_NUMBERS; i++) { list.pushEnd(new DoubleLinkedIntListItem(i)); } int i = 0; Iterator<DoubleLinkedIntListItem> iter = list.iterator(); while (iter.hasNext()) { DoubleLinkedIntListItem curr = iter.next(); assertEquals(i, curr.value); if (curr.value % 2 == 0) { iter.remove(); } i++; } assertEquals(TEST_NUMBERS / 2, list.size()); assertTrue(list.iterator().hasNext()); i = 1; for (DoubleLinkedIntListItem curr : list) { assertEquals(i, curr.value); i += 2; } }