/*******************************************************************************
* 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.swt.browser;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser.TypedBrowserListener;
import org.eclipse.swt.internal.SWTEventListener;
import org.eclipse.swt.internal.events.EventTypes;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Widget;
import org.mockito.ArgumentCaptor;
public class TypedBrowserListener_Test {
private Event event;
@Before
public void setUp() {
event = new Event();
event.widget = mock( Widget.class );
}
@Test
public void testGetEventListener() {
SWTEventListener wrappedListener = mock( SWTEventListener.class );
TypedBrowserListener browserListener = new TypedBrowserListener( wrappedListener );
assertSame( wrappedListener, browserListener.getEventListener() );
}
@Test
public void testHandleEventWithUnknownEventType() {
SWTEventListener wrappedListener = mock( SWTEventListener.class );
TypedBrowserListener browserListener = new TypedBrowserListener( wrappedListener );
event.type = 123456;
browserListener.handleEvent( event );
verifyZeroInteractions( wrappedListener );
}
@Test
public void testHandleEventWithLocationChanging() {
LocationListener locationListener = mock( LocationListener.class );
TypedBrowserListener browserListener = new TypedBrowserListener( locationListener );
event.type = EventTypes.LOCALTION_CHANGING;
event.text = "location";
event.detail = SWT.TOP;
browserListener.handleEvent( event );
ArgumentCaptor<LocationEvent> captor = ArgumentCaptor.forClass( LocationEvent.class );
verify( locationListener ).changing( captor.capture() );
assertEquals( event.text, captor.getValue().location );
assertTrue( captor.getValue().doit );
assertTrue( captor.getValue().top );
}
@Test
public void testHandleEventWithVetoedLocationChanging() {
LocationListener locationListener = new LocationAdapter() {
@Override
public void changing( LocationEvent event ) {
event.doit = false;
}
};
TypedBrowserListener browserListener = new TypedBrowserListener( locationListener );
event.type = EventTypes.LOCALTION_CHANGING;
event.text = "location";
browserListener.handleEvent( event );
assertFalse( event.doit );
}
@Test
public void testHandleEventWithLocationChanged() {
LocationListener locationListener = mock( LocationListener.class );
TypedBrowserListener browserListener = new TypedBrowserListener( locationListener );
event.type = EventTypes.LOCALTION_CHANGED;
event.text = "location";
event.detail = SWT.TOP;
browserListener.handleEvent( event );
ArgumentCaptor<LocationEvent> captor = ArgumentCaptor.forClass( LocationEvent.class );
verify( locationListener ).changed( captor.capture() );
assertEquals( event.text, captor.getValue().location );
assertTrue( captor.getValue().doit );
assertTrue( captor.getValue().top );
}
@Test
public void testHandleEventWithProgressChanged() {
ProgressListener locationListener = mock( ProgressListener.class );
TypedBrowserListener browserListener = new TypedBrowserListener( locationListener );
event.type = EventTypes.PROGRESS_CHANGED;
browserListener.handleEvent( event );
ArgumentCaptor<ProgressEvent> captor = ArgumentCaptor.forClass( ProgressEvent.class );
verify( locationListener ).changed( captor.capture() );
assertEquals( 0, captor.getValue().current );
assertEquals( 0, captor.getValue().total );
}
@Test
public void testHandleEventWithProgressCompleted() {
ProgressListener locationListener = mock( ProgressListener.class );
TypedBrowserListener browserListener = new TypedBrowserListener( locationListener );
event.type = EventTypes.PROGRESS_COMPLETED;
browserListener.handleEvent( event );
ArgumentCaptor<ProgressEvent> captor = ArgumentCaptor.forClass( ProgressEvent.class );
verify( locationListener ).completed( captor.capture() );
assertEquals( 0, captor.getValue().current );
assertEquals( 0, captor.getValue().total );
}
}