/*******************************************************************************
* Copyright (c) 2002, 2015 Innoopract Informationssysteme GmbH 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
*
* Contributors:
* Innoopract Informationssysteme GmbH - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.swt.widgets;
import static org.eclipse.rap.rwt.testfixture.internal.SerializationTestUtil.serializeAndDeserialize;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.mockito.Mockito.mock;
import org.eclipse.swt.internal.widgets.ItemHolder;
import org.junit.Before;
import org.junit.Test;
public class ItemHolder_Test {
private ItemHolder<TestItem> itemHolder;
@Before
public void setUp() {
itemHolder = new ItemHolder<TestItem>( TestItem.class );
}
@Test
public void testInitiallyEmpty() {
assertEquals( 0, itemHolder.size() );
assertEquals( 0, itemHolder.getItems().length );
}
@Test
public void testAdd() {
TestItem item = mock( TestItem.class );
itemHolder.add( item );
assertEquals( 1, itemHolder.size() );
// Do not inline to ensure type safety
TestItem[] items = itemHolder.getItems();
assertSame( item, items[ 0 ] );
assertSame( item, itemHolder.getItem( 0 ) );
}
@Test( expected = IllegalArgumentException.class )
public void testAdd_failsWithNull() {
itemHolder.add( null );
}
@Test( expected = IllegalArgumentException.class )
public void testAdd_failsWithExistingItem() {
TestItem item = mock( TestItem.class );
itemHolder.add( item );
itemHolder.add( item );
}
@Test
public void testInsert() {
TestItem item1 = mock( TestItem.class );
TestItem item2 = mock( TestItem.class );
itemHolder.add( item1 );
itemHolder.insert( item2, 0 );
assertSame( item2, itemHolder.getItem( 0 ) );
}
@Test( expected = IllegalArgumentException.class )
public void testInsert_failsWithNull() {
itemHolder.insert( null, 0 );
}
@Test( expected = IllegalArgumentException.class )
public void testInsert_failsWithNegativeIndex() {
itemHolder.insert( null, -1 );
}
@Test( expected = IllegalArgumentException.class )
public void testInsert_failsWithOutOfRangeIndex() {
itemHolder.insert( null, 1 );
}
@Test( expected = IllegalArgumentException.class )
public void testInsert_failsWithExistingItem() {
TestItem item = mock( TestItem.class );
itemHolder.add( item );
itemHolder.insert( item, 0 );
}
@Test
public void testRemove() {
TestItem item = mock( TestItem.class );
itemHolder.add( item );
itemHolder.remove( item );
assertEquals( 0, itemHolder.size() );
assertEquals( 0, itemHolder.getItems().length );
}
@Test( expected = IllegalArgumentException.class )
public void testRemove_failsWithNull() {
itemHolder.remove( null );
}
@Test( expected = IllegalArgumentException.class )
public void testRemove_failsWithMissingItem() {
TestItem item = mock( TestItem.class );
itemHolder.remove( item );
}
@Test
public void testSerialize() throws Exception {
TestItem item = mock( TestItem.class );
itemHolder.add( item );
ItemHolder<TestItem> deserializedItemHolder = serializeAndDeserialize( itemHolder );
assertEquals( 1, deserializedItemHolder.getItems().length );
}
private static class TestItem extends Item {
public TestItem( Widget parent ) {
super( parent, 0 );
}
}
}