/*
* Copyright 2015-2017 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.junit.jupiter.api;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.junit.jupiter.api.Assumptions.assumingThat;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.function.Executable;
import org.opentest4j.TestAbortedException;
/**
* Unit tests for JUnit Jupiter {@link Assumptions}.
*
* @since 5.0
*/
class AssumptionsTests {
// --- assumeTrue ----------------------------------------------------
@Test
void assumeTrueWithBooleanTrue() {
String foo = null;
try {
assumeTrue(true);
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeTrueWithBooleanSupplierTrue() {
String foo = null;
try {
assumeTrue(() -> true);
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeTrueWithBooleanTrueAndStringMessage() {
String foo = null;
try {
assumeTrue(true, "true");
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeTrueWithBooleanSupplierTrueAndMessageSupplier() {
String foo = null;
try {
assumeTrue(() -> true, () -> "true");
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeTrueWithBooleanFalse() {
assertAssumptionFailure("assumption is not true", () -> assumeTrue(false));
}
@Test
void assumeTrueWithBooleanSupplierFalse() {
assertAssumptionFailure("assumption is not true", () -> assumeTrue(() -> false));
}
@Test
void assumeTrueWithBooleanFalseAndStringMessage() {
assertAssumptionFailure("test", () -> assumeTrue(false, "test"));
}
@Test
void assumeTrueWithBooleanSupplierFalseAndStringMessage() {
assertAssumptionFailure("test", () -> assumeTrue(() -> false, "test"));
}
@Test
void assumeTrueWithBooleanSupplierFalseAndMessageSupplier() {
assertAssumptionFailure("test", () -> assumeTrue(() -> false, () -> "test"));
}
@Test
void assumeTrueWithBooleanFalseAndMessageSupplier() {
assertAssumptionFailure("test", () -> assumeTrue(false, () -> "test"));
}
// --- assumeFalse ----------------------------------------------------
@Test
void assumeFalseWithBooleanFalse() {
String foo = null;
try {
assumeFalse(false);
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeFalseWithBooleanSupplierFalse() {
String foo = null;
try {
assumeFalse(() -> false);
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeFalseWithBooleanFalseAndStringMessage() {
String foo = null;
try {
assumeFalse(false, "false");
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeFalseWithBooleanSupplierFalseAndMessageSupplier() {
String foo = null;
try {
assumeFalse(() -> false, () -> "false");
foo = "foo";
}
finally {
assertNotNull(foo);
}
}
@Test
void assumeFalseWithBooleanTrue() {
assertAssumptionFailure("assumption is not false", () -> assumeFalse(true));
}
@Test
void assumeFalseWithBooleanSupplierTrue() {
assertAssumptionFailure("assumption is not false", () -> assumeFalse(() -> true));
}
@Test
void assumeFalseWithBooleanTrueAndStringMessage() {
assertAssumptionFailure("test", () -> assumeFalse(true, "test"));
}
@Test
void assumeFalseWithBooleanSupplierTrueAndMessage() {
assertAssumptionFailure("test", () -> assumeFalse(() -> true, "test"));
}
@Test
void assumeFalseWithBooleanSupplierTrueAndMessageSupplier() {
assertAssumptionFailure("test", () -> assumeFalse(() -> true, () -> "test"));
}
@Test
void assumeFalseWithBooleanTrueAndMessageSupplier() {
assertAssumptionFailure("test", () -> assumeFalse(true, () -> "test"));
}
// --- assumingThat --------------------------------------------------
@Test
void assumingThatWithBooleanTrue() {
List<String> list = new ArrayList<>();
assumingThat(true, () -> list.add("test"));
assertEquals(1, list.size());
assertEquals("test", list.get(0));
}
@Test
void assumingThatWithBooleanSupplierTrue() {
List<String> list = new ArrayList<>();
assumingThat(() -> true, () -> list.add("test"));
assertEquals(1, list.size());
assertEquals("test", list.get(0));
}
@Test
void assumingThatWithBooleanFalse() {
List<String> list = new ArrayList<>();
assumingThat(false, () -> list.add("test"));
assertEquals(0, list.size());
}
@Test
void assumingThatWithBooleanSupplierFalse() {
List<String> list = new ArrayList<>();
assumingThat(() -> false, () -> list.add("test"));
assertEquals(0, list.size());
}
// -------------------------------------------------------------------
private static void assertAssumptionFailure(String msg, Executable executable) {
try {
executable.execute();
expectTestAbortedException();
}
catch (Throwable ex) {
assertTrue(ex instanceof TestAbortedException);
assertMessageEquals((TestAbortedException) ex, "Assumption failed: " + msg);
}
}
private static void expectTestAbortedException() {
throw new AssertionError("Should have thrown a " + TestAbortedException.class.getName());
}
private static void assertMessageEquals(TestAbortedException ex, String msg) throws AssertionError {
if (!msg.equals(ex.getMessage())) {
throw new AssertionError(
"Message in TestAbortedException should be [" + msg + "], but was [" + ex.getMessage() + "].");
}
}
}