Search in sources :

Example 1 with PriorityEventQueueComparator

use of org.openksavi.sponge.core.engine.event.PriorityEventQueueComparator in project sponge by softelnet.

the class PriorityEventQueueTest method testPriorityBlockingQueue.

@Test
public void testPriorityBlockingQueue() throws InterruptedException {
    PriorityBlockingQueue<Event> queue = new PriorityBlockingQueue<>(20, new PriorityEventQueueComparator());
    Event e1p1 = addEvent(queue, 1, 1);
    Event e2p1 = addEvent(queue, 2, 1);
    Event e3p1 = addEvent(queue, 3, 1);
    Event e4p1 = addEvent(queue, 4, 1);
    Event e5p2 = addEvent(queue, 5, 2);
    Event e6p2 = addEvent(queue, 6, 2);
    Event e7p2 = addEvent(queue, 7, 2);
    Event e8p2 = addEvent(queue, 8, 2);
    Event e21p0 = addEvent(queue, 21, 0);
    Event e31p5 = addEvent(queue, 31, 5);
    // First event should have the greatest priority and the lowest id
    Assert.assertEquals(e31p5, queue.take());
    Assert.assertEquals(e5p2, queue.take());
    Assert.assertEquals(e6p2, queue.take());
    Assert.assertEquals(e7p2, queue.take());
    Assert.assertEquals(e8p2, queue.take());
    Assert.assertEquals(e1p1, queue.take());
    Assert.assertEquals(e2p1, queue.take());
    Assert.assertEquals(e3p1, queue.take());
    Assert.assertEquals(e4p1, queue.take());
    Assert.assertEquals(e21p0, queue.take());
}
Also used : PriorityEventQueueComparator(org.openksavi.sponge.core.engine.event.PriorityEventQueueComparator) Event(org.openksavi.sponge.event.Event) PriorityBlockingQueue(java.util.concurrent.PriorityBlockingQueue) Test(org.junit.Test)

Aggregations

PriorityBlockingQueue (java.util.concurrent.PriorityBlockingQueue)1 Test (org.junit.Test)1 PriorityEventQueueComparator (org.openksavi.sponge.core.engine.event.PriorityEventQueueComparator)1 Event (org.openksavi.sponge.event.Event)1