示例#1
0
        /// <summary>
        /// Whether this passport is valid.
        /// </summary>
        /// <returns></returns>
        public bool IsValidPassport()
        {
            if (!HasRequiredProperties)
            {
                return(false);
            }

            bool byr = Byr >= 1920 && Byr <= 2002;
            bool iyr = Iyr >= 2010 && Iyr <= 2020;
            bool eyr = Eyr >= 2020 && Eyr <= 2030;

            string unit = Hgt.Substring(Hgt.Length - 2);
            bool   hgt  = false;

            if (int.TryParse(Hgt.Substring(0, Hgt.Length - 2), out int value))
            {
                if (unit == "cm")
                {
                    hgt = value >= 150 && value <= 193;
                }
                else if (unit == "in")
                {
                    hgt = value >= 59 && value <= 76;
                }
            }

            bool ecl = EyeColours.Contains(Ecl);
            bool hcl = Regex.IsMatch(Hcl, "#([0-9]|[a-f]){6}$");
            bool pid = Regex.IsMatch(Pid, "[0-9]{9}$");

            return(byr && iyr && eyr && hgt && hcl && ecl && pid);
        }
示例#2
0
 public bool Validate()
 {
     return(Byr.HasValue &&
            Iyr.HasValue &&
            Eyr.HasValue &&
            !Pid.IsNullOrEmpty() &&
            !Hgt.IsNullOrEmpty() &&
            !Hcl.IsNullOrEmpty() &&
            !Ecl.IsNullOrEmpty());
 }
示例#3
0
 private static bool IsPolarId(string id)
 {
     return
         (Byr.IsMatch(id) &&
          Iyr.IsMatch(id) &&
          Eyr.IsMatch(id) &&
          Hgt.IsMatch(id) &&
          Hcl.IsMatch(id) &&
          Ecl.IsMatch(id) &&
          Pid.IsMatch(id));
 }
示例#4
0
    public override bool Read(string filename, ProgressInfo progress, out PatchData data)
    {
        data = null;

        using (var hgt = Hgt.Open(filename))
        {
            if (hgt == null)
            {
                return(false);
            }

            var bounds = hgt.Bounds;

            GridData grid = new GridData
            {
                north = bounds.north,
                east  = bounds.east,
                west  = bounds.west,
                south = bounds.south,
            };

            // Substract 1 to width/height to avoid overlaps
            grid.countX = hgt.Width - 1;
            grid.countY = hgt.Height - 1;
            grid.InitGridValues(false);

            // Read raster values
            var   buffer    = hgt.Buffer;
            int   pos       = 0;
            int   index     = 0;
            float invCountY = 1f / grid.countY;
            for (int y = 0; y < grid.countY; y++)
            {
                for (int x = 0; x < grid.countX; x++)
                {
                    short value = (short)((buffer[pos++] << 8) | buffer[pos++]);
                    grid.values[index++] = value;
                }
                // Advance another 2 positions to skip the last column
                pos += 2;

                progress.value += invCountY;
            }

            progress.value = 1;

            grid.AddMaskValue(Hgt.DataVoid);
            grid.units = SuggestedUnits;

            data = grid;
        }

        return(true);
    }
示例#5
0
            private bool IsHgtValid()
            {
                if (Hgt != null)
                {
                    if (Hgt.EndsWith("cm"))
                    {
                        var length = int.Parse(Hgt.Substring(0, Hgt.Length - 2));
                        return(150 <= length && length <= 193);
                    }
                    else if (Hgt.EndsWith("in"))
                    {
                        var length = int.Parse(Hgt.Substring(0, Hgt.Length - 2));
                        return(59 <= length && length <= 76);
                    }
                }

                return(false);
            }
        private bool ValidHgt()
        {
            if (Hgt.Length < 4)
            {
                return(false);
            }
            string unit   = Hgt.Substring(Hgt.Length - 2);
            int    length = int.Parse(Hgt.Substring(0, Hgt.Length - 2));

            if (unit == "cm")
            {
                return(length >= 150 && length <= 193);
            }
            if (unit == "in")
            {
                return(length >= 59 && length <= 76);
            }
            return(false);
        }
示例#7
0
    public override BasicInfo GetBasicInfo(string filename)
    {
        BasicInfo info = new BasicInfo();

        try
        {
            var format = HgtFormat.Get(filename);
            info.bounds   = Hgt.GetBounds(filename);
            info.isRaster = true;
            // Substract 1 to width/height to avoid overlaps
            info.width              = info.height = format.RowsAndColumns - 1;
            info.degreesPerPixel    = format.GetDegreesPerPixel();
            info.suggestedLayerName = SuggestedLayerName;
            info.suggestedUnits     = SuggestedUnits;
        }
        catch (Exception e)
        {
            Debug.LogException(e);
            return(null);
        }
        return(info);
    }
