package xapi.fu;
import java.util.Objects;
/**
* @author James X. Nelson (james@wetheinter.net)
* Created on 07/11/15.
*/
public interface Require extends Debuggable {
default Require requireTrue(boolean result, Object ... debugValues) {
if (!result) {
fail(debugValues);
}
return this;
}
default void fail(Object[] debugValues) {
if (debugEnabled()) {
assert false : debug(debugValues);
}
}
default Require requireFalse(boolean result, Object ... debugValues) {
if (result) {
fail(debugValues);
}
return this;
}
default Require requireNull(Object value, Object ... debugValues) {
if (value != null) {
fail(debugValues);
}
return this;
}
default Require requireNotNull(Object value, Object ... debugValues) {
if (value == null) {
fail(debugValues);
}
return this;
}
default Require requireEquals(Object actual, Object expected, Object ... debugValues) {
if (!Objects.equals(actual, expected)) {
fail(debugValues);
}
return this;
}
default Require requireNotEquals(Object actual, Object expected, Object ... debugValues) {
if (Objects.equals(actual, expected)) {
fail(debugValues);
}
return this;
}
default Require requireSame(Object actual, Object expected, Object ... debugValues) {
if (actual != expected) {
fail(debugValues);
}
return this;
}
default Require requireNotSame(Object actual, Object expected, Object ... debugValues) {
if (actual == expected) {
fail(debugValues);
}
return this;
}
}