package io.vertx.ext.unit; import io.vertx.core.Context; import io.vertx.core.Vertx; import io.vertx.ext.unit.impl.TestSuiteImpl; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import static org.junit.Assert.*; /** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ public class UseEventLoopTest { @org.junit.Test public void testWithoutVertx() { List<Context> contexts = Collections.synchronizedList(new ArrayList<>()); TestSuiteImpl suite = (TestSuiteImpl) TestSuite.create("my_suite").test("my_test", context -> { contexts.add(Vertx.currentContext()); }); try { suite.runner().setReporter(new TestReporter()).setUseEventLoop(true).run(); fail(); } catch (IllegalStateException expected) { } assertEquals(Collections.<Context>emptyList(), contexts); TestReporter reporter = new TestReporter(); suite.runner().setReporter(reporter).setUseEventLoop(false).run(); reporter.await(); assertEquals(0, reporter.exceptions.size()); assertEquals(1, reporter.results.size()); assertTrue(reporter.results.get(0).succeeded()); assertEquals(Collections.<Context>singletonList(null), contexts); reporter = new TestReporter(); suite.runner().setReporter(reporter).setUseEventLoop(null).run(); reporter.await(); assertEquals(0, reporter.exceptions.size()); assertEquals(1, reporter.results.size()); assertTrue(reporter.results.get(0).succeeded()); assertEquals(Arrays.<Context>asList(null, null), contexts); } @org.junit.Test public void testWitVertx() { Vertx vertx = Vertx.vertx(); List<Context> contexts = Collections.synchronizedList(new ArrayList<>()); TestSuiteImpl suite = (TestSuiteImpl) TestSuite.create("my_suite").test("my_test", context -> { contexts.add(Vertx.currentContext()); }); TestReporter reporter = new TestReporter(); suite.runner().setReporter(reporter).setUseEventLoop(true).setVertx(vertx).run(); reporter.await(); assertEquals(0, reporter.exceptions.size()); assertEquals(1, reporter.results.size()); assertTrue(reporter.results.get(0).succeeded()); assertEquals(1, contexts.size()); assertNotNull(contexts.get(0)); reporter = new TestReporter(); suite.runner().setReporter(reporter).setUseEventLoop(false).setVertx(vertx).run(); reporter.await(); assertEquals(0, reporter.exceptions.size()); assertEquals(1, reporter.results.size()); assertTrue(reporter.results.get(0).succeeded()); assertEquals(2, contexts.size()); assertNull(contexts.get(1)); reporter = new TestReporter(); suite.runner().setReporter(reporter).setUseEventLoop(null).setVertx(vertx).run(); reporter.await(); assertEquals(0, reporter.exceptions.size()); assertEquals(1, reporter.results.size()); assertTrue(reporter.results.get(0).succeeded()); assertEquals(3, contexts.size()); assertNotNull(contexts.get(2)); vertx.close(); } }