Package com.eclipsesource.tabris.ui

Source Code of com.eclipsesource.tabris.ui.UIConfigurationTest

/*******************************************************************************
* Copyright (c) 2013 EclipseSource 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:
*    EclipseSource - initial API and implementation
******************************************************************************/
package com.eclipsesource.tabris.ui;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import java.io.Serializable;
import java.util.List;

import org.eclipse.swt.graphics.RGB;
import org.junit.Rule;
import org.junit.Test;

import com.eclipsesource.tabris.internal.ui.ImageUtil;
import com.eclipsesource.tabris.internal.ui.PageDescriptor;
import com.eclipsesource.tabris.internal.ui.TestAction;
import com.eclipsesource.tabris.internal.ui.TestPage;
import com.eclipsesource.tabris.internal.ui.UIDescriptor;
import com.eclipsesource.tabris.internal.ui.UITestUtil;
import com.eclipsesource.tabris.internal.ui.UIUpdater;
import com.eclipsesource.tabris.internal.ui.UpdateUtil;
import com.eclipsesource.tabris.test.util.TabrisEnvironment;


public class UIConfigurationTest {

  @Rule
  public TabrisEnvironment environment = new TabrisEnvironment();

  @Test
  public void testIsSerializable() {
    assertTrue( Serializable.class.isAssignableFrom( UIConfiguration.class ) );
  }

  @Test
  public void testTransistionListenerIsSerializable() {
    assertTrue( Serializable.class.isAssignableFrom( TransitionListener.class ) );
  }

  @Test( expected = IllegalStateException.class )
  public void testAddPageConfigurationFailsWithDuplicateId() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration configuration1 = new PageConfiguration( "foo", TestPage.class );
    PageConfiguration configuration2 = new PageConfiguration( "foo", TestPage.class );

    configuration.addPageConfiguration( configuration1 );
    configuration.addPageConfiguration( configuration2 );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testAddPageConfigurationFailsWithNullConfiguration() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.addPageConfiguration( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testAddActionConfigurationFailsWithNullConfiguration() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.addActionConfiguration( null );
  }

  @Test( expected = IllegalStateException.class )
  public void testAddActionConfigurationFailsWithDuplicateId() {
    UIConfiguration configuration = new UIConfiguration();
    ActionConfiguration configuration1 = new ActionConfiguration( "foo", TestAction.class );
    ActionConfiguration configuration2 = new ActionConfiguration( "foo", TestAction.class );

    configuration.addActionConfiguration( configuration1 );
    configuration.addActionConfiguration( configuration2 );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testAddTransitionListenerFailsWithNullListener() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.addTransitionListener( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemoveTransitionListenerFailsWithNullListener() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.removeTransitionListener( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testAddActionListenerFailsWithNullListener() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.addActionListener( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemoveActionListenerFailsWithNullListener() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.removeActionListener( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testGetPageConfigurationFailsWithNullId() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.getPageConfiguration( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testGetPageConfigurationFailsWithEmptyId() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.getPageConfiguration( "" );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemovePageConfigurationFailsWithNullId() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    configuration.removePageConfiguration( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemovePageConfigurationFailsWithEmptyId() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    configuration.removePageConfiguration( "" );
  }

  @Test
  public void testRemovePageConfigurationDeletesPageConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    configuration.removePageConfiguration( "foo" );

    PageConfiguration actualPageConfiguration = configuration.getPageConfiguration( "foo" );
    assertNull( actualPageConfiguration );
  }

  @Test
  public void testRemovePageConfigurationTriggersUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    configuration.removePageConfiguration( "foo" );

    verify( updater ).remove( pageConfiguration );
  }

  @Test
  public void testRemovePageConfigurationDeletesPageConfigurationFromDescriptor() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    configuration.removePageConfiguration( "foo" );

    UIDescriptor uiDescriptor = configuration.getAdapter( UIDescriptor.class );
    PageDescriptor pageDescriptor = uiDescriptor.getPageDescriptor( "foo" );
    assertNull( pageDescriptor );
  }

  @Test
  public void testHasPageConfigurationForId() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    PageConfiguration actualPageConfiguration = configuration.getPageConfiguration( "foo" );

    assertSame( pageConfiguration, actualPageConfiguration );
  }

  @Test
  public void testGetPageConfigurationReturnsNullForNonexistingPage() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class );
    configuration.addPageConfiguration( pageConfiguration );

    PageConfiguration actualPageConfiguration = configuration.getPageConfiguration( "foo2" );

    assertNull( actualPageConfiguration );
  }

  @Test
  public void testAddActionConfigurationReturnsSameUiInstance() {
    UIConfiguration configuration = new UIConfiguration();

    UIConfiguration actualConf
      = configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    assertSame( configuration, actualConf );
  }

  @Test
  public void testAddActionConfigurationWithProminenceReturnsSameUiInstance() {
    UIConfiguration configuration = new UIConfiguration();

    UIConfiguration actualConf
      = configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    assertSame( configuration, actualConf );
  }

