public void CalculateCheckDigit_With_Valid_Data_Returns_Valid_CheckDigit() { //all less than's will be turned into 0s string input = "586479869<<<"; /* Math below * 5 = 5 * 7 = 35 * 8 = 8 * 3 = 24 * 6 = 6 * 1 = 6 * 4 = 4 * 7 = 28 * 7 = 7 * 3 = 21 * 9 = 9 * 1 = 9 * 8 = 8 * 7 = 56 * 6 = 6 * 3 = 18 * 9 = 9 * 1 = 9 * 0 = 0 * 7 = 0 * 0 = 0 * 3 = 0 * 0 = 0 * 1 = 0 * 35 + 24 + 6 + 28 + 21 + 9 + 56 + 18 + 9 + 0 + 0 + 0 = 206 % 10 = 6 */ string expectedCheckDigit = "6"; string returnedCheckDigit = CheckDigitHelper.CalculateCheckDigit(input); Assert.AreEqual(expectedCheckDigit, returnedCheckDigit); }
public ValidationResults ValidateMrzAndBaseData(PassportBaseData baseData, MrzLine2 mrzLine2) { ValidationResults results = new ValidationResults(); //Check digits against what was passed into mrzline2 results.PassportNumberCheckDigit = CheckDigitHelper.CalculateCheckDigit(mrzLine2.PassportNumber) == mrzLine2.CheckDigitPassportNumber ? true : false; results.DateOfBirthCheckDigit = CheckDigitHelper.CalculateCheckDigit(mrzLine2.DateOfBirth.ToString("yyMMdd")) == mrzLine2.CheckDigitDateOfBirth ? true : false; results.PassportExpirationDateCheckDigit = CheckDigitHelper.CalculateCheckDigit(mrzLine2.DateOfExpiry.ToString("yyMMdd")) == mrzLine2.CheckDigitDateOfExpiry ? true : false; results.PersonalNumberCheckDigit = CheckDigitHelper.CalculateCheckDigit(mrzLine2.PersonalNumber) == mrzLine2.CheckDigitPersonalNumber ? true : false; //Composite check digit is all fields on line 2 minus nationality and gender string compositeCheckDigit = mrzLine2.PassportNumber + mrzLine2.CheckDigitPassportNumber + mrzLine2.DateOfBirth.ToString("yyMMdd") + mrzLine2.CheckDigitDateOfBirth + mrzLine2.DateOfExpiry.ToString("yyMMdd") + mrzLine2.CheckDigitDateOfExpiry + mrzLine2.PersonalNumber + mrzLine2.CheckDigitPersonalNumber; results.FinalCheckDigit = CheckDigitHelper.CalculateCheckDigit(compositeCheckDigit) == mrzLine2.CheckDigitOverall ? true : false; //Do a cross check between what the user entered vs what's on mrzline2 results.GenderCrossCheck = baseData.Gender == mrzLine2.Gender ? true : false; results.DateOfBirthCrossCheck = baseData.DateOfBirth.ToString(DateMask) == mrzLine2.DateOfBirth.ToString(DateMask) ? true : false; results.ExpirationDateCrossCheck = baseData.DateOfExpiry.ToString(DateMask) == mrzLine2.DateOfExpiry.ToString(DateMask) ? true : false; results.NationalityCrossCheck = baseData.Nationality == mrzLine2.Nationality ? true : false; results.PassportNumberCrossCheck = baseData.PassportNumber.ZeroFillerChars() == mrzLine2.PassportNumber ? true : false; return(results); }