示例#8
0
        public bool IsValid()
        {
            if (!HasMadatoryFields())
            {
                return(false);
            }

            if (!int.TryParse(Byr, out var byr))
            {
                return(false);
            }

            if (byr < 1920 || byr > 2002)
            {
                return(false);
            }

            if (!int.TryParse(Iyr, out var iyr))
            {
                return(false);
            }

            if (iyr < 2010 || iyr > 2020)
            {
                return(false);
            }

            if (!int.TryParse(Eyr, out var eyr))
            {
                return(false);
            }

            if (eyr < 2020 || eyr > 2030)
            {
                return(false);
            }

            if (!Hgt.EndsWith("cm") && !Hgt.EndsWith("in"))
            {
                return(false);
            }

            if (Hgt.EndsWith("cm"))
            {
                if (!int.TryParse(Hgt.Replace("cm", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 150 || hgt > 193)
                {
                    return(false);
                }
            }

            if (Hgt.EndsWith("in"))
            {
                if (!int.TryParse(Hgt.Replace("in", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 59 || hgt > 76)
                {
                    return(false);
                }
            }

            var hairRegEx = new Regex("#[a-z0-9]{6}");

            if (!hairRegEx.Match(Hcl).Success)
            {
                return(false);
            }


            string[] eyeColours = new string[] {
                "amb", "blu", "brn", "gry", "grn", "hzl", "oth"
            };
            if (!eyeColours.Contains(Ecl.ToLower()))
            {
                return(false);
            }

            if (Pid.Length != 9)
            {
                return(false);
            }

            if (!int.TryParse(Pid, out var ignored))
            {
                return(false);
            }

            return(true);
        }
示例#9
0
        public bool IsValidStrict()
        {
            if (string.IsNullOrWhiteSpace(Eyr) ||
                string.IsNullOrWhiteSpace(Pid) ||
                string.IsNullOrWhiteSpace(Hcl) ||
                string.IsNullOrWhiteSpace(Byr) ||
                string.IsNullOrWhiteSpace(Iyr) ||
                string.IsNullOrWhiteSpace(Ecl) ||
                string.IsNullOrWhiteSpace(Hgt))
            {
                return(false);
            }

            if (!int.TryParse(Byr, out var byr))
            {
                return(false);
            }

            if (byr < 1920 || byr > 2002)
            {
                return(false);
            }

            if (!int.TryParse(Iyr, out var iyr))
            {
                return(false);
            }

            if (iyr < 2010 || iyr > 2020)
            {
                return(false);
            }

            if (!int.TryParse(Eyr, out var eyr))
            {
                return(false);
            }

            if (eyr < 2020 || eyr > 2030)
            {
                return(false);
            }

            if (!Hgt.EndsWith("cm") && !Hgt.EndsWith("in"))
            {
                return(false);
            }

            if (Hgt.EndsWith("cm"))
            {
                if (!int.TryParse(Hgt.Replace("cm", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 150 || hgt > 193)
                {
                    return(false);
                }
            }

            if (Hgt.EndsWith("in"))
            {
                if (!int.TryParse(Hgt.Replace("in", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 59 || hgt > 76)
                {
                    return(false);
                }
            }

            if (Hcl.Length != 7 || !Hcl.StartsWith("#"))
            {
                return(false);
            }

            const string validHair = "0123456789abcdef";

            for (var i = 1; i < Hcl.Length; i++)
            {
                if (!validHair.Contains(Hcl[i].ToString().ToLower()))
                {
                    return(false);
                }
            }

            string[] validEyes = new string[] {
                "amb", "blu", "brn", "gry", "grn", "hzl", "oth"
            };

            if (!validEyes.Contains(Ecl.ToLower()))
            {
                return(false);
            }

            if (Pid.Length != 9)
            {
                return(false);
            }

            if (!int.TryParse(Pid, out var temp1))
            {
                return(false);
            }

            return(true);
        }
示例#10
0
            /*enum EyeColor
             * {
             *  amb,
             *  blu,
             *  brn,
             *  gry,
             *  grn,
             *  hzl,
             *  oth
             * }*/

            public bool IsValid()
            {
                return(Byr != -1 && Iyr != -1 && Eyr != -1 && !Hgt.Equals(string.Empty) && !Pid.Equals(string.Empty) && !Hcl.Equals(string.Empty) && !Ecl.Equals(string.Empty));
            }