예제 #1
0
        public static DNumber OneRandom(DateTime dateFrom, DateTime dateTo, GenderRequest gender = GenderRequest.Any, int maxTryCount = DefaultRetryCount)
        {
            DNumber result = null;

            for (int tryCounter = 0; tryCounter < maxTryCount; ++tryCounter)
            {
                string number = OneRandomNumber(dateFrom, dateTo, gender, Adjust);
                result = Create(number);
                if (result != null)
                {
                    break;
                }
            }
            return(result);
        }
예제 #2
0
        private OperationResult CheckGeneration()
        {
            OperationResult result;
            GenerationKind  generationKind = CheckGenerationKind();

            if (generationKind == GenerationKind.Unknown)
            {
                result = new OperationResult {
                    Code = (Statuscode)(-1)
                };
            }
            else
            {
                Generator generator = new Generator(generationKind);
                DateTime  dateFrom  = DateTime.MinValue;
                if ((generationKind != GenerationKind.OrganizationNumber) && NextParamIsDate(ref dateFrom))
                {
                    DateTime dateTo = DateTime.MaxValue;
                    if (NextParamIsDate(ref dateTo))
                    {
                        GenderRequest gender = CheckGender();
                        result = generator.Generate(dateFrom, dateTo, gender);
                    }
                    else
                    {
                        result = new OperationResult {
                            Code = (Statuscode)(-1)
                        };
                    }
                }
                else
                {
                    string pattern = CheckPattern();
                    if (string.IsNullOrWhiteSpace(pattern))
                    {
                        int count = CheckCount();
                        result = generator.Generate(count);
                    }
                    else
                    {
                        result = generator.Generate(pattern);
                    }
                }
            }
            return(result);
        }
예제 #3
0
        public void OneRandom_SpecificYear_ReturnsValidIndividualNumber(GenderRequest gender)
        {
            int firstYear = DateBasedIdNumber.FirstPossible.Year;
            int lastYear  = DateBasedIdNumber.LastPossible.Year;

            for (int year = firstYear; year < lastYear; ++year)
            {
                IEnumerable <int> legalIndividualNumbers = IndividualNumberProvider.GetLegalNumbers(year, gender);
                DateTime          dateFrom    = new DateTime(year, 1, 1);
                DateTime          dateTo      = new DateTime(year, 12, 31);
                BirthNumber       birthNumber = BirthNumber.OneRandom(dateFrom, dateTo, gender);
                if (null != birthNumber)
                {
                    int individualNumber = int.Parse(birthNumber.Number.Substring(6, 3));
                    Assert.IsTrue(legalIndividualNumbers.Contains(individualNumber));
                }
            }
        }
예제 #4
0
        protected static string OneRandomNumber(DateTime dateFrom, DateTime dateTo, GenderRequest gender, AdjustNumber adjustMethod = null)
        {
            if (dateFrom < FirstPossible)
            {
                string msg = String.Format("Fra-dato ({0}) kan ikke være tidligere enn {1}.", dateFrom, FirstPossible);
                throw new NinException(Statuscode.BadDate, msg);
            }
            if (dateTo > LastPossible)
            {
                string msg = String.Format("Til-dato ({0}) kan ikke være senere enn {1}.", dateTo, LastPossible);
                throw new NinException(Statuscode.BadDate, msg);
            }
            if (dateFrom > dateTo)
            {
                string msg = String.Format("Fra-dato ({0}) kan ikke være senere enn til-dato ({1}).", dateFrom, dateTo);
                throw new NinException(Statuscode.BadDate, msg);
            }
            DateTime date   = DateInRange(dateFrom, dateTo);
            string   number = OneRandomNumber(date, gender, adjustMethod);

            return(number);
        }
예제 #5
0
 public static DNumber OneRandom(GenderRequest gender, int maxTryCount = DefaultRetryCount)
 {
     return(OneRandom(FirstPossible, LastPossible, gender, maxTryCount));
 }