Skip to content

Commit

Permalink
da_DK address provider (#1353)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
JoseNavy committed Jan 7, 2021
1 parent 00dde88 commit 229b0e1
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 0 deletions.
107 changes: 107 additions & 0 deletions 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)
29 changes: 29 additions & 0 deletions tests/providers/test_address.py
Expand Up @@ -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
Expand Down Expand Up @@ -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"""

Expand Down

0 comments on commit 229b0e1

Please sign in to comment.