blob: 9f6cef19a1f1010db2700b5a82bbcbbda022bf55 [file] [log] [blame]
/*
* Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.web.bindery.requestfactory.gwt.client;
import com.google.web.bindery.requestfactory.shared.Receiver;
import com.google.web.bindery.requestfactory.shared.SimpleBarRequest;
import com.google.web.bindery.requestfactory.shared.SimpleFooRequest;
import com.google.web.bindery.requestfactory.shared.SimpleRequestFactory;
import com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext;
import java.util.ArrayList;
import java.util.List;
/**
* Runtime test for RequestBatcher.
*/
public class RequestBatcherTest extends RequestFactoryTestBase {
private class MyBatcher extends RequestBatcher<SimpleRequestFactory, SimpleFooRequest> {
public MyBatcher() {
super(req);
}
public SimpleBarRequest simpleBarRequest() {
return get().append(getRequestFactory().simpleBarRequest());
}
@Override
protected SimpleFooRequest createContext(SimpleRequestFactory requestFactory) {
return requestFactory.simpleFooRequest();
}
}
private static final int TEST_DELAY = 500000;
@Override
public String getModuleName() {
return "com.google.web.bindery.requestfactory.gwt.RequestFactorySuite";
}
/**
* Check automatic firing, chaining, and Void callbacks.
*/
public void test() {
delayTestFinish(TEST_DELAY);
final List<Boolean> ok = new ArrayList<Boolean>();
MyBatcher batcher = new MyBatcher();
batcher.get().add(3, 5).to(new Receiver<Integer>() {
@Override
public void onSuccess(Integer response) {
assertEquals(8, response.intValue());
ok.add(true);
}
});
// Verify that Request.fire() only enqueues the Receiver
batcher.simpleBarRequest().countSimpleBar().fire(new Receiver<Long>() {
@Override
public void onSuccess(Long response) {
assertEquals(2, response.longValue());
ok.add(true);
}
});
// Same check for RequestContext.fire()
batcher.get().fire(new Receiver<Void>() {
@Override
public void onSuccess(Void response) {
ok.add(true);
}
});
// Test final callbacks through RequestBatcher
batcher.get(new Receiver<Void>() {
@Override
public void onSuccess(Void response) {
assertEquals(3, ok.size());
finishTestAndReset();
}
});
assertFalse(((AbstractRequestContext) batcher.get()).isLocked());
}
}