def test_correspondingEntries_us26(self): from Family import Family from Individual import Individual list1 = { 'A1': Individual('A1', spouseFamily='B2'), #husband 'A2': Individual('A2', spouseFamily='B2'), #wife 'A5': Individual('A5', childFamily='B2') } #child #Family's husband does not have the same listed as his spouse Family: list2 = {'B1': Family('B1', husband='A1', wife='A5')} self.assertTrue(correspondingEntries_us26(list2['B1'], list1)) #Family's wife does not have the same listed as her spouse Family: list2 = {'B1': Family('B1', husband='A5', wife='A1')} self.assertTrue(correspondingEntries_us26(list2['B1'], list1)) #Family's child does not have the same listed as his/her child Family: list2 = {'B2': Family('B1', husband='A1', wife='A2')} list2['B2'].setChildren('A5') self.assertTrue(correspondingEntries_us26(list2['B2'], list1)) #All the roles match in individual and family tables: list1 = { 'A1': Individual('A1', spouseFamily='B1'), 'A2': Individual('A2', spouseFamily='B1'), 'A5': Individual('A5', childFamily='B1') } self.assertFalse(correspondingEntries_us26(list2['B2'], list1))
def reset(): Global.max_level = 1 Global.savings = 10 Global.family_list = [Family("Brother", 6), Family("Wife", 4), Family("Son", 5), Family("Mother-in-Law", 2), Family("Uncle", 3)]
def test_marriedToDescendants_us17(self): from Individual import Individual from Family import Family list1 = { 'A1': Individual('A1', spouseFamily='B1'), 'A3': Individual('A1', spouseFamily='NA'), 'A4': Individual('A1', spouseFamily='NA'), 'A5': Individual('A1', spouseFamily='B2'), 'A7': Individual('A1', spouseFamily='NA'), 'A8': Individual('A1', spouseFamily='B3') } #Parent married to child list2 = { 'B1': Family('B1', husband='A1', wife='A2'), 'B2': Family('B2', husband='A1', wife='A5') } children = ['A3', 'A4', 'A5'] for child in children: list2['B1'].setChildren(child) self.assertTrue(marriedToDescendants_us17(list1['A1'], list1, list2)) #Parent married to grand child list3 = { 'B1': Family('B1', husband='A1', wife='A2'), 'B2': Family('B2', husband='A3', wife='A6'), 'B3': Family('B3', husband='A1', wife='A8') } children = ['A3', 'A4', 'A5'] for child in children: list3['B1'].setChildren(child) grandChildren = ['A7', 'A8'] for grandChild in grandChildren: list3['B2'].setChildren(grandChild) self.assertTrue(marriedToDescendants_us17(list1['A1'], list1, list3))
def test_checkBirthBeforeMarriageOfParents_us08(self): from Family import Family from Individual import Individual self.assertEqual( checkBirthBeforeMarriageOfParents_us08( Family(self, 10, marriage='1945-10-05'), Individual(self, 10, birthday='1915-10-05')), False) self.assertTrue( checkBirthBeforeMarriageOfParents_us08( Family(self, 10, marriage='1945-10-05', divorce='1955-10-05'), Individual(self, 10, birthday='1947-10-05', death='1975-03-10')))
def test_firstCousinsMarried_us19(self): from Individual import Individual from Family import Family list1 = { 'A1': Individual('A1', childFamily='B1'), 'A2': Individual('A1'), 'A3': Individual('A3', childFamily='B1', spouseFamily='B3'), 'A4': Individual('A4', childFamily='B2', spouseFamily='B4') } #Married to first cousin list2 = { 'B1': Family('B1'), 'B2': Family('B2', husband='A1', wife='A2'), 'B3': Family('B3', husband='A3'), 'B4': Family('B4', husband='A4', wife='A5') } children = ['A1', 'A3'] for child in children: list2['B1'].setChildren(child) list2['B2'].setChildren('A4') cousins = ['A5', 'A6'] for cousin in cousins: list2['B3'].setChildren(cousin) self.assertTrue(firstCousinsMarried_us19(list1['A4'], list1, list2)) #Not married to first cousin list3 = { 'B1': Family('B1'), 'B2': Family('B2', husband='A1', wife='A2'), 'B3': Family('B3'), 'B4': Family('B4', husband='A4', wife='A7') } self.assertFalse(firstCousinsMarried_us19(list1['A4'], list1, list3))
def simulate_stream(stream): current_family = None simulator = Simulator() reader = csv.DictReader(stream, delimiter=',') result = {} for row in reader: person = person_from_row(row) if current_family is None: current_family = Family(person.familiy_id) if current_family.ID == person.familiy_id: current_family.add_person(person) else: result.update( zip([v.ID for v in current_family.persons], simulator.simulate('GG_270_mensual', '2017-1', current_family))) current_family = Family(person.familiy_id) current_family.add_person(person) result.update( zip([v.ID for v in current_family.persons], simulator.simulate('GG_270_mensual', '2017-1', current_family))) return result
def test_marriage_invalid(self): p1_dict = { 'INDI': 'I0', 'NAME': 'Person /One', 'SEX': 'M', 'BIRT': '8 Jan 1972', 'FAM': 'F0' } p2_dict = { 'INDI': 'I1', 'NAME': 'Person /Two', 'SEX': 'F', 'BIRT': '11 Aug 1973', 'FAM': 'F0' } p3_dict = { 'INDI': 'I2', 'NAME': 'Pperson /One', 'SEX': 'F', 'BIRT': '23 Apr 2000', 'FAM': ['F0', 'F1'] } p4_dict = { 'INDI': 'I3', 'NAME': 'Personn /One', 'SEX': 'M', 'BIRT': '20 Mar 2001', 'FAM': ['F0', 'F1'] } husband1 = Individual.instance_from_dict(p1_dict) wife1 = Individual.instance_from_dict(p2_dict) child1 = Individual.instance_from_dict(p3_dict) child2 = Individual.instance_from_dict(p4_dict) fam_dict = { 'FAM': 'F0', 'HUSB': husband1, 'WIFE': wife1, 'MARR': '15 Mar 1994', 'CHIL': [child1, child2], } fam_dict2 = { 'FAM': 'F1', 'HUSB': child2, 'WIFE': child1, 'MARR': '15 Jul 2018', } Family.instance_from_dict(fam_dict2) self.assertTrue(Family.instance_from_dict(fam_dict).anomalies)
def test_is_marriage_fourteen_years_after_parents_birth(self): wife = Person() wife.set_birthday("1 JAN 1910") wife.name = "Kim" husband = Person() husband.set_birthday("1 JAN 1910") husband.name = "Joe" family = Family("1") family.husband = husband family.wife = wife family.set_marriage_date("1 JAN 1923") self.assertFalse( family.is_marriage_fourteen_years_after_parents_birth()) family.set_marriage_date("1 JAN 1925") self.assertTrue( family.is_marriage_fourteen_years_after_parents_birth())
def test_checkBirthNotAfter9MonthsDivorce_us08(self): from Family import Family from Individual import Individual self.assertEqual( checkBirthNotAfter9MonthsDivorce_us08( Family(self, 10, marriage='1945-10-05', divorce='1955-10-05'), Individual(self, 10, birthday='1957-10-05')), False) self.assertEqual( checkBirthNotAfter9MonthsDivorce_us08( Family(self, 10, marriage='1945-10-05', divorce='1955-10-05'), Individual(self, 10, birthday='1955-11-05')), True) self.assertTrue( checkBirthNotAfter9MonthsDivorce_us08( Family(self, 10, marriage='1945-10-05', divorce='1955-10-05'), Individual(self, 10, birthday='1947-10-05', death='1975-03-10')))
def test_siblingSpacing_us13(self): from Individual import Individual from Family import Family list1 = {'B1': Family('B1')} children = ['A3', 'A4', 'A5'] for child in children: list1['B1'].setChildren(child) #Spacing violated by less than 8 months condition list2 = { 'A3': Individual('A1', birthday='1980-01-01'), 'A4': Individual('A2', birthday='1987-02-05'), 'A5': Individual('A3', birthday='1980-07-01') } self.assertTrue(siblingSpacing_us13(list1['B1'], list2)) #Spacing violated by more than 2 days condition list3 = { 'A3': Individual('A1', birthday='1980-01-01'), 'A4': Individual('A2', birthday='1987-02-05'), 'A5': Individual('A3', birthday='1980-01-03') } self.assertTrue(siblingSpacing_us13(list1['B1'], list2)) #Spacing not violated list4 = { 'A3': Individual('A1', birthday='1980-01-01'), 'A4': Individual('A2', birthday='1987-02-05'), 'A5': Individual('A3', birthday='1984-01-03') } self.assertFalse(siblingSpacing_us13(list1['B1'], list4))
def test_both_invalid(self): p1_dict = { 'INDI': 'I0', 'NAME': 'Person /One', 'SEX': 'F', 'BIRT': '28 Feb 1980', 'FAM': 'F0' } p2_dict = { 'INDI': 'I1', 'NAME': 'Person /Two', 'SEX': 'M', 'BIRT': '13 Feb 1980', 'FAM': 'F0' } husband = Individual.instance_from_dict(p1_dict) wife = Individual.instance_from_dict(p2_dict) fam_dict = { 'FAM': 'F0', 'HUSB': husband, 'WIFE': wife, 'MARR': '15 Mar 2002', } self.assertTrue( len(Family.instance_from_dict(fam_dict).anomalies) == 2)
def test_checkBigamy_us11(self): from Individual import Individual from Family import Family #No bigamy list1 = { 'A1': Individual('A1', 'NA', 'M', 'NA', 'NA', 'NA', 'NA', 'B1'), 'A2': Individual('A2', 'NA', 'F', 'NA', 'NA', 'NA', 'NA', 'B1'), 'A3': Individual('A3', 'NA', 'F', 'NA', 'NA', 'NA', 'NA', 'B2') } list2 = { 'B1': Family('B1', husband='A1', wife='A2', marriage=formatDate('31 JAN 1969'), divorce=formatDate('16 NOV 1980')), 'B2': Family('B2', husband='A1', wife='A3', marriage=formatDate('1 JAN 1982'), divorce='NA') } self.assertFalse(checkBigamy_us11(list1['A1'], list1, list2)) #Bigamy list3 = { 'A1': Individual('A1', 'NA', 'M', 'NA', 'NA', 'NA', 'NA', 'B1'), 'A2': Individual('A2', 'NA', 'F', 'NA', 'NA', 'NA', 'NA', 'B1'), 'A3': Individual('A3', 'NA', 'F', 'NA', 'NA', 'NA', 'NA', 'B2') } list4 = { 'B1': Family('B1', husband='A1', wife='A2', marriage=formatDate('31 JAN 1969'), divorce=formatDate('16 NOV 1980')), 'B2': Family('B2', husband='A1', wife='A3', marriage=formatDate('6 AUG 1979'), divorce='NA') } self.assertTrue(checkBigamy_us11(list3['A1'], list3, list4))
def test_illegitimate_date_div(self): data = [ '0 @<US04>F1@ FAM', '1 HUSB @<US04>I2@', '1 WIFE @<US04>I3@', '1 CHIL @<US04>I1@', '1 CHIL @<US04>I4@', '1 CHIL @<US04>I5@', '1 CHIL @<US04>I6@', '1 MARR', '2 DATE 30 APR 1960', '1 DIV', '2 DATE 31 NOC 1967', '1 _CURRENT Y' ] with self.assertRaises(ValueError): self.indi = Family(data)
def test_parents_not_too_old(self): """US 12 Mother should be less than 60 years older than her children and father should be less than 80 years older than his children""" mother = Person() father = Person() mother.age = 80 father.age = 100 test_fam = Family() test_fam.add_wife(mother) test_fam.add_husband(father) child = Person() child.age = 2 test_fam.add_child( child) # should not work since we break the age limit for mother child.age = 22 test_fam.add_child( child) # should not work since we break the age limit for father self.assertTrue(len(test_fam.children) == 0) return
def test_List_large_age_difference_US34(self): from Individual import Individual from Family import Family list1 = { 'A1': Individual('A1', age='106'), 'A2': Individual('A1', age='39') } list2 = {'B1': Family('B1', husband='A1', wife='A2')} self.assertFalse(List_large_age_difference_US34(list1, list2))
def setUp(self): self.indi = Individual() self.indi.addID('@I2@') self.indi.addName('John Rivas') self.indi.addSex('M') self.indi.addBirt('9 MAY 1978') self.indi.addDeat('12 APR 2013') self.indi.addFams('@F2@') self.indi.addFamc('@F1@') self.fam1 = Family() self.fam1.addFamID('@F2@') self.fam1.addHusb('@I1@') self.fam1.addWife('@I2@') self.fam1.addChil('@I4@') self.fam1.addChil('@I5@') self.fam1.addMarr('5 OCT 1999') self.fam1.addDiv('12 JUN 2012') self.fam2 = Family() self.fam2.addFamID('@F3@') self.fam2.addHusb('@I3@') self.fam2.addWife('@I3@')
def test_is_birth_before_death_of_parents(self): wife = Person() wife.set_birthday("1 JAN 1910") wife.name = "Kim" wife.set_death("16 MAR 1952") child = Person() child.name = "Sally" child.set_birthday("17 MAR 1952") family = Family("1") family.wife = wife family.add_child(child) self.assertFalse(family.is_birth_before_death_of_parents()) husband = Person() husband.set_birthday("1 JAN 1910") husband.name = "Joe" husband.set_death("5 JAN 1952") family.add_husband(husband) family.wife.set_death("10 MAR 1970") self.assertTrue(family.is_birth_before_death_of_parents()) family.husband.set_death("5 APR 1951") self.assertFalse(family.is_birth_before_death_of_parents())
def __init__(self, name, gender, parents, familyKind, max_health, lifespan, strength, defense, speed): Animal.__init__(self, gender, max_health, lifespan, strength, defense, speed) self.name = name self.mother = parents[0] self.father = parents[1] if self.father: self.family = self.father.family elif self.mother: self.family = self.mother.family else: family_name = self.species.familyNames.pop( random.randint(0, len(self.species.familyNames) - 1)) if family_name in Family.familyDict: self.family = Family.familyDict[family_name] else: self.family = Family(family_name, familyKind) self.family.add_member(self) self.full_name = self.name + " " + self.family.name self.title = self.species.numeralTitles[len([ member for member in self.family.members if member.name == self.name and member is not self ])] self.title_index = 0 if self.title: self.full_name += " " + self.title self._strength, self._defense, self._speed = self.strength, self.defense, self.speed self.strength, self.defense, self.speed = 3, 3, 3 self.strength_dealt, self.defense_dealt, self.speed_dealt = 0, 0, 0 self.kills = [] # Equipment format: [1 head, 1 torso, 2 arms, 2 hands, 2 legs, 2 feet] self.inventory = Inventory(self, self.species.blocked_items, 1, 1, 2, 2, 2, 2) self.skills = Skillsets(self, self.species.skill_specialties)
def test_List_orphans_US33(self): from Individual import Individual from Family import Family list1 = { 'A1': Individual('A1', death='1960-12-10'), 'A2': Individual('A1', death='1960-12-11'), 'A3': Individual('A1', birthday='1993-12-09') } list2 = {'B1': Family('B1', husband='A1', wife='A2')} children = ['A3'] for child in children: list2['B1'].setChildren(child) self.assertFalse(List_orphans_US33(list1, list2))
def test_marriedToSiblings_us18(self): from Individual import Individual from Family import Family #Married to sibling list1 = {'A3': Individual('A3', childFamily='B1', spouseFamily='B2')} list2 = { 'B1': Family('B1', husband='A1', wife='A2'), 'B2': Family('B2', husband='A3', wife='A5') } children = ['A3', 'A4', 'A5'] for child in children: list2['B1'].setChildren(child) self.assertTrue(marriedToSiblings_us18(list1['A3'], list2)) #Not married to sibling list3 = { 'B1': Family('B1', husband='A1', wife='A2'), 'B2': Family('B2', husband='A3', wife='A6') } children = ['A3', 'A4', 'A5'] for child in children: list3['B1'].setChildren(child) self.assertFalse(marriedToSiblings_us18(list1['A3'], list3))
def test_orderSiblings_us28(self): from Family import Family from Individual import Individual list1 = { 'A1': Individual('A1', childFamily='B1', age='48'), 'A2': Individual('A2', childFamily='B1', age='31'), 'A3': Individual('A3', childFamily='B1', age='37') } list2 = {'B1': Family('B1')} children = ['A1', 'A2', 'A3'] for child in children: list2['B1'].setChildren(child) self.assertEqual(orderSiblings_us28(list2['B1'], list1), 'B1 A1 A3 A2')
def test_Recent_surviors_US37(self): from Individual import Individual from Family import Family list1 = { 'A1': Individual('A1', death='2017-10-29'), 'A2': Individual('A1', birthday='1960-03-12'), 'A3': Individual('A1', birthday='1993-03-12') } list2 = {'B1': Family('B1', husband='A1', wife='A2')} children = ['A3'] for child in children: list2['B1'].setChildren(child) self.assertFalse(Recent_surviors_US37(list1, list2))
def test_invalid_first_names(self): p1_dict = { 'INDI': 'I0', 'NAME': 'James /Bond', 'SEX': 'M', 'BIRT': '8 Jan 1972', 'FAM': 'F0' } p2_dict = { 'INDI': 'I0', 'NAME': 'Sarah /Bond', 'SEX': 'F', 'BIRT': '11 Aug 1973', 'FAM': 'F0' } p3_dict = { 'INDI': 'I1', 'NAME': 'Jill /Bond', 'SEX': 'F', 'BIRT': '23 Apr 2000', 'FAM': 'F0' } p4_dict = { 'INDI': 'I1', 'NAME': 'John /Bond', 'SEX': 'M', 'BIRT': '20 Mar 2001', 'FAM': 'F0' } p5_dict = { 'INDI': 'I1', 'NAME': 'John /Bond', 'SEX': 'M', 'BIRT': '20 Mar 2001', 'FAM': 'F0' } husband = Individual.instance_from_dict(p1_dict) wife = Individual.instance_from_dict(p2_dict) child1 = Individual.instance_from_dict(p3_dict) child2 = Individual.instance_from_dict(p4_dict) child3 = Individual.instance_from_dict(p5_dict) fam_dict = { 'FAM': 'F0', 'HUSB': husband, 'WIFE': wife, 'MARR': '15 Mar 1994', 'CHIL': [child1, child2, child3], } self.assertTrue(Family.instance_from_dict(fam_dict).anomalies)
def test_correct_gender_for_role_US21(self): from Individual import Individual from Family import Family ls1 = { 'A1': Individual('A1', 'NA', 'F', 'NA', 'NA', 'NA', 'NA', 'F1'), 'A2': Individual('A2', 'NA', 'M', 'NA', 'NA', 'NA', 'NA', 'F1'), } ls2 = { 'F1': Family('F1', husband='A1', wife='A2', marriage=formatDate('16 MAR 1990'), divorce='NA') } self.assertFalse(correct_gender_for_role_US21(ls1['A1'], ls2))
def test_List_living_married_US30(self): from Individual import Individual from Family import Family ls1 = { 'A1': Individual('A1', 'NA', 'F', 'NA', 'NA', 'NA', 'NA', 'F1'), 'A2': Individual('A2', 'NA', 'M', 'NA', 'NA', 'NA', 'NA', 'F1'), } ls2 = { 'F1': Family('F1', husband='A1', wife='A2', marriage=formatDate('16 MAR 1990'), divorce='NA') } self.assertFalse(List_living_married_US30(ls1['A1'], ls2))
def test_parents_married_to_children(self): kid1 = Person() kid1.set_ID("@02@") kid1.spouse = "@01@" family = Family("@f1@") family.add_child(kid1) wife = Person() wife.spouse = "@02@" wife.set_ID("05") family.wife = wife husband = Person() husband.set_spouse("05") family.husband = husband self.assertTrue(family.parents_married_to_children())
def publish_rows(reader, tasks): current_family = None row_number = 0 for row in reader: person = person_from_row(row) if current_family is None: current_family = Family(person.familiy_id) if current_family.ID == person.familiy_id: current_family.add_person(person) else: tasks.put(current_family) current_family = Family(person.familiy_id) current_family.add_person(person) row_number += 1 if row_number % 10000 == 0: logger.info(row_number) tasks.put(current_family)
def test_children_married_to_each_other(self): kid1 = Person() kid1.id = "@02@" kid1.spouse = "@01@" kid2 = Person() kid2.id = "@01@" family = Family("@f1@") family.add_child(kid1) family.add_child(kid2) self.assertTrue(family.children_married_to_each_other()) kid1.spouse = "@05@" self.assertFalse(family.children_married_to_each_other())
def test_List_upcoming_anniversries_US39(self): from Individual import Individual from Family import Family list1 = { 'A1': Individual('A1', age='106'), 'A2': Individual('A1', age='39') } list2 = { 'B1': Family('B1', husband='A1', wife='A2', marriage='1960-12-03', divorce='NA') } self.assertFalse(List_upcoming_anniversries_US39(list2['B1']))
def test_kids_have_same_name(self): kid1 = Person() kid1.set_name("Joe") kid1.set_birthday("1 JAN 1923") kid2 = Person() kid2.set_name("Joe") kid2.set_birthday("1 JAN 1923") family = Family("id") family.add_child(kid1) family.add_child(kid2) self.assertFalse(family.kids_have_same_name()) kid2.name = "Bill" self.assertTrue(family.kids_have_same_name())
class GedcomTest(unittest.TestCase): def setUp(self): self.indi = Individual() self.indi.addID('@I2@') self.indi.addName('John Rivas') self.indi.addSex('M') self.indi.addBirt('9 MAY 1978') self.indi.addDeat('12 APR 2013') self.indi.addFams('@F2@') self.indi.addFamc('@F1@') self.fam1 = Family() self.fam1.addFamID('@F2@') self.fam1.addHusb('@I1@') self.fam1.addWife('@I2@') self.fam1.addChil('@I4@') self.fam1.addChil('@I5@') self.fam1.addMarr('5 OCT 1999') self.fam1.addDiv('12 JUN 2012') self.fam2 = Family() self.fam2.addFamID('@F3@') self.fam2.addHusb('@I3@') self.fam2.addWife('@I3@') def test_getID(self): ID = '@I2@' self.assertEqual(self.indi.getID(), ID) def test_getName(self): NAME = 'John Rivas' self.assertEqual(self.indi.getName(), NAME) def test_getSex(self): SEX = 'M' self.assertEqual(self.indi.getSex(), SEX) def test_getBirt(self): BIRT = '9 MAY 1978' self.assertEqual(self.indi.getBirt(), BIRT) def test_getDeat(self): DEAT = '12 APR 2013' self.assertEqual(self.indi.getDeat(), DEAT) def test_getFams(self): FAMS = '@F2@' self.assertEqual(self.indi.getFams(), FAMS) def test_getFamc(self): FAMC = '@F1@' self.assertEqual(self.indi.getFamc(), FAMC) def test_getFamID(self): FAMID = '@F2@' self.assertEqual(self.fam1.getFamID(), FAMID) def test_getHusb(self): HUSB = "@I1@" self.assertEqual(self.fam1.getHusb(), HUSB) def test_getWife(self): WIFE = "@I2@" self.assertEqual(self.fam1.getWife(), WIFE) def test_getChil(self): CHIL = ['@I4@', '@I5@'] self.assertEqual(self.fam1.getChil(), CHIL) def test_getMarr(self): MARR = '5 OCT 1999' self.assertEqual(self.fam1.getMarr(), MARR) def test_getDiv(self): DIV = '12 JUN 2012' self.assertEqual(self.fam1.getDiv(), DIV) def test_checkSameHusbWife(self): self.assertTrue(checkSameHusbWife(self.fam2))