From 82805d4bb2fff0e27c8f037bb5ebacf9d89d2b2c Mon Sep 17 00:00:00 2001 From: JoseNavy <72418396+JoseNavy@users.noreply.github.com> Date: Thu, 7 Jan 2021 08:23:11 -0700 Subject: [PATCH] da_DK address provider (#1353) * Add dk_DK address provider * Add tests for adress provider dk_DK * Modified tests and changed source for postcodes * Fix capitalization error * Fix locale code from dk_DK to da_DK --- faker/providers/address/da_DK/__init__.py | 107 ++++++++++++++++++++++ tests/providers/test_address.py | 29 ++++++ 2 files changed, 136 insertions(+) create mode 100644 faker/providers/address/da_DK/__init__.py diff --git a/faker/providers/address/da_DK/__init__.py b/faker/providers/address/da_DK/__init__.py new file mode 100644 index 0000000000..593a3ef3d6 --- /dev/null +++ b/faker/providers/address/da_DK/__init__.py @@ -0,0 +1,107 @@ +from .. import Provider as AddressProvider + + +class Provider(AddressProvider): + + # Building numbers dont go higher than a 1000 + building_number_formats = ('%##', '%#', '%') + + street_name_formats = ('{{street_prefix}} {{street_suffix}}', ) + + street_address_formats = ('{{street_name}} {{building_number}}',) + + street_prefixes = ( + 'Gade', 'Allé', 'Parkere', 'Baggade', 'Gyde', 'Motorvej', + ) + + street_suffixes = ( + 'Åbenrå', 'Adelgade', 'Lavendelstræde', 'Nygade', 'Pilestræde', + 'Rigensgade', 'Silkegade', 'Toldbodgade', 'Blekingegade', + 'Amalievej', 'Bülowsvej', 'Godthåbsvej', 'Howitzvej', + 'Kingosgade', 'Martinsvej', 'Rolighedsvej', 'Schønbergsgade', + 'Åboulevard', 'Ewaldsgade', 'Heinesgade', 'Kapelvej', + ) + + address_formats = ("{{street_address}}\n{{postcode}} {{city}}", ) + + # Postcode should be formatted as described in http://www.nr.dk/danmark.html + postcode_formats = ('%###', ) + + city_formats = ('{{city_name}}', ) + + cities = ( + 'Copenhagen', 'Aarhus', 'Odense', 'Aalborg', 'Esbjerg', 'Randers', + 'Kolding', 'Horsens', 'Vejle', 'Roskilde', 'Herning', 'Hørsholm', + 'Elsinore', 'Silkeborg', 'Næstved', 'Fredericia', 'Viborg', 'Køge', + 'Holstebro', 'Taastrup', 'Slagelse', 'Hillerød', 'Holbæk', 'Sønderborg', + 'Svendborg', 'Hjørring', 'Frederikshavn', 'Nørresundby', 'Ringsted', + 'Haderslev', 'Stenløse', 'Skive', 'Birkerød', 'Farum', 'Smørumnedre', + 'Skanderborg', 'Nyborg', 'Nykøbing F', 'Lillerød', 'Kalundborg', + 'Frederikssund', 'Aabenraa', 'Solrød Strand', 'Ikast', 'Middelfart', + 'Grenaa', 'Korsør', 'Varde', 'Rønne', 'Thisted', + ) + + countries = ( + 'Afghanistan', 'Albanien', 'Algeriet', 'Amerikanska Samoa', 'Andorra', + 'Angola', 'Anguilla', 'Antarktis', 'Antigua och Barbuda', 'Argentina', + 'Armenien', 'Aruba', 'Ascension', 'Australien', 'Azerbajdzjan', + 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgien', + 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnien och Hercegovina', + 'Botswana', 'Brasilien', 'Brittiska Jungfruöarna', 'Brunei', + 'Bulgarien', 'Burkina Faso', 'Burma', 'Burundi', 'Caymanöarna', + 'Centralafrikanska republiken', 'Chile', 'Colombia', 'Cooköarna', + 'Costa Rica', 'Cypern', 'Danmark', 'Diego Garcia', 'Djibouti', + 'Dominica', 'Dominikanska republiken', 'Ecuador', 'Egypten', + 'Ekvatorialguinea', 'Elfenbenskusten', 'El Salvador', 'Eritrea', + 'Estland', 'Etiopien', 'England', 'Falklandsöarna', 'Fiji', + 'Filippinerna', 'Finland', 'Frankrike', 'Franska Guyana', + 'Franska Polynesien', 'Färöarna', 'Förenade Arabemiraten', 'Gabon', + 'Gambia', 'Georgien', 'Ghana', 'Gibraltar', 'Grekland', 'Grenada', + 'Grönland', 'Guadeloupe', 'Guatemala', 'Guinea', 'Guinea-Bissau', + 'Guyana', 'Haiti', 'Honduras', 'Hongkong', 'Indien', 'Indonesien', + 'Irak', 'Iran', 'Irland', 'Island', 'Israel', 'Italien', 'Jamaica', + 'Japan', 'Jemen', 'Jordanien', 'Kambodja', 'Kamerun', 'Kanada', + 'Kap Verde', 'Kazakstan', 'Kenya', 'Kina', 'Kirgizistan', 'Kiribati', + 'Komorerna', 'Kongo-Brazzaville', 'Kongo-Kinshasa', 'Kosovo', + 'Kroatien', 'Kuba', 'Kuwait', 'Laos', 'Lesotho', 'Lettland', 'Libanon', + 'Liberia', 'Libyen', 'Liechtenstein', 'Litauen', 'Luxemburg', 'Macao', + 'Madagaskar', 'Makedonien', 'Malawi', 'Malaysia', 'Maldiverna', 'Mali', + 'Malta', 'Marianerna', 'Marocko', 'Marshallöarna', 'Martinique', + 'Mauretanien', 'Mauritius', 'Mayotte', 'Mexiko', 'Midwayöarna', + 'Mikronesiens federerade stater', 'Moçambique', 'Moldavien', 'Monaco', + 'Mongoliet', 'Montenegro', 'Montserrat', 'Namibia', 'Nauru', + 'Nederländerna', 'Nederländska Antillerna', 'Nepal', + 'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Nordkorea', 'Nordmarianerna', + 'Norfolkön', 'Norge', 'Nya Kaledonien', 'Nya Zeeland', 'Oman', + 'Pakistan', 'Palau', 'Palestina', 'Panama', 'Papua Nya Guinea', + 'Paraguay', 'Peru', 'Pitcairnöarna', 'Polen', 'Portugal', 'Qatar', + 'Réunion', 'Rumänien', 'Rwanda', 'Ryssland', 'Saint Kitts och Nevis', + 'Saint Lucia', 'Saint-Pierre och Miquelon', + 'Saint Vincent och Grenadinerna', 'Salomonöarna', 'Samoa', + 'Sankta Helena', 'San Marino', 'São Tomé och Príncipe', + 'Saudiarabien', 'Schweiz', 'Senegal', 'Serbien', 'Seychellerna', + 'SierraLeone', 'Singapore', 'Sint Maarten', 'Slovakien', 'Slovenien', + 'Somalia', 'Spanien', 'Sri Lanka', 'Storbritannien', 'Sudan', + 'Surinam', 'Sverige', 'Swaziland', 'Sydafrika', 'Sydkorea', 'Sydsudan', + 'Syrien', 'Tadzjikistan', 'Taiwan', 'Tanzania', 'Tchad', 'Thailand', + 'Tjeckien', 'Togo', 'Tokelauöarna', 'Tonga', 'Trinidad och Tobago', + 'Tunisien', 'Turkiet', 'Turkmenistan', 'Turks-och Caicosöarna', + 'Tuvalu', 'Tyskland', 'Uganda', 'Ukraina', 'Ungern', 'Uruguay', 'USA', + 'Uzbekistan', 'Vanuatu', 'Vatikanstaten', 'Venezuela', 'Vietnam', + 'Wake', 'Wallis-och Futunaöarna', 'Zambia', 'Zimbabwe', + 'Österrike', 'Östtimor', + ) + + # Known as regions in Denmark + states = ( + 'Hovedstaden', 'Midtjylland', 'Nordjylland', 'Sjælland', 'Syddanmark', + ) + + def street_prefix(self): + return self.random_element(self.street_prefixes) + + def city_name(self): + return self.random_element(self.cities) + + def state(self): + return self.random_element(self.states) diff --git a/tests/providers/test_address.py b/tests/providers/test_address.py index 106e6c2d16..15bbcde399 100644 --- a/tests/providers/test_address.py +++ b/tests/providers/test_address.py @@ -7,6 +7,7 @@ from ukpostcodeparser.parser import parse_uk_postcode from faker.providers.address.cs_CZ import Provider as CsCzAddressProvider +from faker.providers.address.da_DK import Provider as DaDkAddressProvider from faker.providers.address.de_AT import Provider as DeAtAddressProvider from faker.providers.address.de_DE import Provider as DeDeAddressProvider from faker.providers.address.el_GR import Provider as ElGrAddressProvider @@ -111,6 +112,34 @@ def test_city_with_postcode(self, faker, num_samples): assert match.group('city') in CsCzAddressProvider.cities +class TestDaDk: + """Test dk_DK address provider methods""" + + def test_street_prefix(self, faker, num_samples): + for _ in range(num_samples): + street_prefix = faker.street_prefix() + assert isinstance(street_prefix, str) + assert street_prefix in DaDkAddressProvider.street_prefixes + + def test_city_name(self, faker, num_samples): + for _ in range(num_samples): + city = faker.city_name() + assert isinstance(city, str) + assert city in DaDkAddressProvider.cities + + def test_state(self, faker, num_samples): + for _ in range(num_samples): + state = faker.state() + assert isinstance(state, str) + assert state in DaDkAddressProvider.states + + def test_postcode(self, faker, num_samples): + for _ in range(num_samples): + postcode = faker.postcode() + assert isinstance(postcode, str) + assert re.fullmatch(r"\d{4}", postcode) + + class TestDeAt: """Test de_AT address provider methods"""