calculateMod function
Implementation
int calculateMod(String iban) {
final String reformattedIban =
getBban(iban) + getCountryCodeAndCheckDigit(iban);
final int VA = "A".codeUnitAt(0);
final int VZ = "Z".codeUnitAt(0);
final int V0 = "0".codeUnitAt(0);
final int V9 = "9".codeUnitAt(0);
int addSum(int total, int value) {
final int newTotal = (value > 9 ? total * 100 : total * 10) + value;
return newTotal > MAX ? newTotal % MOD : newTotal;
}
List<String> reformattedIbanList = reformattedIban.toUpperCase().split("");
int total = 0;
for (int i = 0; i < reformattedIbanList.length; ++i) {
final int code = reformattedIbanList[i].codeUnitAt(0);
if (VA <= code && code <= VZ) {
total = addSum(total, code - VA + 10);
} else if (V0 <= code && code <= V9) {
total = addSum(total, code - V0);
} else {
throw FormatException("Invalid Character[$code] = '$code'");
}
}
return total % MOD;
}