package io.vertx.ext.unit;
import groovy.lang.GroovyShell;
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.unit.collect.EventBusCollector;
import io.vertx.test.core.AsyncTestBase;
import io.vertx.test.core.VertxTestBase;
/**
* @author <a href="mailto:julien@julienviet.com">Julien Viet</a>
*/
public class LangTest extends VertxTestBase {
@org.junit.Test
public void testGroovy() throws Exception {
GroovyShell shell = new GroovyShell();
shell.setVariable("done", (Runnable) () -> {
testComplete();
});
shell.evaluate(LangTest.class.getResource("/plain/timer.groovy").toURI());
await();
}
@org.junit.Test
public void testAssertionsJs() throws Exception {
testAssertions("js:verticle/assertions");
}
@org.junit.Test
public void testAssertionsGroovy() throws Exception {
testAssertions("groovy:verticle/assertions.groovy");
}
@org.junit.Test
public void testAssertionsRuby() throws Exception {
testAssertions("rb:verticle/assertions.rb");
}
private void testAssertions(String verticle) throws Exception {
vertx.eventBus().<JsonObject>consumer("assert_tests").bodyStream().handler(msg -> {
String type = msg.getString("type");
switch (type) {
case EventBusCollector.EVENT_TEST_CASE_END:
String name = msg.getString("name");
if (name.startsWith("fail_")) {
assertNotNull(msg.getValue("failure"));
} else {
assertEquals(null, msg.getValue("failure"));
}
break;
case EventBusCollector.EVENT_TEST_SUITE_END:
testComplete();
break;
}
});
vertx.deployVerticle(verticle, ar -> {
assertTrue(ar.succeeded());
});
await();
}
}