public static Passport FromInput(string input) { var passport = new Passport(); var parts = input .Split(new char[] { ' ', '\t', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries) .Select(s => { var keyValueParts = s.Split(':'); return(keyValueParts[0], keyValueParts[1]); }); //byr(Birth Year) //iyr(Issue Year) //eyr(Expiration Year) //hgt(Height) //hcl(Hair Color) //ecl(Eye Color) //pid(Passport ID) //cid(Country ID) foreach (var(key, value) in parts) { switch (key) { case "byr": passport.BirthYear = int.Parse(value); break; case "iyr": passport.IssueYear = int.Parse(value); break; case "eyr": passport.ExpirationYear = int.Parse(value); break; case "hgt": passport.Height = value; break; case "hcl": passport.HairColor = value; break; case "ecl": passport.EyeColor = value; break; case "pid": passport.PassportId = value; break; case "cid": passport.CountryId = int.Parse(value); break; default: throw new Exception($"Unknown passport key: {key} (Value = {value})"); } } return(passport); }
public void Part2_Example_Passport_Byr() { Passport.BirthYearValid(2002).Should().BeTrue(); Passport.BirthYearValid(2003).Should().BeFalse(); }
public void Part2_Example_Passport_Ecl() { Passport.EyeColorValid("brn").Should().BeTrue(); Passport.EyeColorValid("wat").Should().BeFalse(); }
public void Part2_Example_Passport_Pid() { Passport.PassportIdValid("000000001").Should().BeTrue(); Passport.PassportIdValid("0123456789").Should().BeFalse(); }
public void Part2_Example_Passport_Hcl() { Passport.HairColorValid("#123abc").Should().BeTrue(); Passport.HairColorValid("#123abz").Should().BeFalse(); Passport.HairColorValid("123abc").Should().BeFalse(); }