package org.testory; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.testory.Testory.thenEqual; import static org.testory.testing.Fakes.newObject; import static org.testory.testing.HamcrestMatchers.hasMessageContaining; import org.junit.Before; import org.junit.Test; public class TestThenEqual { private Object object, equalObject, otherObject, expected, actual; @Before public void before() { object = newObject("object"); equalObject = newObject("object"); otherObject = newObject("otherObject"); expected = newObject("expected"); actual = newObject("actual"); } @Test public void asserts_equal_but_not_same_object() { thenEqual(object, equalObject); } @Test public void asserts_equal_and_same_object() { thenEqual(object, object); } @Test public void asserts_equal_nulls() { thenEqual(null, null); } @Test public void fails_for_not_equal_object() { try { thenEqual(otherObject, object); fail(); } catch (TestoryAssertionError e) { assertEquals("\n" + " expected\n" + " " + object + "\n" + " but was\n" + " " + otherObject + "\n", e.getMessage()); } } @Test public void fails_for_non_null_object_if_expected_equal_to_null() { try { thenEqual(object, null); fail(); } catch (TestoryAssertionError e) { assertEquals("\n" + " expected\n" + " null\n" + " but was\n" + " " + object + "\n", e.getMessage()); } } @Test public void fails_for_null_if_expected_non_null_object() { try { thenEqual(null, object); fail(); } catch (TestoryAssertionError e) {} } @Test public void failure_prints_expected_object() { try { thenEqual(actual, expected); fail(); } catch (TestoryAssertionError e) { assertThat(e, hasMessageContaining("" + " expected\n" + " " + expected + "\n")); } } @Test public void failure_prints_expected_null_object() { expected = null; try { thenEqual(actual, expected); fail(); } catch (TestoryAssertionError e) { assertThat(e, hasMessageContaining("" + " expected\n" + " " + expected + "\n")); } } @Test public void failure_prints_actual_object() { try { thenEqual(actual, expected); fail(); } catch (TestoryAssertionError e) { assertThat(e, hasMessageContaining("" + " but was\n" + " " + actual + "\n")); } } @Test public void failure_prints_actual_null_object() { actual = null; try { thenEqual(actual, expected); fail(); } catch (TestoryAssertionError e) { assertThat(e, hasMessageContaining("" + " but was\n" + " " + actual + "\n")); } } }