/// <summary>
        /// Calculates the check digit. The given bank code will be
        /// mapped to an registered method which calculates the check digit.
        /// The account number is given without a check digit.
        /// </summary>
        /// <param name="accountNumber">The account number without a check digit.</param>
        /// <returns>
        /// The calculated check digit for the given account number
        /// </returns>
        public string CalculateCheckDigit(NationalAccountNumber accountNumber)
        {
            if (accountNumber == null)
            {
                throw new ArgumentNullException("accountNumber", "Please provide an account number.");
            }

            var germanAccountNumber = new GermanyAccountNumber(accountNumber);

            var checkMethodCode = BankCodeMappingMethod.Resolve(germanAccountNumber.BankCode);

            if (string.IsNullOrEmpty(checkMethodCode))
            {
                throw new ArgumentException(String.Format("Can't resolve the check method for the given bank code {0}.", germanAccountNumber.BankCode), "accountNumber");
            }

            return(accountNumberValidationByMethodCode.CalculateCheckDigit(germanAccountNumber.AccountNumber, checkMethodCode));
        }
        public void Should_Calculate_A_Digit_With_Method01()
        {
            IAccountNumberValidationByMethodCode sut = SuT;

            Assert.AreEqual("7", sut.CalculateCheckDigit("423432278", "01"));
        }