예제 #1
0
        static void Main(string[] args)
        {
            PeopleRepository allPeople = null;
            PeopleRepository offLimitsPeople = null;
            ResultsRepository results = null;

            new OptionSet {
                { "allpeople=", s => {
                        allPeople = new PeopleRepository(File.ReadLines(s), s);
                    }
                }, { "offlimits=", s => {
                        offLimitsPeople = new PeopleRepository(File.ReadLines(s), s);
                    }
                }, { "results=", s => {
                        results = new ResultsRepository(s);
                    }
                }
            }.Parse(args);

            var nextBirthday = results.NextBirthday();
            var checkDate = new DateTime(DateTime.Now.Year, nextBirthday.Month, nextBirthday.Day).AddDays(1).AddSeconds(-1); // meh

            using (SystemClock.Stub(checkDate))
            {
                var personSource = new PersonSource(allPeople.GetPeople());
                var offLimitSource = new OffLimitsSource(offLimitsPeople.GetPeople(),
                    personSource.GetAllPeople().Length);

                var matcher = new Matcher(personSource, offLimitSource);

                results.Save(matcher.Next());
                offLimitsPeople.Save(matcher.GetOffLimits());
            }
        }
예제 #2
0
        public void given_a_start_date_Source_should_know_Next()
        {
            var today = new DateTime(2000, 8, 10);
            var source = new PersonSource(SampleData.People);

            source.GetNextRecipient(today).Name.ShouldBe("Iris");
        }
예제 #3
0
        public void should_run()
        {
            var personSource = new PersonSource(SampleData.People);
            var matcher = new Matcher(personSource, new OffLimitsSource(new Person[0], SampleData.People.Length));

            for (int i = 0; i < 250; i++)
            {
                using (SystemClock.Stub(DateTime.Now.AddMonths(i)))
                {
                    Console.WriteLine(matcher.Next());
                }
            }
        }
예제 #4
0
 public Matcher(PersonSource personSource, OffLimitsSource offLimits)
 {
     _personSource = personSource;
     _offLimits    = offLimits;
 }
예제 #5
0
 public Matcher(PersonSource personSource, OffLimitsSource offLimits)
 {
     _personSource = personSource;
     _offLimits = offLimits;
 }