Invariants.java
- package com.renomad.minum.utils;
- /**
- * Utilities for asserting invariants within the code.
- * <br>
- * The purpose here is to make firm statements about the code. This is
- * to help document the code, (e.g. at this point, x is the sum of the ...),
- * to include testing mindset in the code, and to guard against adding
- * bugs during maintenance.
- */
- public final class Invariants {
- private Invariants() {
- // cannot construct
- }
- /**
- * Specify something which must be true.
- * <p>
- * Throws an {@link InvariantException} if false
- * @param predicate the boolean expression that must be true at this point
- * @param message a message that will be included in the exception if this is false
- */
- public static void mustBeTrue(boolean predicate, String message) {
- if (!predicate) {
- throw new InvariantException(message);
- }
- }
- /**
- * Specify something which must be false
- * <p>
- * Throws an {@link InvariantException} if true
- * @param predicate the boolean expression that must be false at this point
- * @param message a message that will be included in the exception if this is true
- */
- public static void mustBeFalse(boolean predicate, String message) {
- if (predicate) {
- throw new InvariantException(message);
- }
- }
- /**
- * specifies that the parameter must be not null.
- * <p>
- * Throws an {@link InvariantException} if null.
- * @return the object if not null
- */
- public static <T> T mustNotBeNull(T object) {
- if (object == null) {
- throw new InvariantException("value must not be null");
- } else {
- return object;
- }
- }
- }