blob: e1b96f6462bd89431a2ceb8eeae09ff5aea3d8d6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 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 org.eclipse.rap.rwt.internal.events;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import junit.framework.TestCase;
import org.eclipse.rap.rwt.Adaptable;
import org.eclipse.swt.internal.SWTEventListener;
import org.eclipse.swt.internal.events.EventTable;
import org.eclipse.swt.widgets.TypedListener;
import org.mockito.ArgumentCaptor;
public class RWTEvent_Test extends TestCase {
private Adaptable widget;
private EventTable eventTable;
public void testAddListener() {
SWTEventListener listener = mock( SWTEventListener.class );
RWTEvent.addListener( widget, new int[] { 1, 2 }, listener );
ArgumentCaptor<TypedListener> captor = ArgumentCaptor.forClass( TypedListener.class );
verify( eventTable ).hook( eq( 1 ), captor.capture() );
assertSame( listener, captor.getValue().getEventListener() );
verify( eventTable ).hook( eq( 2 ), captor.capture() );
assertSame( listener, captor.getValue().getEventListener() );
}
public void testAddListenerWithNullListener() {
try {
RWTEvent.addListener( widget, new int[ 0 ], null );
fail();
} catch( IllegalArgumentException expected ) {
}
}
public void testRemoveListener() {
SWTEventListener listener = mock( SWTEventListener.class );
RWTEvent.removeListener( widget, new int[] { 1, 2 }, listener );
verify( eventTable ).unhook( 1, listener );
verify( eventTable ).unhook( 2, listener );
}
public void testRemoveListenerWithNullListener() {
try {
RWTEvent.removeListener( widget, new int[ 0 ], null );
fail();
} catch( IllegalArgumentException expected ) {
}
}
public void testHasListenerWithoutAnyRegisteredListener() {
boolean hasListener = RWTEvent.hasListener( widget, new int[] { 1, 2 } );
assertFalse( hasListener );
}
public void testHasListenerWithMatchingRegisteredListener() {
RWTEvent.addListener( widget, new int[] { 1 }, mock( SWTEventListener.class ) );
boolean hasListener = RWTEvent.hasListener( widget, new int[] { 1, 2 } );
assertTrue( hasListener );
}
public void testHasListenerWithoutMatchingRegisteredListener() {
RWTEvent.addListener( widget, new int[] { 1 }, mock( SWTEventListener.class ) );
boolean hasListener = RWTEvent.hasListener( widget, new int[] { 47 } );
assertFalse( hasListener );
}
@Override
protected void setUp() throws Exception {
eventTable = spy( new EventTable() );
widget = mock( Adaptable.class );
when( widget.getAdapter( EventTable.class ) ).thenReturn( eventTable );
}
}