summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/utils/check/Assert.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/utils/check/Assert.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/utils/check/Assert.java361
1 files changed, 361 insertions, 0 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/utils/check/Assert.java b/propertysheet/src/org/eclipse/wb/internal/core/utils/check/Assert.java
new file mode 100644
index 0000000..28de0b6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/utils/check/Assert.java
@@ -0,0 +1,361 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Google, Inc.
+ * 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
+ *
+ * Contributors:
+ * Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.utils.check;
+
+import java.text.MessageFormat;
+
+/**
+ * <code>Assert</code> is useful for for embedding runtime sanity checks in code. The predicate
+ * methods all test a condition and throw some type of unchecked exception if the condition does not
+ * hold.
+ * <p>
+ * Assertion failure exceptions, like most runtime exceptions, are thrown when something is
+ * misbehaving. Assertion failures are invariably unspecified behavior; consequently, clients should
+ * never rely on these being thrown (and certainly should not being catching them specifically).
+ *
+ * @author scheglov_ke
+ * @coverage core.util
+ */
+public final class Assert {
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Constructor
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ private Assert() {
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // "legal"
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Asserts that an argument is legal. If the given boolean is not <code>true</code>, an
+ * <code>IllegalArgumentException</code> is thrown.
+ *
+ * @param expression
+ * the boolean expression of the check
+ * @return <code>true</code> if the check passes (does not return if the check fails)
+ * @exception IllegalArgumentException
+ * if the legality test failed
+ */
+ public static boolean isLegal(boolean expression) {
+ return isLegal(expression, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * Asserts that an argument is legal. If the given boolean is not <code>true</code>, an
+ * <code>IllegalArgumentException</code> is thrown. The given message is included in that
+ * exception, to aid debugging.
+ *
+ * @param expression
+ * the boolean expression of the check
+ * @param message
+ * the message to include in the exception
+ * @return <code>true</code> if the check passes (does not return if the check fails)
+ * @exception IllegalArgumentException
+ * if the legality test failed
+ */
+ public static boolean isLegal(boolean expression, String message) {
+ if (!expression) {
+ throw new IllegalArgumentException(message);
+ }
+ return expression;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // "null"
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Asserts that the given object is <code>null</code>. If this is not the case, some kind of
+ * unchecked exception is thrown.
+ *
+ * @param object
+ * the value to test
+ */
+ public static void isNull(Object object) {
+ isNull(object, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * Asserts that the given object is <code>null</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param object
+ * the value to test
+ * @param message
+ * the message to include in the exception
+ */
+ public static void isNull(Object object, String message) {
+ if (object != null) {
+ throw new AssertionFailedException("null argument expected: " + message); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param object
+ * the value to test
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link String#format(String, Object...)}. For example
+ * <code>"Execution flow problem. %s expected, but %s found."</code>.
+ * @param args
+ * the arguments for {@code errorFormat}
+ */
+ public static void isNull(Object object, String errorFormat, Object... args) {
+ if (object != null) {
+ fail("null argument expected: " + String.format(errorFormat, args)); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @param errorFormat
+ * the format of error message suitable for {@link MessageFormat}.
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link MessageFormat}. For example
+ * <code>"Execution flow problem. {0} expected, but {1} found."</code>.
+ */
+ public static void isNull2(Object object, String errorFormat, Object... args) {
+ if (object != null) {
+ String message = "null argument expected: " + MessageFormat.format(errorFormat, args); //$NON-NLS-1$
+ fail(message);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // not "null"
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
+ * unchecked exception is thrown.
+ *
+ * @param object
+ * the value to test
+ */
+ public static void isNotNull(Object object) {
+ isNotNull(object, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param object
+ * the value to test
+ * @param message
+ * the message to include in the exception
+ */
+ public static void isNotNull(Object object, String message) {
+ if (object == null) {
+ fail("null argument: " + message); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param object
+ * the value to test
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link String#format(String, Object...)}. For example
+ * <code>"Execution flow problem. %s expected, but %s found."</code>.
+ * @param args
+ * the arguments for {@code errorFormat}
+ */
+ public static void isNotNull(Object object, String errorFormat, Object... args) {
+ if (object == null) {
+ fail("null argument: " + String.format(errorFormat, args)); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @param errorFormat
+ * the format of error message suitable for {@link MessageFormat}.
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link MessageFormat}. For example
+ * <code>"Execution flow problem. {0} expected, but {1} found."</code>.
+ */
+ public static void isNotNull2(Object object, String errorFormat, Object... args) {
+ if (object == null) {
+ String message = "null argument: " + MessageFormat.format(errorFormat, args); //$NON-NLS-1$
+ fail(message);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Fail
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Fails with given message.
+ *
+ * @param message
+ * the message to include in the exception
+ */
+ public static void fail(String message) {
+ throw new AssertionFailedException(message);
+ }
+
+ /**
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link MessageFormat}. For example <code>"{0} expected, but {1} found."</code>.
+ */
+ public static void fail(String errorFormat, Object... args) {
+ String message = MessageFormat.format(errorFormat, args);
+ throw new AssertionFailedException(message);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // "true"
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
+ * unchecked exception is thrown.
+ *
+ * @param expression
+ * the boolean expression of the check
+ * @return <code>true</code> if the check passes (does not return if the check fails)
+ */
+ public static boolean isTrue(boolean expression) {
+ return isTrue(expression, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param expression
+ * the boolean expression of the check
+ * @param message
+ * the message to include in the exception
+ * @return <code>true</code> if the check passes (does not return if the check fails)
+ */
+ public static boolean isTrue(boolean expression, String message) {
+ if (!expression) {
+ fail("assertion failed: " + message); //$NON-NLS-1$
+ }
+ return expression;
+ }
+
+ /**
+ * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param expression
+ * the boolean expression of the check
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link String#format(String, Object...)}. For example
+ * <code>"Execution flow problem. %s expected, but %s found."</code>.
+ * @param args
+ * the arguments for {@code errorFormat}
+ * @return <code>true</code> if the check passes (does not return if the check fails)
+ */
+ public static boolean isTrue(boolean expression, String errorFormat, Object... args) {
+ if (!expression) {
+ fail("assertion failed: " + String.format(errorFormat, args)); //$NON-NLS-1$
+ }
+ return expression;
+ }
+
+ /**
+ * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param expression
+ * the boolean expression to check.
+ * @param errorFormat
+ * the format of error message to produce if the check fails, as expected by
+ * {@link MessageFormat}. For example <code>"{0} expected, but {1} found."</code>.
+ */
+ public static boolean isTrue2(boolean expression, String errorFormat, Object... args) {
+ if (!expression) {
+ fail(errorFormat, args);
+ }
+ return expression;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // equals
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Asserts that given actual value equals expected value. If this is not the case, some kind of
+ * unchecked exception is thrown.
+ *
+ * @param expected
+ * the expected value
+ * @param the
+ * actual value to check
+ */
+ public static void equals(int expected, int actual) {
+ equals(expected, actual, expected + " expected, but " + actual + " found");
+ }
+
+ /**
+ * Asserts that given actual value equals expected value. If this is not the case, some kind of
+ * unchecked exception is thrown. The given message is included in that exception, to aid
+ * debugging.
+ *
+ * @param expected
+ * the expected value
+ * @param the
+ * actual value to check
+ * @param message
+ * the message to include in the exception
+ */
+ public static void equals(int expected, int actual, String message) {
+ if (expected != actual) {
+ fail("assertation failed: " + message);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // instanceOf
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Asserts that given object is not <code>null</code> and has class compatible with given.
+ */
+ public static void instanceOf(Class<?> expectedClass, Object o) {
+ if (o == null) {
+ fail(expectedClass.getName() + " expected, but 'null' found.");
+ }
+ if (!expectedClass.isAssignableFrom(o.getClass())) {
+ fail(expectedClass.getName() + " expected, but " + o.getClass().getName() + " found.");
+ }
+ }
+}