package org.junit.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.fail; import junit.framework.JUnit4TestAdapter; import org.junit.Assert; import org.junit.ComparisonFailure; import org.junit.Ignore; import org.junit.Test; public class AssertionTest { // If you want to use 1.4 assertions, they will be reported correctly. // However, you need to add the -ea VM argument when running. // @Test @Expected(AssertionError.class) public void error() { // assert false; // } @Test(expected= AssertionError.class) public void fails() { Assert.fail(); } @Test(expected= AssertionError.class) public void arraysNotEqual() { assertEquals(new Object[] {new Object()}, new Object[] {new Object()}); } @Test(expected= AssertionError.class) public void arraysNotEqualWithMessage() { assertEquals("not equal", new Object[] {new Object()}, new Object[] {new Object()}); } @Test public void arraysExpectedNullMessage() { try { assertEquals("not equal", null, new Object[] {new Object()}); } catch (AssertionError exception) { assertEquals("not equal: expected array was null", exception.getMessage()); } } @Test public void arraysActualNullMessage() { try { assertEquals("not equal", new Object[] {new Object()}, null); } catch (AssertionError exception) { assertEquals("not equal: actual array was null", exception.getMessage()); } } @Test public void arraysDifferentLengthMessage() { try { assertEquals("not equal", new Object[0] , new Object[1]); } catch (AssertionError exception) { assertEquals("not equal: array lengths differed, expected.length=0 actual.length=1", exception.getMessage()); } } @Test(expected=ComparisonFailure.class) public void arraysElementsDiffer() { assertEquals("not equal", new Object[] {"this is a very long string in the middle of an array"} , new Object[] {"this is another very long string in the middle of an array"}); } @Test public void arraysDifferAtElement0nullMessage() { try { assertEquals(new Object[] { true }, new Object[] { false }); } catch (AssertionError exception) { assertEquals("arrays first differed at element [0]; expected:<true> but was:<false>", exception .getMessage()); } } @Test public void arraysDifferAtElement1nullMessage() { try { assertEquals(new Object[] { true, true }, new Object[] { true, false }); } catch (AssertionError exception) { assertEquals("arrays first differed at element [1]; expected:<true> but was:<false>", exception .getMessage()); } } @Test public void arraysDifferAtElement0withMessage() { try { assertEquals("message", new Object[] { true }, new Object[] { false }); } catch (AssertionError exception) { assertEquals("message: arrays first differed at element [0]; expected:<true> but was:<false>", exception .getMessage()); } } @Test public void arraysDifferAtElement1withMessage() { try { assertEquals("message", new Object[] {true, true}, new Object[] {true, false}); fail(); } catch (AssertionError exception) { assertEquals("message: arrays first differed at element [1]; expected:<true> but was:<false>", exception.getMessage()); } } @Test public void multiDimensionalArraysAreEqual() { assertEquals(new Object[][]{{true, true}, {false, false}}, new Object[][]{{true, true}, {false, false}}); } @Ignore("Too much to do to get this working for 4.0 release") @Test public void multiDimensionalArraysAreNotEqual() { try { assertEquals("message", new Object[][]{{true, true}, {false, false}}, new Object[][]{{true, true}, {false, true}}); fail(); } catch (AssertionError exception) { assertEquals("message: arrays first differed at element [1][1]; expected:<false> but was:<true>", exception.getMessage()); } } @Test public void stringsDifferWithUserMessage() { try { assertEquals("not equal", "one", "two"); } catch (Throwable exception) { assertEquals("not equal expected:<[one]> but was:<[two]>", exception.getMessage()); } } @Test public void arraysEqual() { Object element= new Object(); Object[] objects1= new Object[] {element}; Object[] objects2= new Object[] {element}; assertEquals(objects1, objects2); } @Test public void arraysEqualWithMessage() { Object element= new Object(); Object[] objects1= new Object[] {element}; Object[] objects2= new Object[] {element}; assertEquals("equal", objects1, objects2); } @Test public void equals() { Object o= new Object(); assertEquals(o, o); assertEquals("abc", "abc"); assertEquals(true, true); assertEquals((byte) 1, (byte) 1); assertEquals('a', 'a'); assertEquals((short) 1, (short) 1); assertEquals(1, 1); // int by default, cast is unnecessary assertEquals(1l, 1l); assertEquals(1.0, 1.0, 0.0); assertEquals(1.0d, 1.0d, 0.0d); } @Test(expected= AssertionError.class) public void objectsNotEquals() { assertEquals(new Object(), new Object()); } @Test(expected= ComparisonFailure.class) public void stringsNotEqual() { assertEquals("abc", "def"); } @Test(expected= AssertionError.class) public void booleansNotEqual() { assertEquals(true, false); } @Test(expected= AssertionError.class) public void bytesNotEqual() { assertEquals((byte) 1, (byte) 2); } @Test(expected= AssertionError.class) public void charsNotEqual() { assertEquals('a', 'b'); } @Test(expected= AssertionError.class) public void shortsNotEqual() { assertEquals((short) 1, (short) 2); } @Test(expected= AssertionError.class) public void intsNotEqual() { assertEquals(1, 2); } @Test(expected= AssertionError.class) public void longsNotEqual() { assertEquals(1l, 2l); } @Test(expected= AssertionError.class) public void floatsNotEqual() { assertEquals(1.0, 2.0, 0.9); } @Test(expected= AssertionError.class) public void doublesNotEqual() { assertEquals(1.0d, 2.0d, 0.9d); } @Test public void naNsAreEqual() { assertEquals(Float.NaN, Float.NaN, Float.POSITIVE_INFINITY); assertEquals(Double.NaN, Double.NaN, Double.POSITIVE_INFINITY); } @Test public void same() { Object o1= new Object(); assertSame(o1, o1); } @Test public void notSame() { Object o1= new Object(); Object o2= new Object(); assertNotSame(o1, o2); } @Test(expected= AssertionError.class) public void objectsNotSame() { assertSame(new Object(), new Object()); } @Test(expected= AssertionError.class) public void objectsAreSame() { Object o= new Object(); assertNotSame(o, o); } @Test public void sameWithMessage() { try { assertSame("not same", "hello", "good-bye"); } catch (AssertionError exception) { assertEquals("not same expected same:<hello> was not:<good-bye>", exception.getMessage()); } } @Test public void sameNullMessage() { try { assertSame("hello", "good-bye"); } catch (AssertionError exception) { assertEquals("expected same:<hello> was not:<good-bye>", exception .getMessage()); } } @Test public void notSameWithMessage() { try { assertNotSame("not same", "hello", "good-bye"); } catch (AssertionError exception) { assertEquals("not same expected not same", exception.getMessage()); } } @Test public void notSameNullMessage() { try { assertNotSame("hello", "good-bye"); } catch (AssertionError exception) { assertEquals("expected not same", exception.getMessage()); } } static public junit.framework.Test suite() { return new JUnit4TestAdapter(AssertionTest.class); } }