/*******************************************************************************
* 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.internal.widgets;
import static org.eclipse.rap.rwt.testfixture.internal.SerializationTestUtil.serializeAndDeserialize;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import java.util.Iterator;
import org.eclipse.rap.rwt.testfixture.TestContext;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
public class MenuHolder_Test {
private Shell shell;
@Rule
public TestContext context = new TestContext();
private MenuHolder menuHolder;
@Before
public void setUp() {
Display display = new Display();
shell = new Shell( display, SWT.NONE );
menuHolder = new MenuHolder();
}
@Test
public void testSize() {
assertEquals( 0, menuHolder.size() );
}
@Test
public void testAdd() {
Menu menu = mock( Menu.class );
menuHolder.addMenu( menu );
assertEquals( 1, menuHolder.size() );
assertEquals( menu, menuHolder.getMenus()[ 0 ] );
}
@Test
public void testAdd_twice() {
Menu menu1 = mock( Menu.class );
Menu menu2 = mock( Menu.class );
menuHolder.addMenu( menu1 );
menuHolder.addMenu( menu2 );
assertEquals( 2, menuHolder.size() );
assertArrayEquals( new Menu[] { menu1, menu2 }, menuHolder.getMenus() );
}
@Test
public void testRemove() {
Menu menu1 = mock( Menu.class );
Menu menu2 = mock( Menu.class );
menuHolder.addMenu( menu1 );
menuHolder.addMenu( menu2 );
menuHolder.removeMenu( menu1 );
assertEquals( 1, menuHolder.size() );
assertArrayEquals( new Menu[] { menu2 }, menuHolder.getMenus() );
}
@Test
public void testRemove_twice() {
Menu menu1 = mock( Menu.class );
Menu menu2 = mock( Menu.class );
menuHolder.addMenu( menu1 );
menuHolder.addMenu( menu2 );
menuHolder.removeMenu( menu1 );
menuHolder.removeMenu( menu2 );
assertEquals( 0, menuHolder.size() );
assertArrayEquals( new Menu[] {}, menuHolder.getMenus() );
}
@Test
public void testIterator() {
Menu menu = mock( Menu.class );
menuHolder.addMenu( menu );
Iterator<Menu> iterator = menuHolder.iterator();
assertTrue( iterator.hasNext() );
assertSame( menu, iterator.next() );
assertFalse( iterator.hasNext() );
}
@Test
public void testSerialize() throws Exception {
menuHolder.addMenu( new Menu( shell ) );
MenuHolder deserializedMenuHolder = serializeAndDeserialize( menuHolder );
assertEquals( 1, deserializedMenuHolder.size() );
}
}