blob: b8734c04f7c4a3eafb33dc0619d15ad0b8afa9df [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.widgets;
import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
import junit.framework.TestCase;
import org.eclipse.rap.rwt.testfixture.Fixture;
import org.eclipse.rap.rwt.widgets.BrowserCallback;
import org.eclipse.rap.rwt.widgets.BrowserUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.internal.widgets.IBrowserAdapter;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class BrowserUtil_Test extends TestCase {
private Display display;
private Browser browser;
private BrowserCallback browserCallback;
@Override
protected void setUp() throws Exception {
Fixture.setUp();
display = new Display();
Shell shell = new Shell( display );
browser = new Browser( shell, SWT.NONE );
browserCallback = new BrowserCallback() {
public void evaluationSucceeded( Object result ) {
}
public void evaluationFailed( Exception exception ) {
}
};
}
@Override
protected void tearDown() throws Exception {
Fixture.tearDown();
}
public void testExecuteWithNullBrowser() {
try {
BrowserUtil.evaluate( null, "return true;", browserCallback );
fail();
} catch( NullPointerException expected ) {
}
}
public void testExecuteWithNullCallback() {
try {
BrowserUtil.evaluate( browser, "return true;", null );
fail();
} catch( NullPointerException expected ) {
}
}
public void testExecuteWithNullScript() {
try {
BrowserUtil.evaluate( browser, null, browserCallback );
fail();
} catch( NullPointerException expected ) {
}
}
public void testExecute() {
BrowserUtil.evaluate( browser, "return true;", browserCallback );
String expected = "(function(){return true;})();";
assertEquals( expected, browser.getAdapter( IBrowserAdapter.class ).getExecuteScript() );
}
public void testExecuteTwice() {
BrowserUtil.evaluate( browser, "return true;", browserCallback );
BrowserUtil.evaluate( browser, "return false;", browserCallback );
String expected = "(function(){return true;})();";
assertEquals( expected, browser.getAdapter( IBrowserAdapter.class ).getExecuteScript() );
}
public void testExecuteWithDisposedBrowser() {
browser.dispose();
try {
BrowserUtil.evaluate( browser, "return true;", browserCallback );
fail();
} catch( Exception expected ) {
assertEquals( "Widget is disposed", expected.getMessage() );
}
}
public void testCallCallback_Succeeded() {
final Object[] log = new Object[ 1 ];
browserCallback = new BrowserCallback() {
public void evaluationSucceeded( Object result ) {
log[ 0 ] = result;
}
public void evaluationFailed( Exception exception ) {
log[ 0 ] = exception.getMessage();
}
};
BrowserUtil.evaluate( browser, "return 5;", browserCallback );
Fixture.fakeNewRequest( display );
Fixture.fakeSetParameter( getId( browser ), "executeResult", Boolean.TRUE );
Fixture.fakeSetParameter( getId( browser ), "evaluateResult", new Double[]{ Double.valueOf( 5 ) } );
Fixture.readDataAndProcessAction( browser );
assertEquals( Integer.valueOf( 5 ), log[ 0 ] );
}
public void testCallCallback_Failed() {
final Object[] log = new Object[ 1 ];
browserCallback = new BrowserCallback() {
public void evaluationSucceeded( Object result ) {
log[ 0 ] = result;
}
public void evaluationFailed( Exception exception ) {
log[ 0 ] = exception.getMessage();
}
};
BrowserUtil.evaluate( browser, "return 5/0;", browserCallback );
Fixture.fakeNewRequest( display );
Fixture.fakeSetParameter( getId( browser ), "executeResult", Boolean.FALSE );
Fixture.fakeSetParameter( getId( browser ), "evaluateResult", "devide by zero" );
Fixture.readDataAndProcessAction( browser );
assertEquals( "Failed to evaluate Javascript expression", log[ 0 ] );
}
}