@Override public void mergeInto(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++) { DoubleLinkedList<MaterialRequestObject> currList = queues[queueIdx]; DoubleLinkedList<MaterialRequestObject> newList = newQueue.queues[queueIdx]; for (MaterialRequestObject request : currList) { request.requestQueue = newQueue; } currList.mergeInto(newList); } }
@Override public void mergeInto(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++) { for (int queueIdx = 0; queueIdx < numberOfConfigurableBuildings; queueIdx++) { DoubleLinkedList<MaterialRequestObject> currList = queues[priorityIndex][queueIdx]; DoubleLinkedList<MaterialRequestObject> newList = newQueue.queues[priorityIndex][queueIdx]; for (MaterialRequestObject request : currList) { request.requestQueue = newQueue; } currList.mergeInto(newList); } } }
@Test public void testMerge() { DoubleLinkedList<DoubleLinkedIntListItem> list2 = new DoubleLinkedList<>(); for (int i = 0; i < TEST_NUMBERS; i++) { list.pushEnd(new DoubleLinkedIntListItem(i)); list2.pushEnd(new DoubleLinkedIntListItem(i)); } list2.mergeInto(list); assertEquals(0, list2.size()); assertEquals(TEST_NUMBERS * 2, list.size()); assertEquals(list2.head, ((DoubleLinkedListItem<DoubleLinkedIntListItem>) list2.head).next); assertEquals(list2.head, ((DoubleLinkedListItem<DoubleLinkedIntListItem>) list2.head).prev); int i = 0; for (DoubleLinkedIntListItem curr : list) { assertEquals(i % TEST_NUMBERS, curr.value); i++; } }