public void TestChristmaPickServiceUsingTheSequentialNumberGeneratorWithOneRuleThatIsAlwaysPassingForOddChristmasYear() { PersonCollection pickList = new PersonCollection(); Person MaxG = new Person("Max", "Gehred", new DateTime(2001, 9, 30), "31111111-2222-3333-4444-555555555555"); Person CharlotteG = new Person("Charlotte", "Gehred", new DateTime(2005, 4, 21), "41111111-2222-3333-4444-555555555555"); Person MadelineG = new Person("Madeline", "Gehred", new DateTime(1988, 4, 15), "14111111-2222-3333-4444-555555555555"); Person CecilaG = new Person("Cecila", "Gehred", new DateTime(1990, 6, 21), "15111111-2222-3333-4444-555555555555"); pickList.Add(MaxG); pickList.Add(CharlotteG); pickList.Add(MadelineG); pickList.Add(CecilaG); IPickListService testObj = new PickListServiceAdvanced(new SequentialNumberGenerator(pickList.Count), new TestRuleProvider(), pickList); XMasPickList actual = testObj.CreateChristmasPick(new DateTime(2007, 12, 25)); XMasPick expectedFirstPick = new XMasPick(CharlotteG, MaxG); Assert.IsTrue((expectedFirstPick == actual[0])); XMasPick expectedSecondPick = new XMasPick(MaxG, CecilaG); Assert.IsTrue(expectedSecondPick == actual[1]); XMasPick expectedThirdPick = new XMasPick(CecilaG, MadelineG); Assert.IsTrue(expectedThirdPick == actual[2]); XMasPick expectedFourthPick = new XMasPick(MadelineG, CharlotteG); Assert.IsTrue(expectedFourthPick == actual[3]); }
static void Main(string[] args) { DateTime christmasThisYear = new DateTime(2016, 12, 25); string adultArchivePath = @"C:\Users\gehredbo\Source\Hobby\ChristmasPick\Archive\Adult\Archive.xml"; string kidArchivePath = @"C:\Users\gehredbo\Source\Hobby\ChristmasPick\Archive\Kids\Archive.xml"; IXMasArchivePersister adultPersister = new FileArchivePersister(adultArchivePath); IXMasArchivePersister kidPersister = new FileArchivePersister(kidArchivePath); IFamilyProvider familyProvider = new FileFamilyProvider(@"C:\Users\gehredbo\Source\Hobby\ChristmasPick\Archive\Gehred\GehredFamily.xml"); // Go ahead and get family FamilyTree gehredFamily = familyProvider.GetFamilies(); XMasArchive adultArchive = adultPersister.LoadArchive(); XMasArchive kidArchive = kidPersister.LoadArchive(); // Create two poeple collections PersonCollection kidList = gehredFamily.CreateChristmasKidList(christmasThisYear); PersonCollection adultList = gehredFamily.CreateChristmasAdultList(christmasThisYear); IPickListRuleProvider kidRules = new KidListRuleProvider(gehredFamily, kidArchive, 5); IPickListService picker = new PickListServiceAdvanced(new RandomNumberGenerator(kidList.Count), kidRules, kidList); XMasPickList kidPicklist = picker.CreateChristmasPick(christmasThisYear); XMasPickListValidator validation = new XMasPickListValidator(); try { var checkList = validation.PickListToValidateWithPeopleList(kidList, kidPicklist); if (validation.isPickListValid(checkList)) { kidArchive.Add(christmasThisYear.Year, kidPicklist); kidPersister.SaveArchive(kidArchive); } else { Console.WriteLine("The kid pick list has errors. Nothing was saved."); } } catch (Exception ex) { Console.WriteLine("An exception occurred validating kids picklist: {0}", ex.ToString()); } IPickListRuleProvider adultRules = new AdultListRuleProvider(gehredFamily, adultArchive, 5); IPickListService adultPicker = new PickListServiceAdvanced(new RandomNumberGenerator(adultList.Count), adultRules, adultList); XMasPickList adultPickList = adultPicker.CreateChristmasPick(christmasThisYear); try { var checkList = validation.PickListToValidateWithPeopleList(adultList, adultPickList); if (validation.isPickListValid(checkList)) { adultArchive.Add(christmasThisYear.Year, adultPickList); adultPersister.SaveArchive(adultArchive); } else { Console.WriteLine("The adult pick list has errors. Nothing was saved."); } } catch (Exception ex) { Console.WriteLine("An exception occurred: {0}", ex.ToString()); } }