  @Test
  public void testAddPageConfigurationDoesNotReturnNull() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class ).setTopLevel( true );

    UIConfiguration actualConf = configuration.addPageConfiguration( pageConfiguration );

    assertNotNull( actualConf );
  }

  @Test
  public void testGetDescriptorIsNotSafeCopy() {
    UIConfiguration configuration = new UIConfiguration();

    UIDescriptor contentHolder1 = configuration.getAdapter( UIDescriptor.class );
    UIDescriptor contentHolder2 = configuration.getAdapter( UIDescriptor.class );

    assertSame( contentHolder1, contentHolder2 );
    assertNotNull( contentHolder1 );
  }

  @Test
  public void testCanGetDescriptor() {
    UIConfiguration configuration = new UIConfiguration();

    UIDescriptor uiDescriptor = configuration.getAdapter( UIDescriptor.class );

    assertNotNull( uiDescriptor );
  }

  @Test
  public void testAddsPageToHolder() {
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class ).setTopLevel( true );

    configuration.addPageConfiguration( pageConfiguration );

    PageDescriptor actualDescriptor = configuration.getAdapter( UIDescriptor.class ).getPageDescriptor( "foo" );
    assertNotNull( actualDescriptor );
  }

  @Test
  public void testAddsPageTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();
    PageConfiguration pageConfiguration = new PageConfiguration( "foo", TestPage.class ).setTopLevel( true );

    configuration.addPageConfiguration( pageConfiguration );

    verify( updater ).update( configuration );
  }

  @Test
  public void testAddsActionToHolder() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    assertNotNull( configuration.getAdapter( UIDescriptor.class ).getActionDescriptor( "foo" ) );
  }

  @Test
  public void testAddActionTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();

    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    verify( updater ).update( configuration );
  }

  @Test
  public void testAddsActionWitProminenceToHolder() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    assertNotNull( configuration.getAdapter( UIDescriptor.class ).getActionDescriptor( "foo" ) );
  }

  @Test
  public void testCanGetActionConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    ActionConfiguration actionConfiguration = new ActionConfiguration( "foo", TestAction.class );
    configuration.addActionConfiguration( actionConfiguration );

    ActionConfiguration actualActionConfiguration = configuration.getActionConfiguration( "foo" );

    assertSame( actionConfiguration, actualActionConfiguration );
  }

  @Test
  public void testCanGetActionConfigurationReturnsNullForNonExistentAction() {
    UIConfiguration configuration = new UIConfiguration();
    ActionConfiguration actionConfiguration = new ActionConfiguration( "foo", TestAction.class );
    configuration.addActionConfiguration( actionConfiguration );

    ActionConfiguration actualActionConfiguration = configuration.getActionConfiguration( "foo2" );

    assertNull( actualActionConfiguration );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testGetActionConfigurationFailsWithNullId() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.getActionConfiguration( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testGetActionConfigurationFailsWithEmptyId() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.getActionConfiguration( "" );
  }

  @Test
  public void testAddsTransitionListener() {
    UIConfiguration configuration = new UIConfiguration();
    TransitionListener listener = mock( TransitionListener.class );

    configuration.addTransitionListener( listener );

    List<TransitionListener> listeners = configuration.getAdapter( UIDescriptor.class ).getTransitionListeners();
    assertTrue( listeners.contains( listener ) );
    assertEquals( 1, listeners.size() );
  }

  @Test
  public void testAddsTransitionListenerReturnsUIConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    TransitionListener listener = mock( TransitionListener.class );

    UIConfiguration actualConfiguration = configuration.addTransitionListener( listener );

    assertSame( configuration, actualConfiguration );
  }

  @Test
  public void testRemovesTransitionListener() {
    UIConfiguration configuration = new UIConfiguration();
    TransitionListener listener = mock( TransitionListener.class );
    configuration.addTransitionListener( listener );

    configuration.removeTransitionListener( listener );

    List<TransitionListener> listeners = configuration.getAdapter( UIDescriptor.class ).getTransitionListeners();
    assertTrue( listeners.isEmpty() );
  }

  @Test
  public void testRemoveTransitionListenerReturnsConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    TransitionListener listener = mock( TransitionListener.class );
    configuration.addTransitionListener( listener );

    UIConfiguration actualConfiguration = configuration.removeTransitionListener( listener );

    assertSame( configuration, actualConfiguration );
  }

  @Test
  public void testAddsActionListener() {
    UIConfiguration configuration = new UIConfiguration();
    ActionListener listener = mock( ActionListener.class );

    configuration.addActionListener( listener );

    List<ActionListener> listeners = configuration.getAdapter( UIDescriptor.class ).getActionListeners();
    assertTrue( listeners.contains( listener ) );
    assertEquals( 1, listeners.size() );
  }

  @Test
  public void testAddsActionListenerReturnsUIConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    ActionListener listener = mock( ActionListener.class );

    UIConfiguration actualConfiguration = configuration.addActionListener( listener );

    assertSame( configuration, actualConfiguration );
  }

  @Test
  public void testRemovesActionListener() {
    UIConfiguration configuration = new UIConfiguration();
    ActionListener listener = mock( ActionListener.class );
    configuration.addActionListener( listener );

    configuration.removeActionListener( listener );

    List<ActionListener> listeners = configuration.getAdapter( UIDescriptor.class ).getActionListeners();
    assertTrue( listeners.isEmpty() );
  }

  @Test
  public void testRemoveActionListenerReturnsConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    ActionListener listener = mock( ActionListener.class );
    configuration.addActionListener( listener );

    UIConfiguration actualConfiguration = configuration.removeActionListener( listener );

    assertSame( configuration, actualConfiguration );
  }

  @Test
  public void testSetsImage() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.setImage( UITestUtil.class.getResourceAsStream( "testImage.png" ) );

    byte[] image = configuration.getImage();
    assertArrayEquals( ImageUtil.getBytes( UITestUtil.class.getResourceAsStream( "testImage.png" ) ), image );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testSetImageFailsWithNull() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.setImage( null );
  }

  @Test
  public void testSetsForeground() {
    UIConfiguration configuration = new UIConfiguration();
    RGB foreground = new RGB( 233, 233, 233 );

    configuration.setForeground( foreground );

    RGB actualForeground = configuration.getForeground();
    assertEquals( foreground, actualForeground );
  }

  @Test
  public void testSetForegroundTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();

    configuration.setForeground( 100, 100, 100 );

    verify( updater, times( 1 ) ).update( configuration );
  }

  @Test
  public void testSetForegroundWithRGBTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();

    configuration.setForeground( new RGB( 100, 100, 100 ) );

    verify( updater, times( 1 ) ).update( configuration );
  }

  @Test
  public void testSetsForegroundWithRGB() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.setForeground( 233, 233, 233 );

    RGB actualForeground = configuration.getForeground();
    assertEquals( new RGB( 233, 233, 233 ), actualForeground );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testSetForegroundFailsWithNull() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.setForeground( null );
  }

  @Test
  public void testSetsBackground() {
    UIConfiguration configuration = new UIConfiguration();
    RGB background = new RGB( 233, 233, 233 );

    configuration.setBackground( background );

    RGB actualBackground = configuration.getBackground();
    assertEquals( background, actualBackground );
  }

  @Test
  public void testSetBackgroundTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();

    configuration.setBackground( 100, 100, 100 );

    verify( updater, times( 1 ) ).update( configuration );
  }

  @Test
  public void testSetBackgroundWithRGBTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();

    configuration.setBackground( new RGB( 100, 100, 100 ) );

    verify( updater, times( 1 ) ).update( configuration );
  }

  @Test
  public void testSetsBackgroundWithRGB() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.setBackground( 233, 233, 233 );

    RGB actualBackground = configuration.getBackground();
    assertEquals( new RGB( 233, 233, 233 ), actualBackground );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testSetBackgroundFailsWithNull() {
    UIConfiguration configuration = new UIConfiguration();

    configuration.setBackground( null );
  }

  @Test
  public void testRemovesActionConfiguraton() {
    UIConfiguration configuration = new UIConfiguration();
    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    configuration.removeActionConfiguration( "foo" );

    assertNull( configuration.getAdapter( UIDescriptor.class ).getActionDescriptor( "foo" ) );
  }

  @Test
  public void testRemoveActionTriggersUIUpdate() {
    UIUpdater updater = mock( UIUpdater.class );
    UpdateUtil.registerUpdater( updater );
    UIConfiguration configuration = new UIConfiguration();
    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    configuration.removeActionConfiguration( "foo" );

    verify( updater, times( 2 ) ).update( configuration );
  }

  @Test
  public void testRemoveActionReturnsUIConfiguration() {
    UIConfiguration configuration = new UIConfiguration();
    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    UIConfiguration actualConfiguration = configuration.removeActionConfiguration( "foo" );

    assertSame( configuration, actualConfiguration );
  }

  @Test( expected = IllegalStateException.class )
  public void testRemoveActionConfiguratonFailsWithNonExistingAction() {
    UIConfiguration configuration = new UIConfiguration();
    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    configuration.removeActionConfiguration( "foo2" );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemoveActionConfiguratonFailsWithNullId() {
    UIConfiguration configuration = new UIConfiguration();
    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    configuration.removeActionConfiguration( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemoveActionConfiguratonFailsWithEmptyId() {
    UIConfiguration configuration = new UIConfiguration();
    configuration.addActionConfiguration( new ActionConfiguration( "foo", TestAction.class ) );

    configuration.removeActionConfiguration( "" );
  }

}
TOP

Related Classes of com.eclipsesource.tabris.ui.UIConfigurationTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.