Exemple #1
0
    def test_list_multiple_births(self):
        print('US32: Testing listing multiple births...')

        valiParsedFile = {
            'family': {
                '@F6000000089090979889@': {
                    'Children': {
                        '@I6000000089090979883@', '@I6000000089090979871@',
                        '@I6000000089090979874@', '@I6000000089090979891@',
                        '@I6000000089090979877@'
                    },
                    'Married': '4 JUL 1990',
                    'Spouse 1': '@I6000000089090867827@',
                    'Spouse 2': '@I6000000089090979886@',
                    'Spouse 1 Name': 'Brian',
                    'Spouse 2 Name': 'Jane Lancing /Smith/',
                    'Divorced': 'NA'
                }
            },
            'members': {
                '@I6000000089090867827@': {
                    'ID': '@I6000000089090867827@',
                    'Child': 'NA',
                    'Spouse':
                    {'@F6000000089090867863@', '@F6000000089090979889@'},
                    'Name': 'Brian',
                    'Gender': 'M',
                    'Birthday': '21 SEP 1756',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 262
                },
                '@I6000000089090979886@': {
                    'ID': '@I6000000089090979886@',
                    'Child': 'NA',
                    'Spouse': {'@F6000000089090979889@'},
                    'Name': 'Jane Lancing /Smith/',
                    'Gender': 'F',
                    'Birthday': '12 APR 1959',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 59
                },
                '@I6000000089090979891@': {
                    'ID': '@I6000000089090979891@',
                    'Child': {'@F6000000089090979889@'},
                    'Spouse': 'NA',
                    'Name': 'Jason /Smith/',
                    'Gender': 'M',
                    'Birthday': '15 AUG 1990',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 28
                },
                '@I6000000089090979871@': {
                    'ID': '@I6000000089090979871@',
                    'Child': {'@F6000000089090979889@'},
                    'Spouse': 'NA',
                    'Name': 'Jackson /Smith/',
                    'Gender': 'M',
                    'Birthday': '15 AUG 1990',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 28
                },
                '@I6000000089090979877@': {
                    'ID': '@I6000000089090979877@',
                    'Child': {'@F6000000089090979889@'},
                    'Spouse': 'NA',
                    'Name': 'Jasmine /Smith/',
                    'Gender': 'F',
                    'Birthday': '15 AUG 1990',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 28
                },
                '@I6000000089090979874@': {
                    'ID': '@I6000000089090979874@',
                    'Child': {'@F6000000089090979889@'},
                    'Spouse': 'NA',
                    'Name': 'Jamie /Smith/',
                    'Gender': 'F',
                    'Birthday': '15 AUG 1990',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 28
                },
                '@I6000000089090979883@': {
                    'ID': '@I6000000089090979883@',
                    'Child': {'@F6000000089090979889@'},
                    'Spouse': 'NA',
                    'Name': 'Joel /Smith/',
                    'Gender': 'M',
                    'Birthday': '15 AUG 1990',
                    'Death': 'NA',
                    'Alive?': 'Y',
                    'Age': 28
                }
            }
        }

        expectedMultipleList = [{
            'Birthday': '15 AUG 1990',
            'ID': '@I6000000089090979871@',
            'Name': 'Jackson /Smith/'
        }, {
            'Birthday': '15 AUG 1990',
            'ID': '@I6000000089090979891@',
            'Name': 'Jason /Smith/'
        }, {
            'Birthday': '15 AUG 1990',
            'ID': '@I6000000089090979877@',
            'Name': 'Jasmine /Smith/'
        }, {
            'Birthday': '15 AUG 1990',
            'ID': '@I6000000089090979874@',
            'Name': 'Jamie /Smith/'
        }, {
            'Birthday': '15 AUG 1990',
            'ID': '@I6000000089090979883@',
            'Name': 'Joel /Smith/'
        }]

        valiParsedFile = FamilyValidation.list_multiple_births(valiParsedFile)

        multiplesList = valiParsedFile['multiples']['@F6000000089090979889@']

        self.assertEqual(len(expectedMultipleList),
                         len(multiplesList),
                         msg='Error: multiples lists sizes do not match')
