1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/*******************************************************************************
2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2011 Google, Inc.
3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials
4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0
5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at
6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html
7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors:
9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *    Google, Inc. - initial API and implementation
10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/
11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.utils.check;
12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport java.text.MessageFormat;
14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/**
16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <code>Assert</code> is useful for for embedding runtime sanity checks in code. The predicate
17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * methods all test a condition and throw some type of unchecked exception if the condition does not
18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * hold.
19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <p>
20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Assertion failure exceptions, like most runtime exceptions, are thrown when something is
21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * misbehaving. Assertion failures are invariably unspecified behavior; consequently, clients should
22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * never rely on these being thrown (and certainly should not being catching them specifically).
23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke
25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.util
26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */
27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic final class Assert {
28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Constructor
31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  private Assert() {
34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // "legal"
39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that an argument is legal. If the given boolean is not <code>true</code>, an
43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * <code>IllegalArgumentException</code> is thrown.
44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expression
46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the boolean expression of the check
47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return <code>true</code> if the check passes (does not return if the check fails)
48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @exception IllegalArgumentException
49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *              if the legality test failed
50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static boolean isLegal(boolean expression) {
52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return isLegal(expression, ""); //$NON-NLS-1$
53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that an argument is legal. If the given boolean is not <code>true</code>, an
57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * <code>IllegalArgumentException</code> is thrown. The given message is included in that
58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * exception, to aid debugging.
59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expression
61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the boolean expression of the check
62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param message
63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the message to include in the exception
64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return <code>true</code> if the check passes (does not return if the check fails)
65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @exception IllegalArgumentException
66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *              if the legality test failed
67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static boolean isLegal(boolean expression, String message) {
69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (!expression) {
70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      throw new IllegalArgumentException(message);
71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return expression;
73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // "null"
78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given object is <code>null</code>. If this is not the case, some kind of
82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown.
83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param object
85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the value to test
86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNull(Object object) {
88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    isNull(object, ""); //$NON-NLS-1$
89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given object is <code>null</code>. If this is not the case, some kind of
93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param object
97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the value to test
98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param message
99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the message to include in the exception
100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNull(Object object, String message) {
102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (object != null) {
103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      throw new AssertionFailedException("null argument expected: " + message); //$NON-NLS-1$
104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param object
113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the value to test
114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link String#format(String, Object...)}. For example
117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          <code>"Execution flow problem. %s expected, but %s found."</code>.
118765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param args
119765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the arguments for {@code errorFormat}
120765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
121765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNull(Object object, String errorFormat, Object... args) {
122765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (object != null) {
123765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail("null argument expected: " + String.format(errorFormat, args)); //$NON-NLS-1$
124765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
125765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
126765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
127765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
128765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
129765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message suitable for {@link MessageFormat}.
130765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
131765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
132765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link MessageFormat}. For example
133765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          <code>"Execution flow problem. {0} expected, but {1} found."</code>.
134765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
135765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNull2(Object object, String errorFormat, Object... args) {
136765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (object != null) {
137765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      String message = "null argument expected: " + MessageFormat.format(errorFormat, args); //$NON-NLS-1$
138765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail(message);
139765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
140765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
141765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
142765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
143765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
144765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // not "null"
145765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
146765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
147765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
148765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
149765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown.
150765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
151765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param object
152765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the value to test
153765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
154765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNotNull(Object object) {
155765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    isNotNull(object, ""); //$NON-NLS-1$
156765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
157765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
158765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
159765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
160765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
161765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
162765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
163765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param object
164765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the value to test
165765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param message
166765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the message to include in the exception
167765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
168765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNotNull(Object object, String message) {
169765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (object == null) {
170765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail("null argument: " + message); //$NON-NLS-1$
171765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
172765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
173765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
174765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
175765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of
176765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
177765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
178765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
179765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param object
180765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the value to test
181765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
182765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
183765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link String#format(String, Object...)}. For example
184765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          <code>"Execution flow problem. %s expected, but %s found."</code>.
185765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param args
186765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the arguments for {@code errorFormat}
187765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
188765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNotNull(Object object, String errorFormat, Object... args) {
189765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (object == null) {
190765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail("null argument: " + String.format(errorFormat, args)); //$NON-NLS-1$
191765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
192765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
193765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
194765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
195765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
196765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message suitable for {@link MessageFormat}.
197765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
198765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
199765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link MessageFormat}. For example
200765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          <code>"Execution flow problem. {0} expected, but {1} found."</code>.
201765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
202765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void isNotNull2(Object object, String errorFormat, Object... args) {
203765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (object == null) {
204765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      String message = "null argument: " + MessageFormat.format(errorFormat, args); //$NON-NLS-1$
205765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail(message);
206765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
207765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
208765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
209765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
210765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
211765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Fail
212765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
213765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
214765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
215765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Fails with given message.
216765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
217765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param message
218765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the message to include in the exception
219765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
220765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void fail(String message) {
221765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    throw new AssertionFailedException(message);
222765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
223765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
224765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
225765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
226765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
227765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link MessageFormat}. For example <code>"{0} expected, but {1} found."</code>.
228765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
229765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void fail(String errorFormat, Object... args) {
230765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    String message = MessageFormat.format(errorFormat, args);
231765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    throw new AssertionFailedException(message);
232765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
233765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
234765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
235765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
236765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // "true"
237765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
238765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
239765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
240765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
241765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown.
242765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
243765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expression
244765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the boolean expression of the check
245765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return <code>true</code> if the check passes (does not return if the check fails)
246765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
247765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static boolean isTrue(boolean expression) {
248765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return isTrue(expression, ""); //$NON-NLS-1$
249765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
250765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
251765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
252765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
253765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
254765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
255765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
256765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expression
257765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the boolean expression of the check
258765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param message
259765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the message to include in the exception
260765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return <code>true</code> if the check passes (does not return if the check fails)
261765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
262765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static boolean isTrue(boolean expression, String message) {
263765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (!expression) {
264765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail("assertion failed: " + message); //$NON-NLS-1$
265765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
266765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return expression;
267765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
268765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
269765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
270765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
271765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
272765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
273765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
274765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expression
275765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the boolean expression of the check
276765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
277765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
278765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link String#format(String, Object...)}. For example
279765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          <code>"Execution flow problem. %s expected, but %s found."</code>.
280765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param args
281765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the arguments for {@code errorFormat}
282765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return <code>true</code> if the check passes (does not return if the check fails)
283765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
284765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static boolean isTrue(boolean expression, String errorFormat, Object... args) {
285765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (!expression) {
286765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail("assertion failed: " + String.format(errorFormat, args)); //$NON-NLS-1$
287765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
288765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return expression;
289765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
290765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
291765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
292765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that the given boolean is <code>true</code>. If this is not the case, some kind of
293765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
294765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
295765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
296765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expression
297765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the boolean expression to check.
298765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param errorFormat
299765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the format of error message to produce if the check fails, as expected by
300765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          {@link MessageFormat}. For example <code>"{0} expected, but {1} found."</code>.
301765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
302765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static boolean isTrue2(boolean expression, String errorFormat, Object... args) {
303765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (!expression) {
304765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail(errorFormat, args);
305765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
306765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return expression;
307765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
308765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
309765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
310765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
311765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // equals
312765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
313765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
314765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
315765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that given actual value equals expected value. If this is not the case, some kind of
316765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown.
317765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
318765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expected
319765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the expected value
320765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param the
321765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          actual value to check
322765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
323765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void equals(int expected, int actual) {
324765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    equals(expected, actual, expected + " expected, but " + actual + " found");
325765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
326765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
327765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
328765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that given actual value equals expected value. If this is not the case, some kind of
329765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * unchecked exception is thrown. The given message is included in that exception, to aid
330765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * debugging.
331765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
332765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param expected
333765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the expected value
334765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param the
335765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          actual value to check
336765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param message
337765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          the message to include in the exception
338765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
339765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void equals(int expected, int actual, String message) {
340765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (expected != actual) {
341765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail("assertation failed: " + message);
342765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
343765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
344765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
345765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
346765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
347765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // instanceOf
348765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
349765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
350765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
351765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Asserts that given object is not <code>null</code> and has class compatible with given.
352765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
353765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static void instanceOf(Class<?> expectedClass, Object o) {
354765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (o == null) {
355765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail(expectedClass.getName() + " expected, but 'null' found.");
356765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
357765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (!expectedClass.isAssignableFrom(o.getClass())) {
358765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      fail(expectedClass.getName() + " expected, but " + o.getClass().getName() + " found.");
359765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
360765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
361765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye}
362