private void testIterator_ConcurrentModification_remove(MinHeap<HasIndex> pq) { DummyHeapEntry entry0 = new DummyHeapEntry(5); DummyHeapEntry entry1 = new DummyHeapEntry(3); DummyHeapEntry entry2 = new DummyHeapEntry(6); pq.add(entry0, 5.0); pq.add(entry1, 3.0); pq.add(entry2, 6.0); Iterator<?> iter = pq.iterator(); Assert.assertTrue(iter.hasNext()); Assert.assertNotNull(iter.next()); Assert.assertTrue(pq.remove(entry0)); Assert.assertTrue(iter.hasNext()); try { iter.next(); Assert.fail("missing ConcurrentModificationException"); } catch (ConcurrentModificationException e) { log.info("catched expected exception.", e); } iter = pq.iterator(); // but a new iterator must work again Assert.assertTrue(iter.hasNext()); Assert.assertNotNull(iter.next()); Assert.assertFalse(pq.remove(entry0)); // cannot be removed, so it's no change Assert.assertTrue(iter.hasNext()); Assert.assertNotNull(iter.next()); }
Assert.assertTrue(pq.remove(entry0)); Assert.assertEquals(2, pq.size()); coll = getIteratorCollection(pq.iterator()); Assert.assertFalse(pq.remove(entry0)); Assert.assertEquals(2, pq.size()); coll = getIteratorCollection(pq.iterator()); Assert.assertFalse(pq.remove(null)); Assert.assertEquals(2, pq.size()); coll = getIteratorCollection(pq.iterator());
private void testRemoveAndAdd_HigherPriority(MinHeap<HasIndex> pq) { DummyHeapEntry entry0 = new DummyHeapEntry(5); DummyHeapEntry entry1 = new DummyHeapEntry(3); DummyHeapEntry entry2 = new DummyHeapEntry(6); pq.add(entry0, 5.0); pq.add(entry1, 3.0); pq.add(entry2, 6.0); Assert.assertEquals(3, pq.size()); // test removing an element and adding it with higher priority (=lower value) pq.remove(entry0); Assert.assertEquals(2, pq.size()); pq.add(entry0, 2.5); Assert.assertEquals(3, pq.size()); assertEqualsHE(entry0, pq.poll()); assertEqualsHE(entry1, pq.poll()); assertEqualsHE(entry2, pq.poll()); Assert.assertNull(pq.poll()); }
private void testRemoveAndAdd_LowerPriority(MinHeap<HasIndex> pq) { DummyHeapEntry entry0 = new DummyHeapEntry(5); DummyHeapEntry entry1 = new DummyHeapEntry(3); DummyHeapEntry entry2 = new DummyHeapEntry(6); pq.add(entry0, 5.0); pq.add(entry1, 3.0); pq.add(entry2, 6.0); Assert.assertEquals(3, pq.size()); // test removing an element and adding it with lower priority (=higher value) pq.remove(entry0); Assert.assertEquals(2, pq.size()); pq.add(entry0, 7.0); Assert.assertEquals(3, pq.size()); assertEqualsHE(entry1, pq.poll()); assertEqualsHE(entry2, pq.poll()); assertEqualsHE(entry0, pq.poll()); Assert.assertNull(pq.poll()); }