public int Checksum(IbanDigitizer digitizer) { var digits = 0; var n = 0; int d; while (digitizer.MoveNext()) { // We need to read until we have a nine // digit number. Since it can start with zero // it's not possible to use Math.Log10(). var integer = digitizer.Current; if (++digits < 9) { n = 10 * (n + integer); continue; } n += integer; d = n % 97; n = 10 * d; digits = d > 10 ? 2 : 1; } // Last digit is base 10^0 so "divide it away" d = n / 10 % 97; return(d); // == 1; }
public bool SpaceEfficient() { var digitizer = new IbanDigitizer(Iban); return(_calculator.Checksum(digitizer) == 1); //var verifier = new IbanChecksumVerifier(Iban); //return verifier.VerifyChecksum(); }
public void VerifyChecksum(string iban) { // Arrange var digitizer = new IbanDigitizer(iban); // Act var checksum = _calculator.Checksum(digitizer); // Assert Assert.True(checksum == 1); }