コード例 #1
0
ファイル: IbanChecksumCalculator.cs プロジェクト: joacar/Iban
        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;
        }
コード例 #2
0
        public bool SpaceEfficient()
        {
            var digitizer = new IbanDigitizer(Iban);

            return(_calculator.Checksum(digitizer) == 1);
            //var verifier = new IbanChecksumVerifier(Iban);
            //return verifier.VerifyChecksum();
        }
コード例 #3
0
ファイル: IbanVerifierTest.cs プロジェクト: joacar/Iban
        public void VerifyChecksum(string iban)
        {
            // Arrange
            var digitizer = new IbanDigitizer(iban);

            // Act
            var checksum = _calculator.Checksum(digitizer);

            // Assert
            Assert.True(checksum == 1);
        }