def test_aanschrijfwijze_without_prefix(self): table_string = """ | aanduidingAanschrijving | samenstelling aanschrijfwijze | geslachtsnaam | voornamen | aanschrijfwijze | | E | VL GN | Groenen | Franklin | F. Groenen | | N | VL GN-GP | Groenen | Franka | F. Groenen-Groenink | | P | VL GP | Groenink | Johan Frank Robert | J.F.R. Groenen | | V | VL GP-GN | Groenlo | Franka | F. Groenen-Groenlo | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( aanduiding_aanschrijving, _, geslachtsnaam, voornamen, aanschrijfwijze, ) = row geslachtsnaam_partner = None if aanduiding_aanschrijving == "N": last_name = aanschrijfwijze.split(" ", 1)[-1] _, geslachtsnaam_partner = last_name.split("-") elif aanduiding_aanschrijving == "P": geslachtsnaam_partner = aanschrijfwijze.split(" ", 1)[-1] elif aanduiding_aanschrijving == "V": last_name = aanschrijfwijze.split(" ", 1)[-1] geslachtsnaam_partner, _ = last_name.split("-") with self.subTest(aanduiding_aanschrijving=aanduiding_aanschrijving): result = get_aanschrijfwijze( None, geslachtsnaam, voornamen, None, geslachtsnaam_partner, aanduiding_aanschrijving, None, None, None, ) self.assertEqual(aanschrijfwijze, result)
def test_aanschrijfwijze_with_prefix(self): table_string = """ | aanduidingAanschrijving | samenstelling aanschrijfwijze | voorvoegsel | geslachtsnaam | voornamen | voorvoegsel partner | geslachtsnaam partner | aanschrijfwijze | | E | VL VV GN | In het | Veld | Henk | van | Velzen | H. In het Veld | | N | VL VV GN-VP GP | van | Velzen | Ingrid | In het | Veld | I. van Velzen-In het Veld | | P | VL VP GP | In het | Veld | Suzanne | van | Velzen | S. van Velzen | | V | VL VP GP-VV GN | van | Velzen | Fred | In het | Veld | F. In het Veld-van Velzen | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( aanduiding_aanschrijving, _, voervoegsel, geslachtsnaam, voornamen, voervoegsel_partner, geslachtsnaam_partner, aanschrijfwijze, ) = row with self.subTest(aanduiding_aanschrijving=aanduiding_aanschrijving): result = get_aanschrijfwijze( voervoegsel, geslachtsnaam, voornamen, voervoegsel_partner, geslachtsnaam_partner, aanduiding_aanschrijving, None, None, None, ) self.assertEqual(aanschrijfwijze, result)
def test_aanschrijfwijze_person_and_partner_has_title(self): table_string = """ | aanduidingAanschrijving | samenstelling aanschrijfwijze | geslachtsnaam | voornamen | aanschrijfwijze | | E | VL AT VV GN | Aedel | Hendrik Willem | H.W. graaf van den Aedel | | N | VL AT VV GN-AP VP GP | Aedel | Wilhelmina | W. gravin van den Aedel-barones van Hoogh | | P | VL AP VP GP | Aedel | Frederique | F. barones van Hoogh | | V | VL AP VP GP-AT VV GN | Aedel | Emma Louise | E.L. barones van Hoogh-gravin van den Aedel | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( aanduiding_aanschrijving, _, geslachtsnaam, voornamen, aanschrijfwijze, ) = row last_name_prefix = None partner_last_name_prefix = None partner_last_name = None if aanduiding_aanschrijving == "E": last_name = aanschrijfwijze.split(" ", 1)[-1] split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) elif aanduiding_aanschrijving == "N": last_name = aanschrijfwijze.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_aanschrijving == "P": partner_last_name = aanschrijfwijze.split(" ", 1)[-1] split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_aanschrijving == "V": last_name = aanschrijfwijze.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest(aanduiding_aanschrijving=aanduiding_aanschrijving): result = get_aanschrijfwijze( last_name_prefix, geslachtsnaam, voornamen, partner_last_name_prefix, partner_last_name, aanduiding_aanschrijving, None, None, None, ) self.assertEqual(aanschrijfwijze, result)
def test_aanschrijfwijze_person_has_title_partner_does_not(self): table_string = """ | aanduidingAanschrijving | samenstelling aanschrijfwijze | geslachtsnaam | voornamen | aanschrijfwijze | | E | VL VV GN | Berg | Sjaak | S. van der Berg | | N | VL VV GN-VP GP | Berg | Peter | P. van der Berg-van Hoogh | | P | VL VP GP | Berg | Marlies | M. van Hoogh | | V | VL VP GP-VV GN | Berg | Fleur | F. van Hoogh-van der Berg | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( aanduiding_aanschrijving, _, geslachtsnaam, voornamen, aanschrijfwijze, ) = row last_name_prefix = None partner_last_name_prefix = None partner_last_name = None if aanduiding_aanschrijving == "E": last_name = aanschrijfwijze.split(" ", 1)[-1] split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) elif aanduiding_aanschrijving == "N": last_name = aanschrijfwijze.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_aanschrijving == "P": partner_last_name = aanschrijfwijze.split(" ", 1)[-1] split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_aanschrijving == "V": last_name = aanschrijfwijze.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest(aanduiding_aanschrijving=aanduiding_aanschrijving): result = get_aanschrijfwijze( last_name_prefix, geslachtsnaam, voornamen, partner_last_name_prefix, partner_last_name, aanduiding_aanschrijving, None, None, None, ) self.assertEqual(aanschrijfwijze, result)
def test_aanschrijfwijze_partner_has_title(self): table_string = """ | geslachtsaanduiding | geslachtsaanduiding partner | adellijkeTitel_predikaat partner | aanduidingAanschrijving | samenstelling aanschrijfwijze | geslachtsnaam | voornamen | aanschrijfwijze | | V | M | Baron | E | VL VV GN | Veen | Anna Cornelia | A.C. van der Veen | | V | M | Baron | N | VL VV GN-AP VP GP | Veen | Anna Cornelia | A.C. van der Veen-barones van den Aedel | | V | M | Baron | P | VL AP VP GP | Veen | Anna Cornelia | A.C. barones van den Aedel | | V | M | Baron | V | VL AP VP GP-VV GN | Veen | Anna Cornelia | A.C. barones van den Aedel-van der Veen | | V | M | Prins | E | VL VV GN | Veen | Anna Cornelia | A.C. van der Veen | | V | M | Prins | N | VL VV GN-AP VP GP | Veen | Anna Cornelia | A.C. van der Veen-prinses van den Aedel | | V | M | Prins | P | VL AP VP GP | Veen | Anna Cornelia | A.C. prinses van den Aedel | | V | M | Prins | V | VL AP VP GP-VV GN | Veen | Anna Cornelia | A.C. prinses van den Aedel-van der Veen | | M | V | Gravin | E | VL VV GN | Veen | Johannes | J. van der Veen | | M | V | Gravin | N | VL VV GN-VP GP | Veen | Johannes | J. van der Veen-van den Aedel | | M | V | Gravin | P | VL VP GP | Veen | Johannes | J. van den Aedel | | M | V | Gravin | V | VL VP GP-VV GN | Veen | Johannes | J. van den Aedel-van der Veen | | V | M | Ridder | E | VL VV GN | Veen | Marlies | M. van der Veen | | V | M | Ridder | N | VL VV GN-VP GP | Veen | Marlies | M. van der Veen-van den Aedel | | V | M | Ridder | P | VL VP GP | Veen | Marlies | M. van den Aedel | | V | M | Ridder | V | VL VP GP-VV GN | Veen | Marlies | M. van den Aedel-van der Veen | | V | V | Gravin | E | VL VV GN | Veen | Sarah | S. van der Veen | | V | V | Gravin | N | VL VV GN-VP GP | Veen | Sarah | S. van der Veen-van den Aedel | | V | V | Gravin | P | VL VP GP | Veen | Sarah | S. van den Aedel | | V | V | Gravin | V | VL VP GP-VV GN | Veen | Sarah | S. van den Aedel-van der Veen | | M | M | Baron | E | VL VV GN | Veen | Willem | W. van der Veen | | M | M | Baron | N | VL VV GN-VP GP | Veen | Willem | W. van der Veen-van den Aedel | | M | M | Baron | P | VL VP GP | Veen | Willem | W. van den Aedel | | M | M | Baron | V | VL VP GP-VV GN | Veen | Willem | W. van den Aedel-van der Veen | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( gender, partner_gender, partner_title, aanduiding_aanschrijving, _, last_name, first_name, aanschrijfwijze, ) = row name = aanschrijfwijze.replace("barones ", "") name = name.replace("prinses ", "") last_name = None last_name_prefix = None partner_last_name_prefix = None partner_last_name = None if aanduiding_aanschrijving == "E": last_name = name.split(" ", 1)[-1] if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] elif aanduiding_aanschrijving == "N": last_name = name.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_aanschrijving == "P": partner_last_name = name.split(" ", 1)[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_aanschrijving == "V": last_name = name.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest( partner_title=partner_title, aanduiding_aanschrijving=aanduiding_aanschrijving, ): result = get_aanschrijfwijze( last_name_prefix, last_name, first_name, partner_last_name_prefix, partner_last_name, aanduiding_aanschrijving, gender, None, partner_title, ) self.assertEqual(aanschrijfwijze, result)
def test_aanschrijfwijze_person_has_predicate_partner_does_not(self): table_string = """ | adellijkeTitel_predikaat | aanduidingNaamgebruik | aanschrijfwijze | | Jonkheer | Eigen | jonkheer T. van Hoogh | | Jonkvrouw | Eigen | jonkvrouw T. van Hoogh | | Jonkvrouw | Partner na eigen | jonkvrouw T. van Hoogh-in het Veld | | Jonkvrouw | Partner | T. in het Veld | | Jonkheer | Partner | T. in het Veld | | Jonkvrouw | Partner voor eigen | T. in het Veld-jonkvrouw van Hoogh | | Jonkheer | Partner na eigen | jonkheer T. van Hoogh-in het Veld | """ aanduiding_naamgebruik_to_enumeration = { "Eigen": "E", "Partner na eigen": "N", "Partner": "P", "Partner voor eigen": "V", } # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] voornamen = "Tom" # Example first name to use for row in table_rows: ( title, aanduiding_naamgebruik, aanschrijfwijze, ) = row name = aanschrijfwijze.replace("jonkheer ", "") name = name.replace("jonkvrouw ", "") last_name = None last_name_prefix = None partner_last_name_prefix = None partner_last_name = None if aanduiding_naamgebruik == "Eigen": last_name = name.split(" ", 1)[-1] if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] elif aanduiding_naamgebruik == "Partner na eigen": last_name = name.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner": partner_last_name = name.split(" ", 1)[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner voor eigen": last_name = name.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest( title=title, aanduiding_naamgebruik=aanduiding_naamgebruik ): result = get_aanschrijfwijze( last_name_prefix, last_name, voornamen, partner_last_name_prefix, partner_last_name, aanduiding_naamgebruik_to_enumeration[aanduiding_naamgebruik], None, title, None, ) self.assertEqual(aanschrijfwijze, result)