@Test public void testSize() { TaskQueue<Object> taskQueue = new TaskQueue<Object>(10); Assert.assertEquals(0, taskQueue.size()); for (int i = 1; i <= 10; i++) { Assert.assertTrue(taskQueue.offer(new Object(), new boolean[1])); Assert.assertEquals(i, taskQueue.size()); } }
@Test public void testRemove() { TaskQueue<Object> taskQueue = new TaskQueue<Object>(10); Assert.assertFalse(taskQueue.remove(null)); Assert.assertFalse(taskQueue.remove(new Object())); Object object1 = new Object(); Object object2 = new Object(); Object object3 = new Object(); Assert.assertTrue(taskQueue.offer(object1, new boolean[1])); Assert.assertTrue(taskQueue.offer(object2, new boolean[1])); Assert.assertTrue(taskQueue.offer(object3, new boolean[1])); Assert.assertEquals(3, taskQueue.size()); Assert.assertTrue(taskQueue.remove(object2)); Assert.assertEquals(2, taskQueue.size()); Assert.assertTrue(taskQueue.remove(object1)); Assert.assertEquals(1, taskQueue.size()); Assert.assertTrue(taskQueue.remove(object3)); Assert.assertEquals(0, taskQueue.size()); }
@Test public void testDrainTo() { TaskQueue<Object> taskQueue = new TaskQueue<Object>(); try { taskQueue.drainTo(null); Assert.fail(); } catch (NullPointerException npe) { } Object object1 = new Object(); Object object2 = new Object(); Object object3 = new Object(); Object object4 = new Object(); taskQueue = new TaskQueue<Object>(); Assert.assertTrue(taskQueue.offer(object1, new boolean[1])); Assert.assertTrue(taskQueue.offer(object2, new boolean[1])); Assert.assertTrue(taskQueue.offer(object3, new boolean[1])); Assert.assertTrue(taskQueue.offer(object4, new boolean[1])); Set<Object> set = new HashSet<Object>(); taskQueue.drainTo(set); Assert.assertEquals(4, set.size()); Assert.assertTrue(set.contains(object1)); Assert.assertTrue(set.contains(object2)); Assert.assertTrue(set.contains(object3)); Assert.assertTrue(set.contains(object4)); object1 = new Object(); object2 = new Object(); object3 = new Object(); object4 = new Object(); taskQueue = new TaskQueue<Object>(); Assert.assertTrue(taskQueue.offer(object1, new boolean[1])); Assert.assertTrue(taskQueue.offer(object2, new boolean[1])); Assert.assertTrue(taskQueue.offer(object3, new boolean[1])); Assert.assertTrue(taskQueue.offer(object4, new boolean[1])); List<Object> list = new ArrayList<Object>() { @Override public boolean add(Object e) { if (size() >= 2) { throw new IllegalStateException(); } return super.add(e); } }; try { taskQueue.drainTo(list); Assert.fail(); } catch (IllegalStateException ise) { } Assert.assertEquals(2, list.size()); Assert.assertSame(object1, list.get(0)); Assert.assertSame(object2, list.get(1)); Assert.assertEquals(2, taskQueue.size()); Assert.assertSame(object3, taskQueue.poll()); Assert.assertSame(object4, taskQueue.poll()); }