blob: bb14bfb0cbc3ab427a3e05f2e53df54c24d150b3 [file]
/*
* Copyright 2015-2022 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 v2.0 which
* accompanies this distribution and is available at
*
* https://www.eclipse.org/legal/epl-v20.html
*/
package org.junit.jupiter.api;
import java.io.Serializable;
import java.util.Objects;
import org.opentest4j.AssertionFailedError;
import org.opentest4j.ValueWrapper;
class AssertionTestUtils {
private AssertionTestUtils() {
/* no-op */
}
static void expectAssertionFailedError() {
throw new AssertionError("Should have thrown an " + AssertionFailedError.class.getName());
}
static void assertEmptyMessage(Throwable ex) throws AssertionError {
if (!ex.getMessage().isEmpty()) {
throw new AssertionError("Exception message should be empty, but was [" + ex.getMessage() + "].");
}
}
static void assertMessageEquals(Throwable ex, String msg) throws AssertionError {
if (!msg.equals(ex.getMessage())) {
throw new AssertionError("Exception message should be [" + msg + "], but was [" + ex.getMessage() + "].");
}
}
static void assertMessageMatches(Throwable ex, String regex) throws AssertionError {
if (!ex.getMessage().matches(regex)) {
throw new AssertionError("Exception message should match regular expression [" + regex + "], but was ["
+ ex.getMessage() + "].");
}
}
static void assertMessageStartsWith(Throwable ex, String msg) throws AssertionError {
if (!ex.getMessage().startsWith(msg)) {
throw new AssertionError(
"Exception message should start with [" + msg + "], but was [" + ex.getMessage() + "].");
}
}
static void assertMessageEndsWith(Throwable ex, String msg) throws AssertionError {
if (!ex.getMessage().endsWith(msg)) {
throw new AssertionError(
"Exception message should end with [" + msg + "], but was [" + ex.getMessage() + "].");
}
}
static void assertMessageContains(Throwable ex, String msg) throws AssertionError {
if (!ex.getMessage().contains(msg)) {
throw new AssertionError(
"Exception message should contain [" + msg + "], but was [" + ex.getMessage() + "].");
}
}
static void assertMessageDoesNotContain(Throwable ex, String msg) throws AssertionError {
if (ex.getMessage().contains(msg)) {
throw new AssertionError(
"Exception message should contain [" + msg + "], but was [" + ex.getMessage() + "].");
}
}
static void assertExpectedAndActualValues(AssertionFailedError ex, Object expected, Object actual)
throws AssertionError {
if (!wrapsEqualValue(ex.getExpected(), expected)) {
throw new AssertionError("Expected value in AssertionFailedError should equal ["
+ ValueWrapper.create(expected) + "], but was [" + ex.getExpected() + "].");
}
if (!wrapsEqualValue(ex.getActual(), actual)) {
throw new AssertionError("Actual value in AssertionFailedError should equal [" + ValueWrapper.create(actual)
+ "], but was [" + ex.getActual() + "].");
}
}
static boolean wrapsEqualValue(ValueWrapper wrapper, Object value) {
if (value == null || value instanceof Serializable) {
return Objects.equals(value, wrapper.getValue());
}
return wrapper.getIdentityHashCode() == System.identityHashCode(value)
&& Objects.equals(wrapper.getStringRepresentation(), String.valueOf(value))
&& Objects.equals(wrapper.getType(), value.getClass());
}
static void recurseIndefinitely() {
// simulate infinite recursion
throw new StackOverflowError();
}
static void runOutOfMemory() {
// simulate running out of memory
throw new OutOfMemoryError("boom");
}
}