@Test
public void testClear() {

    PriorityQueue<TestElement> queue = new DefaultPriorityQueue<TestElement>(TestElementComparator.INSTANCE, 0);
    assertEmptyQueue(queue);
    TestElement a = new TestElement(5);
    TestElement b = new TestElement(10);
    TestElement c = new TestElement(2);
    TestElement d = new TestElement(6);
    assertOffer(queue, a);
    assertOffer(queue, b);
    assertOffer(queue, c);
    assertOffer(queue, d);
    queue.clear();
    assertEmptyQueue(queue);
    // Test that elements can be re-inserted after the clear operation
    assertOffer(queue, a);
    assertSame(a, queue.peek());
    assertOffer(queue, b);
    assertSame(a, queue.peek());
    assertOffer(queue, c);
    assertSame(c, queue.peek());
    assertOffer(queue, d);
    assertSame(c, queue.peek());
}