예제 #1
0
        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);
        }
예제 #2
0
 public void Part2_Example_Passport_Byr()
 {
     Passport.BirthYearValid(2002).Should().BeTrue();
     Passport.BirthYearValid(2003).Should().BeFalse();
 }
예제 #3
0
 public void Part2_Example_Passport_Ecl()
 {
     Passport.EyeColorValid("brn").Should().BeTrue();
     Passport.EyeColorValid("wat").Should().BeFalse();
 }
예제 #4
0
 public void Part2_Example_Passport_Pid()
 {
     Passport.PassportIdValid("000000001").Should().BeTrue();
     Passport.PassportIdValid("0123456789").Should().BeFalse();
 }
예제 #5
0
 public void Part2_Example_Passport_Hcl()
 {
     Passport.HairColorValid("#123abc").Should().BeTrue();
     Passport.HairColorValid("#123abz").Should().BeFalse();
     Passport.HairColorValid("123abc").Should().BeFalse();
 }