File size: 1,648 Bytes
9438a57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class IbanValidatorTest {
    static final String VALID = "TR330006100519786457841326";

    @Test void validIban() { assertTrue(IbanValidator.isValid(VALID)); }
    @Test void validWithSpacesAndLowercase() { assertTrue(IbanValidator.isValid("tr33 0006 1005 1978 6457 8413 26")); }
    @Test void secondValidIban() { assertTrue(IbanValidator.isValid("TR650001000000000000123456")); }
    @Test void wrongCheckDigits() { assertFalse(IbanValidator.isValid("TR340006100519786457841326")); }
    @Test void wrongLength() { assertFalse(IbanValidator.isValid("TR33000610051978645784132")); }
    @Test void wrongCountry() { assertFalse(IbanValidator.isValid("DE330006100519786457841326")); }
    @Test void nonDigitCharacter() { assertFalse(IbanValidator.isValid("TR33000610051978645784132X")); }
    @Test void reservedDigitMustBeZero() {
        // mod-97 açısından geçerli ama ayrılmış hane 0 değil
        assertFalse(IbanValidator.isValid("TR080006110519786457841326"));
    }
    @Test void nullRejected() { assertThrows(IllegalArgumentException.class, () -> IbanValidator.isValid(null)); }
    @Test void bankCode() { assertEquals("00061", IbanValidator.bankCode(VALID)); }
    @Test void bankCodeOfInvalidThrows() {
        assertThrows(IllegalArgumentException.class, () -> IbanValidator.bankCode("TR340006100519786457841326"));
    }
    @Test void format() { assertEquals("TR33 0006 1005 1978 6457 8413 26", IbanValidator.format(VALID)); }
    @Test void mod97OfKnownValue() { assertEquals(1, IbanValidator.mod97("0006100519786457841326TR33")); }
}