@Test public void testEqualsContract() { IBAN x = IBAN.parse(VALID_IBAN); IBAN y = IBAN.parse(VALID_IBAN); IBAN z = IBAN.parse(VALID_IBAN); assertFalse("No object equals null", x.equals(null)); assertTrue("An object equals itself", x.equals(x)); assertTrue("Equality is symmetric", x.equals(y) && y.equals(x)); assertTrue("Equality is transitive", x.equals(y) && y.equals(z) && x.equals(z)); assertEquals("Equal objects have the same hash code", x.hashCode(), y.hashCode()); }
@Test public void parseShouldRejectChecksumFailure() { try { IBAN.parse(INVALID_IBAN); fail("Invalid input should have been rejected for checksum mismatch."); } catch (WrongChecksumException e) { assertThat(e.getFailedInput(), is(INVALID_IBAN)); } }
@Test(expected = IllegalArgumentException.class) public void parseShouldRejectTrailingWhitespace() { IBAN.parse(VALID_IBAN + ' '); }
@Test(expected = UnknownCountryCodeException.class) public void parseShouldRejectUnknownCountryCode() { IBAN.parse("UU345678345543234"); }
@Test(expected = IllegalArgumentException.class) public void parseShouldRejectLeadingWhitespace() { IBAN.parse(" " + VALID_IBAN); }
@Test(expected = IllegalArgumentException.class) public void parseShouldRejectInvalidInput() { IBAN.parse("Shenanigans!"); }
@Test(expected = IllegalArgumentException.class) public void parseShouldRejectNull() { IBAN.parse(null); }
@Test public void getCheckDigitsShouldReturnTheCheckDigits() { assertThat(IBAN.parse(VALID_IBAN).getCheckDigits(), is("91")); }
@Test public void getCountryCodeShouldReturnTheCountryCode() { assertThat(IBAN.parse(VALID_IBAN).getCountryCode(), is("NL")); }