blob: c2fce964930bfdd4a580672be8ef6a449baa8458 [file] [log] [blame]
//
// ========================================================================
// Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class ArrayQueueTest
{
@Test
public void testWrap() throws Exception
{
ArrayQueue<String> queue = new ArrayQueue<String>(3,3);
assertEquals(0,queue.size());
for (int i=0;i<10;i++)
{
queue.offer("one");
assertEquals(1,queue.size());
queue.offer("two");
assertEquals(2,queue.size());
queue.offer("three");
assertEquals(3,queue.size());
assertEquals("one",queue.get(0));
assertEquals("two",queue.get(1));
assertEquals("three",queue.get(2));
assertEquals("[one, two, three]",queue.toString());
assertEquals("two",queue.remove(1));
assertEquals(2,queue.size());
assertEquals("one",queue.remove());
assertEquals(1,queue.size());
assertEquals("three",queue.poll());
assertEquals(0,queue.size());
assertEquals(null,queue.poll());
queue.offer("xxx");
queue.offer("xxx");
assertEquals(2,queue.size());
assertEquals("xxx",queue.poll());
assertEquals("xxx",queue.poll());
assertEquals(0,queue.size());
}
}
@Test
public void testRemove() throws Exception
{
ArrayQueue<String> queue = new ArrayQueue<String>(3,3);
queue.add("0");
queue.add("x");
for (int i=1;i<100;i++)
{
queue.add(""+i);
queue.add("x");
queue.remove(queue.size()-3);
queue.set(queue.size()-3,queue.get(queue.size()-3)+"!");
}
for (int i=0;i<99;i++)
assertEquals(i+"!",queue.get(i));
}
@Test
public void testGrow() throws Exception
{
ArrayQueue<String> queue = new ArrayQueue<String>(3,5);
assertEquals(3,queue.getCapacity());
queue.add("0");
queue.add("a");
queue.add("b");
assertEquals(3,queue.getCapacity());
queue.add("c");
assertEquals(8,queue.getCapacity());
for (int i=0;i<4;i++)
queue.add(""+('d'+i));
assertEquals(8,queue.getCapacity());
for (int i=0;i<4;i++)
queue.poll();
assertEquals(8,queue.getCapacity());
for (int i=0;i<4;i++)
queue.add(""+('d'+i));
assertEquals(8,queue.getCapacity());
for (int i=0;i<4;i++)
queue.poll();
assertEquals(8,queue.getCapacity());
for (int i=0;i<4;i++)
queue.add(""+('d'+i));
assertEquals(8,queue.getCapacity());
queue.add("z");
assertEquals(13,queue.getCapacity());
queue.clear();
assertEquals(13,queue.getCapacity());
for (int i=0;i<12;i++)
queue.add(""+('a'+i));
assertEquals(13,queue.getCapacity());
queue.clear();
assertEquals(13,queue.getCapacity());
for (int i=0;i<12;i++)
queue.add(""+('a'+i));
assertEquals(13,queue.getCapacity());
}
@Test
public void testFullEmpty() throws Exception
{
ArrayQueue<String> queue = new ArrayQueue<String>(2);
assertTrue(queue.offer("one"));
assertTrue(queue.offer("two"));
assertFalse(queue.offer("three"));
try
{
queue.add("four");
assertTrue(false);
}
catch(Exception e)
{
}
assertEquals("one",queue.peek());
assertEquals("one",queue.remove());
assertEquals("two",queue.remove());
try
{
assertEquals("three",queue.remove());
assertTrue(false);
}
catch(Exception e)
{
}
assertEquals(null,queue.poll());
}
}