package io.vertx.ext.unit; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; import io.vertx.ext.unit.report.ReportOptions; import io.vertx.test.core.TestUtils; 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 OptionsTest { private Boolean randomBoolean() { switch (TestUtils.randomInt() % 3) { case 0: return false; case 1: return true; default: return null; } } @org.junit.Test public void testTestOptions() { TestOptions options = new TestOptions(); assertEquals(TestOptions.DEFAULT_TIMEOUT, options.getTimeout()); assertEquals(TestOptions.DEFAULT_USE_EVENT_LOOP, options.isUseEventLoop()); assertEquals(Collections.<ReportOptions>emptyList(), options.getReporters()); long timeout = TestUtils.randomLong(); Boolean useEventLoop = randomBoolean(); assertSame(options, options.setTimeout(timeout)); assertSame(options, options.setUseEventLoop(useEventLoop)); assertEquals(timeout, options.getTimeout()); assertEquals(useEventLoop, options.isUseEventLoop()); List<ReportOptions> reporters = new ArrayList<>(); ReportOptions reporter1 = new ReportOptions(); reporters.add(reporter1); assertSame(options, options.setReporters(reporters)); assertEquals(reporters, options.getReporters()); ReportOptions reporter2 = new ReportOptions(); assertSame(options, options.addReporter(reporter2)); assertEquals(reporters, options.getReporters()); assertEquals(2, reporters.size()); assertEquals(Arrays.asList(reporter1, reporter2), reporters); } @org.junit.Test public void testReportOptions() { ReportOptions options = new ReportOptions(); assertEquals(ReportOptions.DEFAULT_TO, options.getTo()); assertEquals(ReportOptions.DEFAULT_FORMAT, options.getFormat()); String to = TestUtils.randomAlphaString(10); assertSame(options, options.setTo(to)); assertEquals(to, options.getTo()); String at = TestUtils.randomAlphaString(10); String format = TestUtils.randomAlphaString(10); assertSame(options, options.setFormat(format)); assertEquals(format, options.getFormat()); } @org.junit.Test public void testCopyOptions() { TestOptions options = new TestOptions(); long timeout = TestUtils.randomLong(); Boolean useEventLoop = randomBoolean(); String to = TestUtils.randomAlphaString(10); String at = TestUtils.randomAlphaString(10); String format = TestUtils.randomAlphaString(10); ReportOptions reporter = new ReportOptions().setTo(to).setFormat(format); options.setUseEventLoop(useEventLoop).setTimeout(timeout).addReporter(reporter); TestOptions copy = new TestOptions(options); options.setTimeout(TestUtils.randomLong()); options.setUseEventLoop(randomBoolean()); reporter.setTo(TestUtils.randomAlphaString(10)); reporter.setFormat(TestUtils.randomAlphaString(10)); options.getReporters().clear(); assertEquals(timeout, copy.getTimeout()); assertEquals(useEventLoop, copy.isUseEventLoop()); assertEquals(1, copy.getReporters().size()); assertEquals(to, copy.getReporters().get(0).getTo()); assertEquals(format, copy.getReporters().get(0).getFormat()); } @org.junit.Test public void testDefaultJsonTestOptions() { TestOptions def = new TestOptions(); TestOptions json = new TestOptions(new JsonObject()); assertEquals(json.getTimeout(), def.getTimeout()); assertEquals(json.isUseEventLoop(), def.isUseEventLoop()); assertEquals(json.getReporters(), def.getReporters()); } @org.junit.Test public void testDefaultJsonReportOptions() { ReportOptions def = new ReportOptions(); ReportOptions json = new ReportOptions(new JsonObject()); assertEquals(json.getTo(), def.getTo()); assertEquals(json.getFormat(), def.getFormat()); } @org.junit.Test public void testJsonOptions() { JsonObject json = new JsonObject(); long timeout = TestUtils.randomLong(); Boolean useEventLoop = randomBoolean(); String to = TestUtils.randomAlphaString(10); String at = TestUtils.randomAlphaString(10); String format = TestUtils.randomAlphaString(10); json.put("timeout", timeout); if (useEventLoop != null) { json.put("useEventLoop", useEventLoop); } json.put("reporters", new JsonArray(). add(new JsonObject(). put("to", to). put("at", at). put("format", format))); TestOptions options = new TestOptions(json); assertEquals(timeout, options.getTimeout()); assertEquals(useEventLoop, options.isUseEventLoop()); assertEquals(1, options.getReporters().size()); assertEquals(to, options.getReporters().get(0).getTo()); assertEquals(format, options.getReporters().get(0).getFormat()); } }