package unit;
import com.github.aesteve.vertx.nubes.utils.async.AsyncUtils;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import io.vertx.ext.unit.junit.VertxUnitRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@RunWith(VertxUnitRunner.class)
public class AsyncTest {
private final static Random rand = new Random();
protected StringBuilder testSb;
@Test
public void testChanHandlers(TestContext context) {
Async async = context.async();
testSb = new StringBuilder();
List<Handler<Future<Void>>> handlers = new ArrayList<>();
for (int i = 0; i < 10; i++) {
final int j = i;
handlers.add(fut -> println(j, fut));
}
AsyncUtils.chainHandlers(res -> {
context.assertEquals("0;1;2;3;4;5;6;7;8;9;", testSb.toString());
async.complete();
}, handlers);
}
private void println(int order, Future<Void> future) {
testSb.append(order + ";");
try {
Thread.sleep(rand.nextInt(300));
} catch (Exception e) {
}
future.complete();
}
}