Exemple #2
0
def pretty_table(parsed_file_dict):
    # Set up PrettyTable

    # List individuals: US27 include ages
    individuals = PrettyTable()
    individuals.field_names = [
        'ID', 'Name', 'Gender', 'Birthday', 'Age', 'Alive?', 'Death', 'Child',
        'Spouse'
    ]

    print('== Individuals ==')
    for k in parsed_file_dict['members'].keys():
        individuals.add_row([
            parsed_file_dict['members'][k]['ID'],
            parsed_file_dict['members'][k]['Name'],
            parsed_file_dict['members'][k]['Gender'],
            parsed_file_dict['members'][k]['Birthday'],
            parsed_file_dict['members'][k]['Age'],
            parsed_file_dict['members'][k]['Alive?'],
            parsed_file_dict['members'][k]['Death'],
            parsed_file_dict['members'][k]['Child'],
            parsed_file_dict['members'][k]['Spouse']
        ])
    print(individuals)

    # List Families
    family = PrettyTable()
    family.field_names = [
        'ID', 'Married', 'Divorced', 'Spouse 1 ID', 'Spouse 1 Name',
        'Spouse 2 ID', 'Spouse 2 Name', 'Children'
    ]

    print('\n== Families ==')
    for k in parsed_file_dict['family'].keys():
        family.add_row([
            k, parsed_file_dict['family'][k]['Married'],
            parsed_file_dict['family'][k]['Divorced'],
            parsed_file_dict['family'][k]['Spouse 1'],
            parsed_file_dict['family'][k]['Spouse 1 Name'],
            parsed_file_dict['family'][k]['Spouse 2'],
            parsed_file_dict['family'][k]['Spouse 2 Name'],
            parsed_file_dict['family'][k]['Children']
        ])

    print(family)

    # US28 - List siblings by age
    parsed_file_dict = FamilyValidation.order_siblings_by_age(parsed_file_dict)

    siblings = PrettyTable()
    siblings.field_names = [
        'Family ID', 'Individual ID', 'Name', 'Birthday', 'Age'
    ]

    print('\nUS28')
    print('== Siblings ==')
    for k in parsed_file_dict['siblings'].keys():
        for sibling in parsed_file_dict['siblings'][k]:
            siblings.add_row([
                k, sibling['ID'], sibling['Name'], sibling['Birthday'],
                sibling['Age']
            ])

        siblings.add_row(['--', '--', '--', '--', '--'])
    print(siblings)

    # US32 - List multiple births
    parsed_file_dict = FamilyValidation.list_multiple_births(parsed_file_dict)

    multiples = PrettyTable()
    multiples.field_names = ['Family ID', 'Birthday', 'Individual ID', 'Name']

    print('\nUS32')
    print('== Multiple Births ==')
    for k in parsed_file_dict['multiples'].keys():
        for person in parsed_file_dict['multiples'][k]:
            multiples.add_row(
                [k, person['Birthday'], person['ID'], person['Name']])

        multiples.add_row(['--', '--', '--', '--'])

    print(multiples)

    # US 30 & 31 - List living married & List living single
    marital_status = LivingMaritalStatus.list_living_married(parsed_file_dict)

    married = PrettyTable()
    married.field_names = ['Individual ID', 'Name']

    singles = PrettyTable()
    singles.field_names = ['Individual ID', 'Name']

    print('\nUS 30')
    print('== Living Married ==')
    for k in marital_status['married'].keys():
        married.add_row([
            marital_status['married'][k]['ID'],
            marital_status['married'][k]['Name']
        ])

    print(married)

    print('\nUS 31')
    print('== Living Single ==')
    for k in marital_status['singles'].keys():
        singles.add_row([
            marital_status['singles'][k]['ID'],
            marital_status['singles'][k]['Name']
        ])

    print(singles)
    print('\n')

    #US29 - List all deseased individuals
    parsed_file_dict = DeseasedIndividuals.list_deseased_individuals(
        parsed_file_dict)

    deseased = PrettyTable()
    deseased.field_names = ['ID', 'Name', 'Birthday', 'Death Date', 'Age']

    print('US29')
    print('== Deseased Individuals ==')

    for key in parsed_file_dict['deseased'].keys():
        deseased.add_row([
            key, parsed_file_dict['deseased'][key]['Name'],
            parsed_file_dict['deseased'][key]['Birthday'],
            parsed_file_dict['deseased'][key]['Death'],
            parsed_file_dict['deseased'][key]['Age']
        ])

    print(deseased)
    print('\n')