/* * Copyright (c) 2014 Brocade Communications Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.util.concurrent; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.util.Arrays; import java.util.concurrent.TimeUnit; import org.junit.Test; /** * Unit tests for TrackingLinkedBlockingQueue. * * @author Thomas Pantelis */ public class TrackingLinkedBlockingQueueTest { @Test public void testOffer() throws InterruptedException { TrackingLinkedBlockingQueue<String> queue = new TrackingLinkedBlockingQueue<>( 2 ); assertEquals( "offer", true, queue.offer( "1" ) ); assertEquals( "getLargestQueueSize", 1, queue.getLargestQueueSize() ); assertEquals( "size", 1, queue.size() ); assertEquals( "offer", true, queue.offer( "2", 1, TimeUnit.MILLISECONDS ) ); assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); assertEquals( "offer", false, queue.offer( "3" ) ); assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); assertEquals( "offer", false, queue.offer( "4", 1, TimeUnit.MILLISECONDS ) ); assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); } @Test public void testPut() throws InterruptedException { TrackingLinkedBlockingQueue<String> queue = new TrackingLinkedBlockingQueue<>(); queue.put( "1" ); assertEquals( "getLargestQueueSize", 1, queue.getLargestQueueSize() ); assertEquals( "size", 1, queue.size() ); queue.put( "2" ); assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); } @Test public void testAdd() { TrackingLinkedBlockingQueue<String> queue = new TrackingLinkedBlockingQueue<>( 2 ); assertEquals( "add", true, queue.add( "1" ) ); assertEquals( "getLargestQueueSize", 1, queue.getLargestQueueSize() ); assertEquals( "size", 1, queue.size() ); assertEquals( "add", true, queue.add( "2" ) ); assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); try { queue.add( "3" ); fail( "Expected IllegalStateException" ); } catch( IllegalStateException e ) { // Expected assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); } } @Test public void testAddAll() { TrackingLinkedBlockingQueue<String> queue = new TrackingLinkedBlockingQueue<>( 3 ); queue.addAll( Arrays.asList( "1", "2" ) ); assertEquals( "getLargestQueueSize", 2, queue.getLargestQueueSize() ); assertEquals( "size", 2, queue.size() ); try { queue.addAll( Arrays.asList( "3", "4" ) ); fail( "Expected IllegalStateException" ); } catch( IllegalStateException e ) { // Expected assertEquals( "getLargestQueueSize", 3, queue.getLargestQueueSize() ); assertEquals( "size", 3, queue.size() ); } } }