package org.jctools.queues.blocking;
import org.jctools.queues.blocking.BlockingQueueFactory;
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.BlockingQueue;
public class BasicBlockingQueueTest {
@Test
public void basicSingleThreaded() throws Exception
{
ConcurrentQueueSpec qs = ConcurrentQueueSpec.createBoundedSpsc(16);
BlockingQueue<Integer> q = BlockingQueueFactory.newBlockingQueue(qs);
q.put(1);
Assert.assertTrue(q.take() == 1);
q.put(2);
q.put(3);
q.put(4);
Assert.assertTrue(q.take() == 2);
Assert.assertTrue(q.take() == 3);
Assert.assertTrue(q.take() == 4);
}
/*@Test
public void checkClassLoaderCache() throws Exception
{
ConcurrentQueueSpec qs = ConcurrentQueueSpec.createBoundedSpsc(16);
BlockingQueue<Integer> q1 = QueueFactory.newBlockingQueue(qs);
BlockingQueue<Integer> q2 = QueueFactory.newBlockingQueue(qs);
Assert.assertTrue(q1.getClass() == q2.getClass());
}*/
}