### Question:
Card { public static Builder builder() { return new Builder(); } private  Card();  Card(Builder builder); String getPan(); BigInteger getPanAsNumber(); String getExp(); String getCvv2(); String getServiceCode(); boolean hasTrack1(); boolean hasTrack2(); boolean hasBothTracks(); String getBin(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); Track1 getTrack1(); Track2 getTrack2(); boolean isExpired(Date currentDate); static Builder builder(); static final int BINLEN; }### Answer:
@Test public void testInvalidPAN() throws Throwable { try { Track1 t1 = Track1.builder() .track("%B4111111111111112^FAT ALBERT ^201112345671234567890?").build(); Track2 t2 = Track2.builder() .track("4111111111111112=201112345612345678901").build(); Card c = Card.builder() .pan("4111111111111112") .exp("2011") .cvv("123") .cvv2("4567") .serviceCode("201") .track1(t1) .track2(t2) .build(); fail ("InvalidCardException was not raised"); } catch (InvalidCardException ignored) { } }