1336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beustpackage org.testng; 2336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust 3ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beustimport static org.testng.internal.EclipseInterface.ASSERT_LEFT; 4ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beustimport static org.testng.internal.EclipseInterface.ASSERT_LEFT2; 5ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beustimport static org.testng.internal.EclipseInterface.ASSERT_MIDDLE; 6ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beustimport static org.testng.internal.EclipseInterface.ASSERT_RIGHT; 7ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beust 80a050892401fb27d1c7629e37fe9c8796ea5a349Cédric Beustimport org.testng.collections.Lists; 90a050892401fb27d1c7629e37fe9c8796ea5a349Cédric Beust 10ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.comimport java.lang.reflect.Array; 11336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beustimport java.util.Arrays; 12336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beustimport java.util.Collection; 13336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beustimport java.util.Iterator; 14df28a347d6555ded78c82e7b994054da3d1cb0f2Cédric Beustimport java.util.List; 1599b4d6c265461884836106022c6ed4d22b822a13Cédric Beustimport java.util.Map; 1699b4d6c265461884836106022c6ed4d22b822a13Cédric Beustimport java.util.Set; 17336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust 18336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust 19336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust/** 20336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * Assertion tool class. Presents assertion methods with a more natural parameter order. 21336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * The order is always <B>actualValue</B>, <B>expectedValue</B> [, message]. 22336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * 23336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * @author <a href='mailto:the_mindstorm@evolva.ro'>Alexandru Popescu</a> 24336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 25336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beustpublic class Assert { 260f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 27336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 28336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * Protect constructor since it is a static only class 29336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 30336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust protected Assert() { 31d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel // hide constructor 32336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 330f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 34336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 350f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * Asserts that a condition is true. If it isn't, 36cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 370f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param condition the condition to evaluate 380f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 39336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 40ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertTrue(boolean condition, String message) { 41336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(!condition) { 420cd523e46e71bb9a1340432eb43c521cadf3dc71Ryan Schmitt failNotEquals(condition, Boolean.TRUE, message); 43336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 44336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 450f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 46336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 470f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * Asserts that a condition is true. If it isn't, 48cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 490f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param condition the condition to evaluate 50336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 51336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertTrue(boolean condition) { 52336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertTrue(condition, null); 53336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 540f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 55336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 560f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * Asserts that a condition is false. If it isn't, 57cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 580f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param condition the condition to evaluate 590f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 60336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 61ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertFalse(boolean condition, String message) { 62bfc892e5a2c109c04331620f6a838d3742927018the.mindstorm if(condition) { 630cd523e46e71bb9a1340432eb43c521cadf3dc71Ryan Schmitt failNotEquals(condition, Boolean.FALSE, message); // TESTNG-81 64bfc892e5a2c109c04331620f6a838d3742927018the.mindstorm } 65336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 660f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 67336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 680f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * Asserts that a condition is false. If it isn't, 69cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 700f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param condition the condition to evaluate 71336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 72336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertFalse(boolean condition) { 73336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertFalse(condition, null); 74336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 750f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 76336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 77336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * Fails a test with the given message and wrapping the original exception. 780f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * 79d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param message the assertion error message 80d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param realCause the original exception 81336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 82ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void fail(String message, Throwable realCause) { 83336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust AssertionError ae = new AssertionError(message); 84336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust ae.initCause(realCause); 850f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 86336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust throw ae; 87336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 880f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 89336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 90336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * Fails a test with the given message. 910f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 92336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 93ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void fail(String message) { 94336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust throw new AssertionError(message); 95336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 97336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 98336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * Fails a test with no message. 99336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 100336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void fail() { 101336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust fail(null); 102336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 1030f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 104336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 105cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two objects are equal. If they are not, 106cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 1070f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 1080f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 1090f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 110336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 111ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(Object actual, Object expected, String message) { 112f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk if (expected != null && expected.getClass().isArray()) { 113f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk assertArrayEquals(actual, expected, message); 11418788dcf8b825f4e62e3a25bd9530786172a16ecDennis Byrne return; 115336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 116f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk assertEqualsImpl(actual, expected, message); 11766373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk } 11866373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk 11966373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk /** 120f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk * Differs from {@link #assertEquals(Object, Object, String)} by not taking arrays into 121f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk * special consideration hence comparing them by reference. Intended to be called directly 122f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk * to test equality of collections content. 12366373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk */ 124f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk private static void assertEqualsImpl(Object actual, Object expected, 125f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk String message) { 126f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk if((expected == null) && (actual == null)) { 127f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk return; 128f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk } 129f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk if(expected == null ^ actual == null) { 130f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk failNotEquals(actual, expected, message); 131f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk } 132f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk if (expected.equals(actual) && actual.equals(expected)) { 133f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk return; 134f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk } 135f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk failNotEquals(actual, expected, message); 136f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk } 13766373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk 138ca97550ae192637ee28884dc17a7ec49893ef7f0nullin private static void assertArrayEquals(Object actual, Object expected, String message) { 13966373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk if (expected == actual) { 14066373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk return; 14166373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk } 14266373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk if (null == expected) { 14366373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk fail("expected a null array, but not null found. " + message); 14466373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk } 14566373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk if (null == actual) { 14666373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk fail("expected not null array, but null found. " + message); 14766373cdcb2afab8a66727b51de95241f47464c36Andrew Barchuk } 148ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com //is called only when expected is an array 149ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com if (actual.getClass().isArray()) { 150ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com int expectedLength = Array.getLength(expected); 151ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com if (expectedLength == Array.getLength(actual)) { 152ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com for (int i = 0 ; i < expectedLength ; i++) { 153ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com Object _actual = Array.get(actual, i); 154ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com Object _expected = Array.get(expected, i); 155ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com try { 156ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com assertEquals(_actual, _expected); 157ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } catch (AssertionError ae) { 1580f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin failNotEquals(actual, expected, message == null ? "" : message 15956f1a1d9b5ae81dced70093f2f4120dfaa774e5eYossi Farjoun + " (values at index " + i + " are not the same)"); 160ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } 161ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } 162ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com //array values matched 163ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com return; 164ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } else { 1650f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin failNotEquals(Array.getLength(actual), expectedLength, message == null ? "" : message 166ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com + " (Array lengths are not the same)"); 167ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } 168ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } 169ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com failNotEquals(actual, expected, message); 170ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com } 171ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com 172f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk /** 173cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two objects are equal. If they are not, 174336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * an AssertionError is thrown. 1750f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 1760f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 177336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 178336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(Object actual, Object expected) { 179336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 180336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 1810f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 182336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 183cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two Strings are equal. If they are not, 184cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 1850f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 1860f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 1870f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 188336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 189ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(String actual, String expected, String message) { 190336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals((Object) actual, (Object) expected, message); 191336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 1920f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 193336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 194cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two Strings are equal. If they are not, 195cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 1960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 1970f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 198336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 199336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(String actual, String expected) { 200336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 201336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2020f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 203336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 204cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two doubles are equal concerning a delta. If they are not, 205cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. If the expected 206336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * value is infinity then the delta value is ignored. 2070f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 2080f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 2092553c6b812f3291c35010b75d2126a34f80947feMarius Volkhart * @param delta the absolute tolerable difference between the actual and expected values 2100f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 211336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 212ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(double actual, double expected, double delta, String message) { 213336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust // handle infinity specially since subtracting to infinite values gives NaN and the 214336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust // the following test fails 215336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(Double.isInfinite(expected)) { 216336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(!(expected == actual)) { 2170cd523e46e71bb9a1340432eb43c521cadf3dc71Ryan Schmitt failNotEquals(actual, expected, message); 218336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 219336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2208ed18e3b37fa333a844f07e1e9c2caea8c33571bJulien Herr else if (Double.isNaN(expected)) { 2218ed18e3b37fa333a844f07e1e9c2caea8c33571bJulien Herr if (!Double.isNaN(actual)) { 2228ed18e3b37fa333a844f07e1e9c2caea8c33571bJulien Herr failNotEquals(actual, expected, message); 2238ed18e3b37fa333a844f07e1e9c2caea8c33571bJulien Herr } 2248ed18e3b37fa333a844f07e1e9c2caea8c33571bJulien Herr } 2258ed18e3b37fa333a844f07e1e9c2caea8c33571bJulien Herr else if(!(Math.abs(expected - actual) <= delta)) { 2260cd523e46e71bb9a1340432eb43c521cadf3dc71Ryan Schmitt failNotEquals(actual, expected, message); 227336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 228336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2290f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 230336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 231cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two doubles are equal concerning a delta. If they are not, 2320f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * an AssertionError is thrown. If the expected value is infinity then the 2330f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * delta value is ignored. 2340f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 2350f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 2362553c6b812f3291c35010b75d2126a34f80947feMarius Volkhart * @param delta the absolute tolerable difference between the actual and expected values 237336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 238336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(double actual, double expected, double delta) { 239336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, delta, null); 240336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2410f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 242336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 243cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two floats are equal concerning a delta. If they are not, 244cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. If the expected 245336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * value is infinity then the delta value is ignored. 2460f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 2470f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 2482553c6b812f3291c35010b75d2126a34f80947feMarius Volkhart * @param delta the absolute tolerable difference between the actual and expected values 2490f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 250336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 251ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(float actual, float expected, float delta, String message) { 252336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust // handle infinity specially since subtracting to infinite values gives NaN and the 253336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust // the following test fails 254336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(Float.isInfinite(expected)) { 255336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(!(expected == actual)) { 2560cd523e46e71bb9a1340432eb43c521cadf3dc71Ryan Schmitt failNotEquals(actual, expected, message); 257336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 258336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 259336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust else if(!(Math.abs(expected - actual) <= delta)) { 2600cd523e46e71bb9a1340432eb43c521cadf3dc71Ryan Schmitt failNotEquals(actual, expected, message); 261336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 262336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2630f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 264336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 265cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two floats are equal concerning a delta. If they are not, 266cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. If the expected 267336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust * value is infinity then the delta value is ignored. 2680f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 2690f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 2702553c6b812f3291c35010b75d2126a34f80947feMarius Volkhart * @param delta the absolute tolerable difference between the actual and expected values 271336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 272336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(float actual, float expected, float delta) { 273336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, delta, null); 274336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2750f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 276336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 277cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two longs are equal. If they are not, 278cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 2790f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 2800f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 2810f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 282336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 283ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(long actual, long expected, String message) { 2840b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin assertEquals(Long.valueOf(actual), Long.valueOf(expected), message); 285336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2860f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 287336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 288cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two longs are equal. If they are not, 289cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 2900f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 2910f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 292336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 293336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(long actual, long expected) { 294336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 295336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 2960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 297336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 298cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two booleans are equal. If they are not, 299cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 3000f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3010f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 3020f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 303336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 304ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(boolean actual, boolean expected, String message) { 305944fc31cd4bdcaa04baf0d025d67395c6b378a9fgkorland assertEquals( Boolean.valueOf(actual), Boolean.valueOf(expected), message); 306336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3070f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 308336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 309cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two booleans are equal. If they are not, 310cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 3110f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3120f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 313336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 314336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(boolean actual, boolean expected) { 315336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 316336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3170f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 318336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 319cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two bytes are equal. If they are not, 320cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 3210f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3220f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 3230f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 324336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 325ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(byte actual, byte expected, String message) { 3260b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin assertEquals(Byte.valueOf(actual), Byte.valueOf(expected), message); 327336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3280f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 329336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 330cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two bytes are equal. If they are not, 331cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 3320f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3330f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 334336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 335336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(byte actual, byte expected) { 336336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 337336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3380f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 339336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 340cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two chars are equal. If they are not, 341cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionFailedError, with the given message, is thrown. 3420f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3430f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 3440f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 345336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 346ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(char actual, char expected, String message) { 3470b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin assertEquals(Character.valueOf(actual), Character.valueOf(expected), message); 348336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3490f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 350336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 351cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two chars are equal. If they are not, 352cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 3530f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3540f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 355336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 356336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(char actual, char expected) { 357336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 358336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3590f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 360336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 361cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two shorts are equal. If they are not, 362cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionFailedError, with the given message, is thrown. 3630f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3640f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 3650f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 366336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 367ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(short actual, short expected, String message) { 3680b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin assertEquals(Short.valueOf(actual), Short.valueOf(expected), message); 369336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3700f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 371336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 372cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two shorts are equal. If they are not, 373cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 3740f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3750f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 376d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel */ 377336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(short actual, short expected) { 378336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 379336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3800f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 381336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 382cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two ints are equal. If they are not, 383cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionFailedError, with the given message, is thrown. 3840f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3850f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 3860f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 387336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 388ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(int actual, int expected, String message) { 3890b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin assertEquals(Integer.valueOf(actual), Integer.valueOf(expected), message); 390336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 3910f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 392336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 393cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two ints are equal. If they are not, 394cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 3950f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 3960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 397d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel */ 398336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(int actual, int expected) { 399336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 400336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4010f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 402336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 403cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that an object isn't null. If it is, 404cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 405d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param object the assertion object 406336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 407336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertNotNull(Object object) { 408336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertNotNull(object, null); 409336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4100f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 411336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 412cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that an object isn't null. If it is, 413cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionFailedError, with the given message, is thrown. 414d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param object the assertion object 4150f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 416336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 417ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertNotNull(Object object, String message) { 4188b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust if (object == null) { 4198b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust String formatted = ""; 4208b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust if(message != null) { 4218b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust formatted = message + " "; 4228b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust } 4238b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust fail(formatted + "expected object to not be null"); 4248b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust } 425336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertTrue(object != null, message); 426336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4270f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 428336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 429ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com * Asserts that an object is null. If it is not, 430cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 431d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param object the assertion object 432336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 433336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertNull(Object object) { 434336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertNull(object, null); 435336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4360f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 437336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 438ff94a1bdd8cd6d261383856735ca2ee898545ddbnalin.makar@gmail.com * Asserts that an object is null. If it is not, 439cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionFailedError, with the given message, is thrown. 4400f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param object the assertion object 4410f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 442336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 443ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertNull(Object object, String message) { 4448b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust if (object != null) { 4458b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust failNotSame(object, null, message); 4468b53feff3f7c40fccf41e8fa15f09f8df12e7a74Cédric Beust } 447336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4480f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 449336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 450cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two objects refer to the same object. If they do not, 451cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionFailedError, with the given message, is thrown. 4520f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 4530f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 4540f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 455336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 456ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertSame(Object actual, Object expected, String message) { 457336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(expected == actual) { 458336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust return; 459336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 460336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust failNotSame(actual, expected, message); 461336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4620f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 463336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 464cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two objects refer to the same object. If they do not, 465cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 4660f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 4670f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 468336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 469336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertSame(Object actual, Object expected) { 470336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertSame(actual, expected, null); 471336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4720f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 473336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 474cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two objects do not refer to the same objects. If they do, 475cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 4760f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 4770f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 4780f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param message the assertion error message 479336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 480ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertNotSame(Object actual, Object expected, String message) { 481336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(expected == actual) { 482336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust failSame(actual, expected, message); 483336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 484336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4850f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 486336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 487cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two objects do not refer to the same object. If they do, 488cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 4890f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param actual the actual value 4900f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin * @param expected the expected value 491336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 492336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertNotSame(Object actual, Object expected) { 493336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertNotSame(actual, expected, null); 494336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 4950f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 496ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static private void failSame(Object actual, Object expected, String message) { 497336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust String formatted = ""; 498336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(message != null) { 499336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust formatted = message + " "; 500336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 501ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beust fail(formatted + ASSERT_LEFT2 + expected + ASSERT_MIDDLE + actual + ASSERT_RIGHT); 502336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 5030f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 504ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static private void failNotSame(Object actual, Object expected, String message) { 505336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust String formatted = ""; 506336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if(message != null) { 507336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust formatted = message + " "; 508336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 509ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beust fail(formatted + ASSERT_LEFT + expected + ASSERT_MIDDLE + actual + ASSERT_RIGHT); 510336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 5110f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 512ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static private void failNotEquals(Object actual , Object expected, String message ) { 513336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust fail(format(actual, expected, message)); 514336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 5150f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 516ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static String format(Object actual, Object expected, String message) { 517336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust String formatted = ""; 518336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if (null != message) { 519336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust formatted = message + " "; 520336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 5210f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 522ef7064006d0cd629cc23efe99da7709a925dd85bCédric Beust return formatted + ASSERT_LEFT + expected + ASSERT_MIDDLE + actual + ASSERT_RIGHT; 523336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 5240f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 525d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel /** 526cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two collections contain the same elements in the same order. If they do not, 527cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 528d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * 529d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param actual the actual value 530d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param expected the expected value 531d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel */ 532a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Collection<?> actual, Collection<?> expected) { 533336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 534336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 5350f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 536d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel /** 537cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two collections contain the same elements in the same order. If they do not, 538cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 539d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param actual the actual value 540d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param expected the expected value 541d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param message the assertion error message 542d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel */ 543a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Collection<?> actual, Collection<?> expected, String message) { 5440f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin if(actual == expected) { 5450f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin return; 5460f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 5470f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 548c3eb93c68f9e54788c4e3062166f29f0736d1e7fnullin if (actual == null || expected == null) { 5490f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin if (message != null) { 5500f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin fail(message); 5510f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } else { 5520f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin fail("Collections not equal: expected: " + expected + " and actual: " + actual); 5530f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 554ec2bfe438f271c1c566f5813b588634dcb12915bthe.mindstorm } 5550f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 556cf3d12f5e97b3097992651f357845fe0b7b9f814Michael Diamond assertEquals(actual.size(), expected.size(), (message == null ? "" : message + ": ") + "lists don't have the same size"); 5570f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 558a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie Iterator<?> actIt = actual.iterator(); 559a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie Iterator<?> expIt = expected.iterator(); 560336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust int i = -1; 561336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust while(actIt.hasNext() && expIt.hasNext()) { 562336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust i++; 563336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust Object e = expIt.next(); 564336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust Object a = actIt.next(); 5656aee73d5eddf6ebd01c93a2f30b532cb68ef04c4Cédric Beust String explanation = "Lists differ at element [" + i + "]: " + e + " != " + a; 5666aee73d5eddf6ebd01c93a2f30b532cb68ef04c4Cédric Beust String errorMessage = message == null ? explanation : message + ": " + explanation; 5670f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 568f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk assertEqualsImpl(a, e, errorMessage); 569336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 570336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 571a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 572a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie /** Asserts that two iterators return the same elements in the same order. If they do not, 573a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * an AssertionError is thrown. 574a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * Please note that this assert iterates over the elements and modifies the state of the iterators. 575a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param actual the actual value 576a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param expected the expected value 577a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie */ 578a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Iterator<?> actual, Iterator<?> expected) { 579a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie assertEquals(actual, expected, null); 580a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 581a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 582a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie /** Asserts that two iterators return the same elements in the same order. If they do not, 583a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * an AssertionError, with the given message, is thrown. 584a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * Please note that this assert iterates over the elements and modifies the state of the iterators. 585a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param actual the actual value 586a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param expected the expected value 587a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param message the assertion error message 588a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie */ 589a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Iterator<?> actual, Iterator<?> expected, String message) { 590a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(actual == expected) { 591a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie return; 592a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 593a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 594a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(actual == null || expected == null) { 595a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(message != null) { 596a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie fail(message); 597a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } else { 598a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie fail("Iterators not equal: expected: " + expected + " and actual: " + actual); 599a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 600a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 601a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 602a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie int i = -1; 603a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie while(actual.hasNext() && expected.hasNext()) { 604a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 605a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie i++; 606a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie Object e = expected.next(); 607a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie Object a = actual.next(); 608a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie String explanation = "Iterators differ at element [" + i + "]: " + e + " != " + a; 609a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie String errorMessage = message == null ? explanation : message + ": " + explanation; 610a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 611f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk assertEqualsImpl(a, e, errorMessage); 612a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 613a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 614a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 615a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(actual.hasNext()) { 616a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 617a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie String explanation = "Actual iterator returned more elements than the expected iterator."; 618a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie String errorMessage = message == null ? explanation : message + ": " + explanation; 619a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie fail(errorMessage); 620a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 621a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } else if(expected.hasNext()) { 622a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 623a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie String explanation = "Expected iterator returned more elements than the actual iterator."; 624a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie String errorMessage = message == null ? explanation : message + ": " + explanation; 625a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie fail(errorMessage); 626a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 627a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 628a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 629a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 630a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 631a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie /** Asserts that two iterables return iterators with the same elements in the same order. If they do not, 632a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * an AssertionError is thrown. 633a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param actual the actual value 634a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param expected the expected value 635a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie */ 636a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Iterable<?> actual, Iterable<?> expected) { 637a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie assertEquals(actual, expected, null); 638a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 639a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 640a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie /** Asserts that two iterables return iterators with the same elements in the same order. If they do not, 641a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * an AssertionError, with the given message, is thrown. 642a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param actual the actual value 643a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param expected the expected value 644a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie * @param message the assertion error message 645a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie */ 646a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Iterable<?> actual, Iterable<?> expected, String message) { 647a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(actual == expected) { 648a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie return; 649a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 650a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 651a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(actual == null || expected == null) { 652a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie if(message != null) { 653a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie fail(message); 654a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } else { 655a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie fail("Iterables not equal: expected: " + expected + " and actual: " + actual); 656a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 657a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 658a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 659a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie Iterator<?> actIt = actual.iterator(); 660a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie Iterator<?> expIt = expected.iterator(); 661a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 662a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie assertEquals(actIt, expIt, message); 663a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie } 664a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 665a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 666a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie 6670f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 668d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel /** 669cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two arrays contain the same elements in the same order. If they do not, 670cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 671d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param actual the actual value 672d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param expected the expected value 673d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param message the assertion error message 674d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel */ 675ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEquals(Object[] actual, Object[] expected, String message) { 6760f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin if(actual == expected) { 6770f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin return; 6780f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 6790f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 680336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if ((actual == null && expected != null) || (actual != null && expected == null)) { 6810f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin if (message != null) { 6820f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin fail(message); 6830f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } else { 6840f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin fail("Arrays not equal: " + Arrays.toString(expected) + " and " + Arrays.toString(actual)); 6850f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 686336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 687336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(Arrays.asList(actual), Arrays.asList(expected), message); 688336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 6890f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 690336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 691cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two arrays contain the same elements in no particular order. If they do not, 692cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError, with the given message, is thrown. 693d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param actual the actual value 694d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param expected the expected value 695d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param message the assertion error message 696336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 697ca97550ae192637ee28884dc17a7ec49893ef7f0nullin static public void assertEqualsNoOrder(Object[] actual, Object[] expected, String message) { 6980f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin if(actual == expected) { 6990f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin return; 7000f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 7010f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 702336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust if ((actual == null && expected != null) || (actual != null && expected == null)) { 7034e1945226769fae14d6fe84adbb8643a19401c50Cédric Beust failAssertNoEqual( 7040b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin "Arrays not equal: " + Arrays.toString(expected) + " and " + Arrays.toString(actual), 7057b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust message); 7067b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust } 7070f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 7087b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust if (actual.length != expected.length) { 7094e1945226769fae14d6fe84adbb8643a19401c50Cédric Beust failAssertNoEqual( 7107b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust "Arrays do not have the same size:" + actual.length + " != " + expected.length, 7117b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust message); 712336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 7130f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 714a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie List<Object> actualCollection = Lists.newArrayList(); 715336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust for (Object a : actual) { 716336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust actualCollection.add(a); 717336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 7187b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust for (Object o : expected) { 7197b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust actualCollection.remove(o); 720336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 7217b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust if (actualCollection.size() != 0) { 7224e1945226769fae14d6fe84adbb8643a19401c50Cédric Beust failAssertNoEqual( 7230b2ac5eab08098da2c2b63d4a3f87ba72ad5d6a1nullin "Arrays not equal: " + Arrays.toString(expected) + " and " + Arrays.toString(actual), 7247b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust message); 7257b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust } 7267b159778e8a1db527c9a62e77bca9ec4370efd1bCédric Beust } 7270f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 7284e1945226769fae14d6fe84adbb8643a19401c50Cédric Beust private static void failAssertNoEqual(String defaultMessage, String message) { 7290f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin if (message != null) { 7300f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin fail(message); 7310f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } else { 7320f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin fail(defaultMessage); 7330f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 734336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 7350f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 736d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel /** 737cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two arrays contain the same elements in the same order. If they do not, 738cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 739d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * 740d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param actual the actual value 741d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param expected the expected value 742d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel */ 743336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEquals(Object[] actual, Object[] expected) { 744336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEquals(actual, expected, null); 745336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 7460f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 747336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust /** 748cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * Asserts that two arrays contain the same elements in no particular order. If they do not, 749cc1807f99344965f0aacd31bcceba6228b3ba66acquezel * an AssertionError is thrown. 750d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param actual the actual value 751d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel * @param expected the expected value 752336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust */ 753336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust static public void assertEqualsNoOrder(Object[] actual, Object[] expected) { 754336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust assertEqualsNoOrder(actual, expected, null); 755336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust } 7560f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin 757d0dbf55fe75ed796ea84bebcdf871823a5e56401cquezel /** 75899b4d6c265461884836106022c6ed4d22b822a13Cédric Beust * Asserts that two sets are equal. 75999b4d6c265461884836106022c6ed4d22b822a13Cédric Beust */ 760a024bfe2679a6ea9250707755b88ca946bd4f68dArcadie static public void assertEquals(Set<?> actual, Set<?> expected) { 761ae70b4fcbe7b5c52ad3ea57e2f5d64c60dfe4e8bTim wu assertEquals(actual, expected, null); 76299b4d6c265461884836106022c6ed4d22b822a13Cédric Beust } 763ae70b4fcbe7b5c52ad3ea57e2f5d64c60dfe4e8bTim wu 764ae70b4fcbe7b5c52ad3ea57e2f5d64c60dfe4e8bTim wu /** 765ae70b4fcbe7b5c52ad3ea57e2f5d64c60dfe4e8bTim wu * Assert set equals 766ae70b4fcbe7b5c52ad3ea57e2f5d64c60dfe4e8bTim wu */ 767f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust static public void assertEquals(Set<?> actual, Set<?> expected, String message) { 768f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust if (actual == expected) { 769f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust return; 770f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } 771f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust 772f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust if (actual == null || expected == null) { 773f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust // Keep the back compatible 774f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust if (message == null) { 775f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust fail("Sets not equal: expected: " + expected + " and actual: " + actual); 776f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } else { 777f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust failNotEquals(actual, expected, message); 778f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } 779f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } 780f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust 781f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust if (!actual.equals(expected)) { 782f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust if (message == null) { 783f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust fail("Sets differ: expected " + expected + " but got " + actual); 784f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } else { 785f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust failNotEquals(actual, expected, message); 786f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } 787f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } 788f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust } 78999b4d6c265461884836106022c6ed4d22b822a13Cédric Beust 79099b4d6c265461884836106022c6ed4d22b822a13Cédric Beust /** 79199b4d6c265461884836106022c6ed4d22b822a13Cédric Beust * Asserts that two maps are equal. 79299b4d6c265461884836106022c6ed4d22b822a13Cédric Beust */ 793f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust static public void assertEquals(Map<?, ?> actual, Map<?, ?> expected) { 79401aee4295cca15a5c5818c4641bfcafb6a937773Cédric Beust if (actual == expected) { 7950f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin return; 7960f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin } 79772896ac3e38b52b02318812cec41a5c839497185nullin 79872896ac3e38b52b02318812cec41a5c839497185nullin if (actual == null || expected == null) { 799194335baab15fd7f87d228d1ad6000aef2132f9enullin fail("Maps not equal: expected: " + expected + " and actual: " + actual); 80099b4d6c265461884836106022c6ed4d22b822a13Cédric Beust } 80199b4d6c265461884836106022c6ed4d22b822a13Cédric Beust 80253754e6d8691085a65d0fd70f160c1a4e2986d9eCédric Beust if (actual.size() != expected.size()) { 80353754e6d8691085a65d0fd70f160c1a4e2986d9eCédric Beust fail("Maps do not have the same size:" + actual.size() + " != " + expected.size()); 80453754e6d8691085a65d0fd70f160c1a4e2986d9eCédric Beust } 80553754e6d8691085a65d0fd70f160c1a4e2986d9eCédric Beust 806f9384b2cb7498bfc5b75760e2f7221af58ffd825Cédric Beust Set<?> entrySet = actual.entrySet(); 807d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt for (Object anEntrySet : entrySet) { 808d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt Map.Entry<?, ?> entry = (Map.Entry<?, ?>) anEntrySet; 80901aee4295cca15a5c5818c4641bfcafb6a937773Cédric Beust Object key = entry.getKey(); 81001aee4295cca15a5c5818c4641bfcafb6a937773Cédric Beust Object value = entry.getValue(); 81101aee4295cca15a5c5818c4641bfcafb6a937773Cédric Beust Object expectedValue = expected.get(key); 812f909a84122e29fbf3096821cc69080a202d57fc2Andrew Barchuk assertEqualsImpl(value, expectedValue, "Maps do not match for key:" + key + " actual:" + value 813d46142454fa19e07df3851321c2d35df0f52a7daRyan Schmitt + " expected:" + expectedValue); 81472896ac3e38b52b02318812cec41a5c839497185nullin } 81501aee4295cca15a5c5818c4641bfcafb6a937773Cédric Beust 81672896ac3e38b52b02318812cec41a5c839497185nullin } 81772896ac3e38b52b02318812cec41a5c839497185nullin 8186810cca1b8290a39259989823f6c0a3533a9973dCédric Beust ///// 8196810cca1b8290a39259989823f6c0a3533a9973dCédric Beust // assertNotEquals 8206810cca1b8290a39259989823f6c0a3533a9973dCédric Beust // 8216810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8226810cca1b8290a39259989823f6c0a3533a9973dCédric Beust public static void assertNotEquals(Object actual1, Object actual2, String message) { 8236810cca1b8290a39259989823f6c0a3533a9973dCédric Beust boolean fail = false; 8246810cca1b8290a39259989823f6c0a3533a9973dCédric Beust try { 8256810cca1b8290a39259989823f6c0a3533a9973dCédric Beust Assert.assertEquals(actual1, actual2); 8266810cca1b8290a39259989823f6c0a3533a9973dCédric Beust fail = true; 8276810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } catch (AssertionError e) { 8286810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8296810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8306810cca1b8290a39259989823f6c0a3533a9973dCédric Beust if (fail) { 8316810cca1b8290a39259989823f6c0a3533a9973dCédric Beust Assert.fail(message); 8326810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8336810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8346810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8356810cca1b8290a39259989823f6c0a3533a9973dCédric Beust public static void assertNotEquals(Object actual1, Object actual2) { 8366810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8376810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8386810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8396810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(String actual1, String actual2, String message) { 8406810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals((Object) actual1, (Object) actual2, message); 8416810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8426810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8436810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(String actual1, String actual2) { 8446810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8456810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8466810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8476810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(long actual1, long actual2, String message) { 8486810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(Long.valueOf(actual1), Long.valueOf(actual2), message); 8496810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8506810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8516810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(long actual1, long actual2) { 8526810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8536810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8546810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8556810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(boolean actual1, boolean actual2, String message) { 8566810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(Boolean.valueOf(actual1), Boolean.valueOf(actual2), message); 8576810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8586810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8596810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(boolean actual1, boolean actual2) { 8606810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8616810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8626810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8636810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(byte actual1, byte actual2, String message) { 8646810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(Byte.valueOf(actual1), Byte.valueOf(actual2), message); 8656810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8666810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8676810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(byte actual1, byte actual2) { 8686810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8696810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8706810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8716810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(char actual1, char actual2, String message) { 8726810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(Character.valueOf(actual1), Character.valueOf(actual2), message); 8736810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8746810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8756810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(char actual1, char actual2) { 8766810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8776810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8786810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8796810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(short actual1, short actual2, String message) { 8806810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(Short.valueOf(actual1), Short.valueOf(actual2), message); 8816810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8826810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8836810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(short actual1, short actual2) { 8846810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8856810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8866810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8876810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(int actual1, int actual2, String message) { 8886810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(Integer.valueOf(actual1), Integer.valueOf(actual2), message); 8896810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8906810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8916810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static void assertNotEquals(int actual1, int actual2) { 8926810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, null); 8936810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 8946810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 8956810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static public void assertNotEquals(float actual1, float actual2, float delta, String message) { 8966810cca1b8290a39259989823f6c0a3533a9973dCédric Beust boolean fail = false; 8976810cca1b8290a39259989823f6c0a3533a9973dCédric Beust try { 8986810cca1b8290a39259989823f6c0a3533a9973dCédric Beust Assert.assertEquals(actual1, actual2, delta, message); 8996810cca1b8290a39259989823f6c0a3533a9973dCédric Beust fail = true; 9006810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } catch (AssertionError e) { 9016810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9026810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9036810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9046810cca1b8290a39259989823f6c0a3533a9973dCédric Beust if (fail) { 9056810cca1b8290a39259989823f6c0a3533a9973dCédric Beust Assert.fail(message); 9066810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9076810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9086810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9096810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static public void assertNotEquals(float actual1, float actual2, float delta) { 9106810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, delta, null); 9116810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9126810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9136810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static public void assertNotEquals(double actual1, double actual2, double delta, String message) { 9146810cca1b8290a39259989823f6c0a3533a9973dCédric Beust boolean fail = false; 9156810cca1b8290a39259989823f6c0a3533a9973dCédric Beust try { 9166810cca1b8290a39259989823f6c0a3533a9973dCédric Beust Assert.assertEquals(actual1, actual2, delta, message); 9176810cca1b8290a39259989823f6c0a3533a9973dCédric Beust fail = true; 9186810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } catch (AssertionError e) { 9196810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9206810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9216810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9226810cca1b8290a39259989823f6c0a3533a9973dCédric Beust if (fail) { 9236810cca1b8290a39259989823f6c0a3533a9973dCédric Beust Assert.fail(message); 9246810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9256810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 9266810cca1b8290a39259989823f6c0a3533a9973dCédric Beust 9276810cca1b8290a39259989823f6c0a3533a9973dCédric Beust static public void assertNotEquals(double actual1, double actual2, double delta) { 9286810cca1b8290a39259989823f6c0a3533a9973dCédric Beust assertNotEquals(actual1, actual2, delta, null); 9296810cca1b8290a39259989823f6c0a3533a9973dCédric Beust } 93036b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt 93136b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt /** 93236b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * This interface facilitates the use of {@link #expectThrows} from Java 8. It allows 93336b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * method references to both void and non-void methods to be passed directly into 93436b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * expectThrows without wrapping, even if they declare checked exceptions. 93536b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * <p/> 93636b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * This interface is not meant to be implemented directly. 93736b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt */ 93836b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt public interface ThrowingRunnable { 93936b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt void run() throws Throwable; 94036b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } 94136b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt 94236b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt /** 94336b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * Asserts that {@code runnable} throws an exception when invoked. If it does not, an 94436b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * {@link AssertionError} is thrown. 94536b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * 94636b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * @param runnable A function that is expected to throw an exception when invoked 947130765a2fe93ec5efa12251ac8e85a015d52683aRyan Schmitt * @since 6.9.5 94836b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt */ 94936b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt public static void assertThrows(ThrowingRunnable runnable) { 950367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt assertThrows(Throwable.class, runnable); 95136b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } 95236b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt 95336b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt /** 95436b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * Asserts that {@code runnable} throws an exception of type {@code throwableClass} when 955367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * executed. If it does not throw an exception, an {@link AssertionError} is thrown. If it 956367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * throws the wrong type of exception, an {@code AssertionError} is thrown describing the 957367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * mismatch; the exception that was actually thrown can be obtained by calling {@link 958367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * AssertionError#getCause}. 959367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * 960367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * @param throwableClass the expected type of the exception 961367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * @param runnable A function that is expected to throw an exception when invoked 962130765a2fe93ec5efa12251ac8e85a015d52683aRyan Schmitt * @since 6.9.5 963367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt */ 964367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt @SuppressWarnings("ThrowableResultOfMethodCallIgnored") 965367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt public static <T extends Throwable> void assertThrows(Class<T> throwableClass, ThrowingRunnable runnable) { 966367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt expectThrows(throwableClass, runnable); 967367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt } 968367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt 969367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt /** 970367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * Asserts that {@code runnable} throws an exception of type {@code throwableClass} when 971367e4ad6481e0b9eb81c455e893c25add5004628Ryan Schmitt * executed and returns the exception. If {@code runnable} does not throw an exception, an 97236b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * {@link AssertionError} is thrown. If it throws the wrong type of exception, an {@code 97336b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * AssertionError} is thrown describing the mismatch; the exception that was actually thrown can 97436b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * be obtained by calling {@link AssertionError#getCause}. 97536b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * 97636b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * @param throwableClass the expected type of the exception 97736b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * @param runnable A function that is expected to throw an exception when invoked 97836b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt * @return The exception thrown by {@code runnable} 979130765a2fe93ec5efa12251ac8e85a015d52683aRyan Schmitt * @since 6.9.5 98036b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt */ 98136b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt public static <T extends Throwable> T expectThrows(Class<T> throwableClass, ThrowingRunnable runnable) { 98236b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt try { 98336b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt runnable.run(); 98436b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } catch (Throwable t) { 98536b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt if (throwableClass.isInstance(t)) { 98636b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt return throwableClass.cast(t); 98736b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } else { 98836b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt String mismatchMessage = String.format("Expected %s to be thrown, but %s was thrown", 98936b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt throwableClass.getSimpleName(), t.getClass().getSimpleName()); 99036b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt 99136b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt throw new AssertionError(mismatchMessage, t); 99236b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } 99336b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } 99436b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt String message = String.format("Expected %s to be thrown, but nothing was thrown", 99536b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt throwableClass.getSimpleName()); 99636b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt throw new AssertionError(message); 99736b6a2b5b43b8ff5adf7fe43acb5b41dd7049d94Ryan Schmitt } 998336f0ef401e9f564b8dc99d601ac80e8891ac2c1Cédric Beust} 999