public void LyhnInvalidStringTest2(string arg) { Assert.Catch <ArgumentException>(() => { Assert.False(LuhnAlgorithm.HasValidCheckDigit(arg)); }); }
public static VGRIdentifier BuildVGRIdentifier(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var date = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random).Build(builder); var gender = new PersonIdentifierBuilder.PersonIdentifierGenderBuilder(random).Build(builder, true); var genderMap = VGRFormatter.GenderMap.Find(x => x.Gender == gender); int sequence = 0; if (gender == PersonIdentityGender.Female) { sequence = 2 * random.Next(6 / 2, 80 / 2); } if (gender == PersonIdentityGender.Male) { sequence = 2 * random.Next(6 / 2, 80 / 2) + 1; } if (gender == PersonIdentityGender.Unknown) { sequence = random.Next(80, 90); } var number = $"{date:yyyyMMdd}{genderMap.Number}{sequence:00}"; var luhnCheckSum = LuhnAlgorithm.Generate(number); var fourLast = $"{genderMap.Letter}{sequence:00}{luhnCheckSum}"; return(new VGRIdentifier($"{date:yyyyMMdd}{fourLast}")); }
public string FrenchSiretNumber() { var location = _fakerContainer.Number.LeadingZeroNumber(3).PadLeft(4, '0'); var orgNumber = long.Parse(FrenchSirenNumber() + location); return($"{orgNumber}{LuhnAlgorithm.GetCheckValue(orgNumber)}"); }
public PersonalNumber(string personalNumber) { rawPersonalNumber = personalNumber; var matches = personNoRegex.Matches(personalNumber); var normalizedYYMMDDXXXC = string.Empty; isPlus100YearsOld = false; foreach (Match match in matches) { if (match.Success) { normalizedYYMMDDXXXC = match.Groups[2].Value + match.Groups[3].Value + match.Groups[4].Value + match.Groups[6].Value; if (match.Groups[5].Success) { isPlus100YearsOld = match.Groups[5].Value == "+"; } break; } } if (normalizedYYMMDDXXXC.Length > 6) { isValid = personNoRegex.IsMatch(personalNumber) && LuhnAlgorithm.ValidateChecksum(normalizedYYMMDDXXXC); } else { isValid = personNoRegex.IsMatch(personalNumber); } this.personalNumber = string.IsNullOrEmpty(normalizedYYMMDDXXXC) ? rawPersonalNumber : normalizedYYMMDDXXXC; }
public string FrenchSirenNumber() { // Get a random French SIREN number. See more here https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27identification_du_r%C3%A9pertoire_des_entreprises var @base = int.Parse(_fakerContainer.Number.Number(8)); return($"{@base}{LuhnAlgorithm.GetCheckValue(@base)}"); }
public VGRFormatter(string value) : base(value) { if (Value.Length != 12) { throw new PersonIdentifierFormatException(value, ExceptionMessage.IncorrectLength); } if (SerialNumber.Length != 4) { throw new PersonIdentifierFormatException(value, ExceptionMessage.IncorrectLength); } GenderIndicator = SerialNumber[0]; TwoDigitSerial = Convert.ToInt32(SerialNumber.Substring(1, 2)); LuhnControlNumber = Convert.ToInt32(SerialNumber[3]); var nr = GenderMap.FirstOrDefault(x => x.Letter == GenderIndicator)?.Number ?? throw new PersonIdentifierFormatException(value, $"Incorrect VGR format -> invalid gender indicator '{GenderIndicator}'."); var str = Value.Replace(GenderIndicator, nr); if (!LuhnAlgorithm.Validate(str)) { throw new PersonIdentifierFormatException(value, ExceptionMessage.LuhnError); } }
public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if (string.IsNullOrWhiteSpace((value ?? "").ToString())) { return(new ValidationResult(false, "Field is required.")); } var code = (value ?? "").ToString(); return(!LuhnAlgorithm.CheckLuhn(code) ? new ValidationResult(false, "Verify code is incorrect.") : ValidationResult.ValidResult); }
public void LyhnCardTypeTest1() { foreach (var card in _validCards) { var hasValidCheckDigit = LuhnAlgorithm.HasValidCheckDigit(card.Key); if (!hasValidCheckDigit) { TestContext.WriteLine(card.Key); } Assert.True(hasValidCheckDigit); } }
public static SLLIdentifier BuildSLLIdentifier(this PersonIdentifierBuilder builder) { var random = new Random(Guid.NewGuid().GetHashCode()); var year = new PersonIdentifierBuilder.PersonIdentifierDateBuilder(random).Build(builder).Year; var sequence = random.Next(0, 100000); var nr = $"{SLLFormatter.Start}{year:0000}{sequence:00000}"; var luhnCheckSum = LuhnAlgorithm.Generate(nr); return(new SLLIdentifier($"{nr}{luhnCheckSum}")); }
public string SwedishOrganisationNumber() { // Get a random Swedish organization number. See more here https://sv.wikipedia.org/wiki/Organisationsnummer // Valid leading digit: 1, 2, 3, 5, 6, 7, 8, 9 // Valid third digit: >= 2 // Last digit is a control digit var @base = long.Parse(string.Join("", _fakerContainer.Number.NonZeroDigit(), _fakerContainer.Number.Digit(), (int)_fakerContainer.Number.Between(2, 9), _fakerContainer.Number.Number(6) )); return($"{@base}{LuhnAlgorithm.GetCheckValue(@base)}"); }
public SLLFormatter(string value) : base(value) { if (Value.Length != 12) { throw new PersonIdentifierFormatException(value, ExceptionMessage.IncorrectLength); } if (!LuhnAlgorithm.Validate(value)) { throw new PersonIdentifierFormatException(value, ExceptionMessage.LuhnError); } var start = Value.Substring(0, 2); if (start != Start) { throw new PersonIdentifierFormatException(value, $"Incorrect SLL format -> starting with '{start}'. Expected '{Start}'."); } Year = Convert.ToInt32(Value.Substring(2, 4)); FiveDigitSerialNumber = Convert.ToInt32(Value.Substring(6, 5)); LuhnControlNumber = Convert.ToInt32(Value.Substring(11, 1)); }
public void GetCheckValue_returns_check_value_for_number(long number, int expected) { Assert.AreEqual(expected, LuhnAlgorithm.GetCheckValue(number)); }
public void LyhnCardTypeFormatCheckInvalidDash() { Assert.Throws(typeof(ArgumentException), () => LuhnAlgorithm.HasValidCheckDigit(_invalidCardFormatDash)); }
public void LyhnCardTypeInvalidTest1() { Assert.False(LuhnAlgorithm.HasValidCheckDigit(_invalidCard)); }
public void SetUp() { _sut = new LuhnAlgorithm(); }