public void Should_match_example_data() { var input = @"ecl:gry pid:860033327 eyr:2020 hcl:#fffffd byr:1937 iyr:2017 cid:147 hgt:183cm iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 hcl:#cfa07d byr:1929 hcl:#ae17e1 iyr:2013 eyr:2024 ecl:brn pid:760753108 byr:1931 hgt:179cm hcl:#cfa07d eyr:2025 pid:166559648 iyr:2011 ecl:brn hgt:59in"; var pv = new PassportValidator { Input = input }; var count = pv.CountValidPassports(); Assert.Equal(2, count); }
public void Should_not_match_invalid_example_B_passports() { var input = @"eyr:1972 cid:100 hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 iyr:2019 hcl:#602927 eyr:1967 hgt:170cm ecl:grn pid:012533040 byr:1946 hcl:dab227 iyr:2012 ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 hgt:59cm ecl:zzz eyr:2038 hcl:74454a iyr:2023 pid:3556412378 byr:2007"; var pv = new PassportValidator { Input = input }; var count = pv.CountValidPassports(); Assert.Equal(0, count); }
public void Should_match_valid_example_B_passports() { var input = @"pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 hcl:#623a2f eyr:2029 ecl:blu cid:129 byr:1989 iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm hcl:#888785 hgt:164cm byr:2001 iyr:2015 cid:88 pid:545766238 ecl:hzl eyr:2022 iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719"; var pv = new PassportValidator { Input = input }; var count = pv.CountValidPassports(); Assert.Equal(4, count); }
public void HasRequiredFields() { var input = @"ecl:gry pid:860033327 eyr:2020 hcl:#fffffd byr:1937 iyr:2017 cid:147 hgt:183cm iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 hcl:#cfa07d byr:1929 hcl:#ae17e1 iyr:2013 eyr:2024 ecl:brn pid:760753108 byr:1931 hgt:179cm hcl:#cfa07d eyr:2025 pid:166559648 iyr:2011 ecl:brn hgt:59in"; var passportFactory = new PassportFactory(); var passports = PassportFactory.Create(input); var passportValidator = new PassportValidator(); var validPassports = passports .Where(passport => passportValidator.HasRequiredFields(passport)) .ToList(); Assert.Equal(2, validPassports.Count); }
public void ExpiryYear_should_be_in_between_2020_and_2030_inclusive(int year, bool expectedOutput) { // Act var actualOutput = PassportValidator.ValidateExpiryYear(year); // Assert Assert.AreEqual(expectedOutput, actualOutput); }
public static int Run(string input) { var passports = new PassportParser().Parse(input); var validator = new PassportValidator(); return(passports.Count(p => validator.Validate(p).IsValid)); }
public void Height_should_be_in_in_or_cm_and_with_in_range(string height, bool expectedOutput) { // Act var actualOutput = PassportValidator.ValidateHeight(height); // Assert Assert.AreEqual(expectedOutput, actualOutput); }
private static string SolvePart2(List <string> input) { var passports = ParsePassports(input); var validator = new PassportValidator(RequiredFields, OptionalFields, CreateValidationRules()); return(passports.Count(x => validator.IsValid(x)).ToString()); }
public void PassportId_should_have_nine_digits_including_leading_zeroes(string passportId, bool expectedOutput) { // Act var actualOutput = PassportValidator.ValidatePassportId(passportId); // Assert Assert.AreEqual(expectedOutput, actualOutput); }
public void Eye_Color_only_has_certain_valid_values(string eyeColor, bool expectedOutput) { // Act var actualOutput = PassportValidator.ValidateEyeColor(eyeColor); // Assert Assert.AreEqual(expectedOutput, actualOutput); }
public override int Part1(string input) { var factory = new PassportFactory(); var validator = new PassportValidator(); var passports = PassportFactory.Create(input); var validPassports = passports.Where(passport => validator.HasRequiredFields(passport)); return(validPassports.Count()); }
public void Hair_Color_should_have_a_hashtag_followed_by_exactly_six_characters_0_9_or_a_f(string hairColor, bool expectedOutput) { // Act var actualOutput = PassportValidator.ValidateHairColor(hairColor); // Assert Assert.AreEqual(expectedOutput, actualOutput); }
public void Validate_Valid_Passport_Returns_Validated_Results() { var mockMrzParse = new Mock <IParseMrzLine2>(); var mockMrzValidator = new Mock <IMrzValidator>(); //We need to mock the IMapper, use the existing profile and pass this in var mockMapper = new MapperConfiguration(cfg => { cfg.AddProfile(new MappingProfile()); }); var mapper = mockMapper.CreateMapper(); PassportValidator controller = new PassportValidator(mockMrzParse.Object, mockMrzValidator.Object, mapper); PassportInput passportInput = new PassportInput() { PassportNumber = "112256503", Nationality = Nationality.GBR, DateOfBirth = new DateTime(1989, 02, 12), Gender = Gender.M, DateOfExpiry = new DateTime(2020, 10, 01), MrzLine2 = "1122565035GBR8902122M2010016<<<<<<<<<<<<<<04" }; MrzLine2 fakeMrzLine2 = new MrzLine2() { PassportNumber = "112256503", CheckDigitPassportNumber = "5", Nationality = Nationality.GBR, DateOfBirth = new DateTime(1989, 02, 12), CheckDigitDateOfBirth = "2", Gender = Gender.M, DateOfExpiry = new DateTime(2020, 10, 01), CheckDigitDateOfExpiry = "6", PersonalNumber = "", CheckDigitPersonalNumber = "0", CheckDigitOverall = "4" }; ValidationResults expectedValidationResults = new ValidationResults() { PassportNumberCheckDigit = true, DateOfBirthCheckDigit = true, PassportExpirationDateCheckDigit = true, PersonalNumberCheckDigit = true, FinalCheckDigit = true, GenderCrossCheck = true, DateOfBirthCrossCheck = true, ExpirationDateCrossCheck = true, NationalityCrossCheck = true, PassportNumberCrossCheck = true }; mockMrzParse.Setup(x => x.ParseMrzLine2FromString(It.IsAny <string>())).Returns(fakeMrzLine2); mockMrzValidator.Setup(x => x.ValidateMrzAndBaseData(It.IsAny <PassportBaseData>(), It.IsAny <MrzLine2>())).Returns(expectedValidationResults); ValidationResults returnedValidationResults = controller.Validate(passportInput).Value; Assert.Equal(expectedValidationResults, returnedValidationResults); }
public void Part1(string filepath, int expected) { var parser = new Parser(filepath); var factory = new PassportFactory(); var passports = parser.Parse(factory).Where(p => p != null); var sut = new PassportValidator(passports, new[] { new NotNull() }); var actual = sut.Validate(); Assert.Equal(expected, actual); }
public void ValidateHeight(string height, bool expected) { var passport = new Passport { Height = height }; var validator = new PassportValidator(); var actual = validator.ValidateHeight(passport); Assert.Equal(actual, expected); }
public void ValidateBirthYear(int year, bool expected) { var passport = new Passport { BirthYear = year }; var validator = new PassportValidator(); var actual = validator.ValidateBirthYear(passport); Assert.Equal(actual, expected); }
public void ValidatePassportId(string passportId, bool expected) { var passport = new Passport { PassportId = passportId }; var validator = new PassportValidator(); var actual = validator.ValidatePassportId(passport); Assert.Equal(actual, expected); }
internal bool IsValid() { return(PassportValidator.SimpleValidate(this) && PassportValidator.ValidateBYR(Extract("byr")) && PassportValidator.ValidateIYR(Extract("iyr")) && PassportValidator.ValidateEYR(Extract("eyr")) && PassportValidator.ValidateHeight(Extract("hgt")) && PassportValidator.ValidateHairColor(Extract("hcl")) && PassportValidator.ValidatePattern(Extract("ecl"), "^(amb|blu|brn|gry|grn|hzl|oth)$") && PassportValidator.ValidatePattern(Extract("pid"), @"\d{9}")); }
public void ValidateEyeColor(string color, bool expected) { var passport = new Passport { EyeColor = color }; var validator = new PassportValidator(); var actual = validator.ValidateEyeColor(passport); Assert.Equal(actual, expected); }
public void PassportValidator_Returns_Number_Of_Valid_Passports(bool useValidPassportData, int expectedResult) { // Arrange var passportData = useValidPassportData ? _validPassportData : _invalidPassportData; // Act var actualResult = PassportValidator.Validate(passportData); // Assert Assert.AreEqual(expectedResult, actualResult); }
public void Puzzle_4A() { var pv = new PassportValidator { Input = PuzzleInputs.Puzzle4 }; var count = pv.CountValidPassports(); Assert.Equal(206, count); }
public void HasValidFields(string input, int numValid) { var passportFactory = new PassportFactory(); var passports = PassportFactory.Create(input); var passportValidator = new PassportValidator(); var actual = passports .Where(passport => passportValidator.ValidateFields(passport)) .ToList(); Assert.Equal(numValid, actual.Count); }
public override string Level1(string[] input) { int ctr = 0; foreach (var entry in input) { var passport = ParsePassport(entry); if (PassportValidator.SimpleValidate(passport)) { ctr++; } } return(ctr.ToString());; }
public void Day04_PartTwoValidTest() { var input = @"pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 hcl:#623a2f eyr:2029 ecl:blu cid:129 byr:1989 iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm hcl:#888785 hgt:164cm byr:2001 iyr:2015 cid:88 pid:545766238 ecl:hzl eyr:2022 iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719"; Assert.AreEqual(4, PassportValidator.ValidPassportCountComplex(input)); }
public void Day04_PartTwoInvalidTest() { var input = @"eyr:1972 cid:100 hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 iyr:2019 hcl:#602927 eyr:1967 hgt:170cm ecl:grn pid:012533040 byr:1946 hcl:dab227 iyr:2012 ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 hgt:59cm ecl:zzz eyr:2038 hcl:74454a iyr:2023 pid:3556412378 byr:2007"; Assert.AreEqual(0, PassportValidator.ValidPassportCountComplex(input)); }
public void Day04_PartOneTest() { var input = @"ecl:gry pid:860033327 eyr:2020 hcl:#fffffd byr:1937 iyr:2017 cid:147 hgt:183cm iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 hcl:#cfa07d byr:1929 hcl:#ae17e1 iyr:2013 eyr:2024 ecl:brn pid:760753108 byr:1931 hgt:179cm hcl:#cfa07d eyr:2025 pid:166559648 iyr:2011 ecl:brn hgt:59in"; Assert.AreEqual(2, PassportValidator.ValidPassportCountSimple(input)); }
public void CompletePropertiesExcludingCID() { var passport = new Passport { Properties = new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("byr", "2002"), new KeyValuePair <string, string>("iyr", "2002"), new KeyValuePair <string, string>("eyr", "2002"), new KeyValuePair <string, string>("hgt", "2002"), new KeyValuePair <string, string>("hcl", "2002"), new KeyValuePair <string, string>("ecl", "2002"), new KeyValuePair <string, string>("pid", "2002"), } }; bool result = PassportValidator.SimpleValidate(passport); result.Should().Be(true); }
public void Part2(string filepath, int expected) { var parser = new Parser(filepath); var factory = new PassportFactory(); var passports = parser.Parse(factory).Where(p => p != null); var sut = new PassportValidator(passports, new Rule[] { new InRangeRule(p => p.BirthYear, 1920, 2020), new InRangeRule(p => p.ExperationYear, 2020, 2030), new ContainsRule(p => p.EyeColor, new [] { "amb", "blu", "brn", "gry", "grn", "hzl", "oth" }), new RegexRule(p => p.HairColor, "^#[0-9a-f]{6}$"), new PredicateRule( p => p.Unit == Unit.Metric, new InRangeRule(p => p.Height, 150, 193), new InRangeRule(p => p.Height, 59, 76) ), new InRangeRule(p => p.IssueYear, 2010, 2020), new RegexRule(p => p.PassportId, "^[0-9]{9}$"), }); var actual = sut.Validate(); Assert.Equal(expected, actual); }
public void Day04_PartTwo() { Assert.AreEqual(158, PassportValidator.ValidPassportCountComplex(_items)); }
public void Day04_PartOne() { Assert.AreEqual(250, PassportValidator.ValidPassportCountSimple(_items)); }