Package com.eclipsesource.tabris.passepartout.internal

Source Code of com.eclipsesource.tabris.passepartout.internal.ResourceImplTest

/*******************************************************************************
* Copyright (c) 2014 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.passepartout.internal;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;

import org.eclipse.jface.resource.FontDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Widget;
import org.junit.Before;
import org.junit.Test;

import com.eclipsesource.tabris.passepartout.PassePartout;
import com.eclipsesource.tabris.passepartout.Rule;
import com.eclipsesource.tabris.passepartout.internal.condition.AlwaysTrueContidtion;
import com.eclipsesource.tabris.passepartout.internal.instruction.BackgroundImageInstruction;
import com.eclipsesource.tabris.passepartout.internal.instruction.BackgroundInstruction;
import com.eclipsesource.tabris.passepartout.internal.instruction.FontInstruction;
import com.eclipsesource.tabris.passepartout.internal.instruction.ForegroundInstruction;
import com.eclipsesource.tabris.passepartout.internal.instruction.ImageInstruction;
import com.eclipsesource.tabris.test.util.TabrisEnvironment;


public class ResourceImplTest {

  @org.junit.Rule
  public TabrisEnvironment environment = new TabrisEnvironment();

  private Shell shell;

  @Before
  public void setUp() {
    shell = new Shell( new Display() );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testFailsWithNullRules() {
    Rule[] rules = null;

    new ResourceImpl( rules );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testFailsWithNullRule() {
    Rule[] rules = new Rule[] { mock( Rule.class ), null, mock( Rule.class ) };

    new ResourceImpl( rules );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testBindToFailsWithNullWidgets() {
    Rule[] rules = new Rule[] { mock( Rule.class ), mock( Rule.class ) };
    ResourceImpl resource = new ResourceImpl( rules );
    Widget[] widgets = null;

    resource.bindTo( widgets );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testBindToFailsWithNullWidget() {
    Rule[] rules = new Rule[] { mock( Rule.class ), mock( Rule.class ) };
    ResourceImpl resource = new ResourceImpl( rules );
    Widget[] widgets = new Widget[] { shell, null };

    resource.bindTo( widgets );
  }

  @Test
  public void testAppliesFont() {
    Font font = FontDescriptor.createFrom( shell.getDisplay().getSystemFont() ).setHeight( 44 ).createFont( shell.getDisplay() );
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new FontInstruction( font ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( shell );

    assertEquals( font, shell.getFont() );
  }

  @Test
  public void testAppliesForeground() {
    Color color = shell.getDisplay().getSystemColor( SWT.COLOR_BLUE );
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new ForegroundInstruction( color ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( shell );

    assertEquals( color, shell.getForeground() );
  }

  @Test
  public void testAppliesBackground() {
    Color color = shell.getDisplay().getSystemColor( SWT.COLOR_BLUE );
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new BackgroundInstruction( color ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( shell );

    assertEquals( color, shell.getBackground() );
  }

  @Test
  public void testAppliesBackgroundImage() {
    Image image = environment.getTestImage();
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new BackgroundImageInstruction( image ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( shell );

    assertEquals( image, shell.getBackgroundImage() );
  }

  @Test
  public void testAppliesImageOnLabel() {
    Label label = new Label( shell, SWT.NONE );
    Image image = environment.getTestImage();
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new ImageInstruction( image ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( label );

    assertEquals( image, label.getImage() );
  }

  @Test
  public void testAppliesImageOnButton() {
    Button button = new Button( shell, SWT.PUSH );
    Image image = environment.getTestImage();
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new ImageInstruction( image ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( button );

    assertEquals( image, button.getImage() );
  }

  @Test
  public void testAppliesImageOnItem() {
    ToolBar toolBar = new ToolBar( shell, SWT.NONE );
    ToolItem toolItem = new ToolItem( toolBar, SWT.NONE );
    Image image = environment.getTestImage();
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new ImageInstruction( image ) );
    ResourceImpl resource = new ResourceImpl( rule );
    shell.open();

    resource.bindTo( toolItem );

    assertEquals( image, toolItem.getImage() );
  }

  @Test
  public void testRegistersItselfAsResizeListener() {
    Color color = shell.getDisplay().getSystemColor( SWT.COLOR_BLUE );
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new ForegroundInstruction( color ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( shell );

    boolean hasListener = hasResizeListener( resource );
    assertTrue( hasListener );
  }

  @Test
  public void testRegistersItselfAsResizeListenerWithItem() {
    ToolBar toolBar = new ToolBar( shell, SWT.NONE );
    ToolItem toolItem = new ToolItem( toolBar, SWT.NONE );
    Color color = shell.getDisplay().getSystemColor( SWT.COLOR_BLUE );
    Rule rule = PassePartout.when( new AlwaysTrueContidtion() ).then( new ForegroundInstruction( color ) );
    ResourceImpl resource = new ResourceImpl( rule );

    resource.bindTo( toolItem );

    boolean hasListener = hasResizeListener( resource );
    assertTrue( hasListener );
  }

  private boolean hasResizeListener( ResourceImpl resource ) {
    boolean hasListener = false;
    Listener[] listeners = shell.getListeners( SWT.Resize );
    for( Listener listener : listeners ) {
      if( listener == resource ) {
        hasListener = true;
      }
    }
    return hasListener;
  }
}
TOP

Related Classes of com.eclipsesource.tabris.passepartout.internal.ResourceImplTest

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.