package org.timepedia.exporter.test.issues;
import org.timepedia.exporter.client.Export;
import org.timepedia.exporter.client.ExportPackage;
import org.timepedia.exporter.client.Exportable;
import com.google.gwt.core.client.GWT;
import com.google.gwt.junit.client.GWTTestCase;
public class Issue44TestGwt extends GWTTestCase {
@Override
public String getModuleName() {
return "org.timepedia.exporter.Test";
}
@Override
protected void gwtSetUp() throws Exception {
GWT.create(Impl.class);
GWT.create(ServiceImpl.class);
}
@ExportPackage("tst")
@Export("Interface")
public interface Interface extends Exportable {
public String method();
}
@ExportPackage("tst")
@Export("Impl")
public static class Impl implements Interface, Exportable {
@Override
public String method() {
return "method";
}
}
@ExportPackage("tst")
@Export("Service")
public interface Service extends Exportable {
public String accept(Interface itf);
}
@ExportPackage("tst")
@Export("ServiceImpl")
public static class ServiceImpl implements Service, Exportable {
@Override
public String accept(Interface itf) {
return itf.method();
}
}
public static native String runJs() /*-{
var service = new $wnd.tst.ServiceImpl();
var ret = "";
ret += service.accept(new $wnd.tst.Impl());
return ret;
}-*/;
public void testIssue() {
assertEquals("method", runJs());
}
}