From 442527731df1afddab73156a70a779f29f5982be Mon Sep 17 00:00:00 2001 From: Romain CLEMENT Date: Sun, 1 Oct 2023 23:57:00 +0200 Subject: [PATCH] feature/location-france (#169) * Added french cities Created a list containing the 1,000 most populous cities, ordered by name * Added french street prefixes * Added french street suffixes * Added french address format Based on faker-js * Added france to maps * Added tests --- src/modules/location/Location.cpp | 24 +- src/modules/location/LocationTest.cpp | 76 ++ .../data/france/FranceAddressFormat.h | 18 + .../location/data/france/FranceCities.h | 1008 +++++++++++++++++ .../data/france/FranceStreetPrefixes.h | 10 + .../data/france/FranceStreetSuffixes.h | 20 + 6 files changed, 1150 insertions(+), 6 deletions(-) create mode 100644 src/modules/location/data/france/FranceAddressFormat.h create mode 100644 src/modules/location/data/france/FranceCities.h create mode 100644 src/modules/location/data/france/FranceStreetPrefixes.h create mode 100644 src/modules/location/data/france/FranceStreetSuffixes.h diff --git a/src/modules/location/Location.cpp b/src/modules/location/Location.cpp index c0d43e42e..77a8df6fc 100644 --- a/src/modules/location/Location.cpp +++ b/src/modules/location/Location.cpp @@ -13,6 +13,10 @@ #include "data/poland/PolandCities.h" #include "data/poland/PolandStreetNames.h" #include "data/poland/PolandStreetPrefixes.h" +#include "data/france/FranceAddressFormat.h" +#include "data/france/FranceCities.h" +#include "data/france/FranceStreetPrefixes.h" +#include "data/france/FranceStreetSuffixes.h" #include "data/States.h" #include "data/TimeZones.h" #include "data/usa/UsaAddressFormat.h" @@ -29,7 +33,8 @@ namespace const std::map> countryToCitiesMapping{ {Country::Usa, usaCities}, {Country::Russia, russiaCities}, - {Country::Poland, polandCities} + {Country::Poland, polandCities}, + {Country::France, franceCities} }; const std::map> countryToStreetsMapping{ @@ -39,38 +44,45 @@ const std::map> countryToStreetsMapping{ const std::map countryToZipCodeFormatMapping{ {Country::Usa, usaZipCodeFormat}, {Country::Russia, russiaZipCodeFormat}, - {Country::Poland, polandZipCodeFormat} + {Country::Poland, polandZipCodeFormat}, + {Country::France, franceZipCodeFormat} }; const std::map> countryToBuildingNumberFormatsMapping{ {Country::Usa, usaBuildingNumberFormats}, {Country::Russia, russiaBuildingNumberFormats}, - {Country::Poland, polandBuildingNumberFormats} + {Country::Poland, polandBuildingNumberFormats}, + {Country::France, franceBuildingNumberFormats} }; const std::map> countryToStreetFormatsMapping{ {Country::Usa, usaStreetFormats}, {Country::Russia, russiaStreetFormats}, - {Country::Poland, polandStreetFormats} + {Country::Poland, polandStreetFormats}, + {Country::France, franceStreetFormats} }; const std::map> countryToSecondaryAddressFormatsMapping{ {Country::Usa, usaSecondaryAddressFormats}, + {Country::France, franceSecondaryAddressFormats} }; const std::map countryToAddressFormatMapping{ {Country::Usa, usaAddressFormat}, {Country::Russia, russiaAddressFormat}, - {Country::Poland, polandAddressFormat} + {Country::Poland, polandAddressFormat}, + {Country::France, franceAddressFormat} }; const std::map> countryToStreetSuffixesMapping{ {Country::Usa, usaStreetSuffixes}, + {Country::France, franceStreetSuffixes} }; const std::map> countryToStreetPrefixesMapping{ {Country::Russia, russiaStreetPrefixes}, - {Country::Poland, polandStreetPrefixes} + {Country::Poland, polandStreetPrefixes}, + {Country::France, franceStreetPrefixes} }; } diff --git a/src/modules/location/LocationTest.cpp b/src/modules/location/LocationTest.cpp index f89ba3764..ad3cf2b82 100644 --- a/src/modules/location/LocationTest.cpp +++ b/src/modules/location/LocationTest.cpp @@ -21,6 +21,9 @@ #include "data/TimeZones.h" #include "data/usa/UsaCities.h" #include "data/usa/UsaStreetSuffixes.h" +#include "data/france/FranceCities.h" +#include "data/france/FranceStreetPrefixes.h" +#include "data/france/FranceStreetSuffixes.h" using namespace ::testing; using namespace faker; @@ -229,6 +232,79 @@ TEST_F(LocationTest, shouldGeneratePolandStreetAddress) { return street == generatedStreetName; })); } +TEST_F(LocationTest, shouldGenerateFranceCity) +{ + const auto generatedCity = Location::city(Country::France); + + ASSERT_TRUE( + std::ranges::any_of(franceCities, [generatedCity](const std::string& city) { return city == generatedCity; })); +} + +TEST_F(LocationTest, shouldGenerateFranceZipCode) +{ + const auto generatedZipCode = Location::zipCode(Country::France); + + ASSERT_EQ(generatedZipCode.size(), 5); + ASSERT_TRUE(checkIfAllCharactersAreNumeric(generatedZipCode)); +} + +TEST_F(LocationTest, shouldGenerateFranceBuildingNumber) +{ + const auto generatedBuildingNumber = Location::buildingNumber(Country::France); + + ASSERT_TRUE(generatedBuildingNumber.size() >= 1 && generatedBuildingNumber.size() <= 4); + ASSERT_TRUE(checkIfAllCharactersAreNumeric(generatedBuildingNumber)); +} + +TEST_F(LocationTest, shouldGenerateFranceSecondaryAddress) +{ + const auto generatedSecondaryAddress = Location::secondaryAddress(Country::France); + + ASSERT_TRUE(generatedSecondaryAddress.starts_with("Apt. ") || generatedSecondaryAddress.starts_with("Étage ")); + + const auto generatedSecondaryAddressParts = StringHelper::split(generatedSecondaryAddress, " "); + + const auto& generatedBuildingNumber = generatedSecondaryAddressParts[1]; + + ASSERT_TRUE(generatedBuildingNumber.size() == 3 || generatedBuildingNumber.size() == 1); + ASSERT_TRUE(checkIfAllCharactersAreNumeric(generatedBuildingNumber)); +} + +TEST_F(LocationTest, shouldGenerateFranceStreet) +{ + const auto generatedStreet = Location::street(Country::France); + + const auto generatedStreetElements = StringHelper::split(generatedStreet, " "); + + const auto& generatedStreetPrefix = generatedStreetElements[0]; + const auto& generatedStreetSuffix = StringHelper::join({generatedStreetElements.begin()+1, generatedStreetElements.end()}); + + ASSERT_GE(generatedStreetElements.size(), 2); + ASSERT_TRUE(std::ranges::any_of(franceStreetPrefixes, [generatedStreetPrefix](const std::string& streetPrefix) + { return streetPrefix == generatedStreetPrefix; })); + ASSERT_TRUE(std::ranges::any_of(franceStreetSuffixes, [generatedStreetSuffix](const std::string& streetSuffix) + { return streetSuffix == generatedStreetSuffix; })); +} + +TEST_F(LocationTest, shouldGenerateFranceStreetAddress) +{ + const auto generatedStreetAddress = Location::streetAddress(Country::France); + + const auto generatedStreetAddressElements = StringHelper::split(generatedStreetAddress, " "); + + const auto& generatedBuildingNumber = generatedStreetAddressElements[0]; + const auto& generatedStreetPrefix = generatedStreetAddressElements[1]; + const auto& generatedStreetSuffix = StringHelper::join({generatedStreetAddressElements.begin()+2, generatedStreetAddressElements.end()}); + + ASSERT_GE(generatedStreetAddressElements.size(), 3); + ASSERT_TRUE(generatedBuildingNumber.size() >= 1 && generatedBuildingNumber.size() <= 4); + ASSERT_TRUE(checkIfAllCharactersAreNumeric(generatedBuildingNumber)); + ASSERT_TRUE(std::ranges::any_of(franceStreetPrefixes, [generatedStreetPrefix](const std::string& streetPrefix) + { return streetPrefix == generatedStreetPrefix; })); + ASSERT_TRUE(std::ranges::any_of(franceStreetSuffixes, [generatedStreetSuffix](const std::string& streetSuffix) + { return streetSuffix == generatedStreetSuffix; })); +} + TEST_F(LocationTest, shouldGenerateLatitude) { const auto latitude = Location::latitude(); diff --git a/src/modules/location/data/france/FranceAddressFormat.h b/src/modules/location/data/france/FranceAddressFormat.h new file mode 100644 index 000000000..cd49b61ba --- /dev/null +++ b/src/modules/location/data/france/FranceAddressFormat.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::string franceAddressFormat = "{buildingNumber} {street}"; + +const std::vector franceBuildingNumberFormats = {"####", "###", "##", "#"}; + +const std::string franceZipCodeFormat = "#####"; + +const std::vector franceSecondaryAddressFormats = {"Apt. ###", "Étage #"}; + +const std::vector franceStreetFormats = {"{streetPrefix} {streetSuffix}"}; + +} diff --git a/src/modules/location/data/france/FranceCities.h b/src/modules/location/data/france/FranceCities.h new file mode 100644 index 000000000..3c6b3055f --- /dev/null +++ b/src/modules/location/data/france/FranceCities.h @@ -0,0 +1,1008 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector franceCities = {"Abbeville", + "Achères", + "Agde", + "Agen", + "Aix-en-Provence", + "Aix-les-Bains", + "Ajaccio", + "Albertville", + "Albi", + "Alençon", + "Alès", + "Alfortville", + "Allauch", + "Allonnes", + "Ambarès-et-Lagrave", + "Ambérieu-en-Bugey", + "Amboise", + "Amiens", + "Amilly", + "Amnéville", + "Ancenis-Saint-Géréon", + "Andernos-les-Bains", + "Andrésy", + "Angers", + "Anglet", + "Angoulême", + "Annecy", + "Annemasse", + "Annœullin", + "Annonay", + "Antibes", + "Antony", + "Anzin", + "Apt", + "Arcachon", + "Arcueil", + "Argelès-sur-Mer", + "Argentan", + "Argenteuil", + "Arles", + "Armentières", + "Arnouville", + "Arpajon", + "Arras", + "Asnières-sur-Seine", + "Athis-Mons", + "Aubagne", + "Aubenas", + "Aubergenville", + "Aubervilliers", + "Aubière", + "Auch", + "Audincourt", + "Aulnay-sous-Bois", + "Auray", + "Aurillac", + "Auriol", + "Autun", + "Auxerre", + "Avignon", + "Avion", + "Avon", + "Avranches", + "Avrillé", + "Bagneux", + "Bagnolet", + "Bagnols-sur-Cèze", + "Baie-Mahault", + "Bailleul", + "Balma", + "Bandraboua", + "Bandrele", + "Bar-le-Duc", + "Barentin", + "Bastia", + "Baugé-en-Anjou", + "Bayeux", + "Bayonne", + "Beaucaire", + "Beaumont", + "Beaune", + "Beaupréau-en-Mauges", + "Beausoleil", + "Beauvais", + "Bègles", + "Belfort", + "Belleville-en-Beaujolais", + "Berck", + "Bergerac", + "Berre-l'Étang", + "Besançon", + "Béthune", + "Betton", + "Béziers", + "Bezons", + "Biarritz", + "Biganos", + "Billère", + "Biscarrosse", + "Bischheim", + "Bischwiller", + "Blagnac", + "Blanquefort", + "Blois", + "Bobigny", + "Bois-Colombes", + "Bois-Guillaume", + "Bois-d'Arcy", + "Boissy-Saint-Léger", + "Bolbec", + "Bollène", + "Bondoufle", + "Bondy", + "Bonneuil-sur-Marne", + "Bonneville", + "Bora-Bora", + "Bordeaux", + "Bouc-Bel-Air", + "Bouguenais", + "Boulazac Isle Manoire", + "Boulogne-Billancourt", + "Boulogne-sur-Mer", + "Bourg-en-Bresse", + "Bourg-la-Reine", + "Bourg-lès-Valence", + "Bourges", + "Bourgoin-Jallieu", + "Bras-Panon", + "Bressuire", + "Brest", + "Brétigny-sur-Orge", + "Briançon", + "Brie-Comte-Robert", + "Brignais", + "Brignoles", + "Brissac Loire Aubance", + "Brive-la-Gaillarde", + "Bron", + "Bruay-la-Buissière", + "Bruay-sur-l'Escaut", + "Bruges", + "Brunoy", + "Bruz", + "Bry-sur-Marne", + "Bully-les-Mines", + "Bussy-Saint-Georges", + "Cabestany", + "Cachan", + "Caen", + "Cagnes-sur-Mer", + "Cahors", + "Calais", + "Caluire-et-Cuire", + "Cambrai", + "Canet-en-Roussillon", + "Cannes", + "Canteleu", + "Capesterre-Belle-Eau", + "Carcassonne", + "Carpentras", + "Carquefou", + "Carrières-sous-Poissy", + "Carrières-sur-Seine", + "Carros", + "Carvin", + "Castanet-Tolosan", + "Castelginest", + "Castelnau-le-Lez", + "Castelnaudary", + "Castelsarrasin", + "Castres", + "Caudry", + "Cavaillon", + "Cayenne", + "Cenon", + "Cergy", + "Cernay", + "Cesson", + "Cesson-Sévigné", + "Cestas", + "Châlette-sur-Loing", + "Challans", + "Chalon-sur-Saône", + "Châlons-en-Champagne", + "Chamalières", + "Chambéry", + "Chambray-lès-Tours", + "Champigny-sur-Marne", + "Champs-sur-Marne", + "Chanteloup-les-Vignes", + "Chantilly", + "Charenton-le-Pont", + "Charleville-Mézières", + "Chartres", + "Chassieu", + "Château-Gontier-sur-Mayenne", + "Château-Thierry", + "Châteaubriant", + "Châteaudun", + "Châteaugiron", + "Châteauneuf-les-Martigues", + "Châteaurenard", + "Châteauroux", + "Châtellerault", + "Châtenay-Malabry", + "Châtillon", + "Chatou", + "Chaumont", + "Chauny", + "Chaville", + "Chelles", + "Chemillé-en-Anjou", + "Chennevières-sur-Marne", + "Chenôve", + "Cherbourg-en-Cotentin", + "Chevigny-Saint-Sauveur", + "Chevilly-Larue", + "Chilly-Mazarin", + "Choisy-le-Roi", + "Cholet", + "Clamart", + "Claye-Souilly", + "Clermont-Ferrand", + "Clichy", + "Clichy-sous-Bois", + "Cluses", + "Cognac", + "Cogolin", + "Colmar", + "Colombes", + "Colomiers", + "Combs-la-Ville", + "Comines", + "Compiègne", + "Concarneau", + "Conflans-Sainte-Honorine", + "Corbas", + "Corbeil-Essonnes", + "Cormeilles-en-Parisis", + "Coudekerque-Branche", + "Couëron", + "Coulommiers", + "Courbevoie", + "Cournon-d'Auvergne", + "Courrières", + "Craponne", + "Creil", + "Crépy-en-Valois", + "Créteil", + "Creutzwald", + "Croissy-sur-Seine", + "Croix", + "Cuers", + "Cugnaux", + "Cusset", + "Dammarie-les-Lys", + "Dammartin-en-Goële", + "Dax", + "Décines-Charpieu", + "Dembeni", + "Denain", + "Deuil-la-Barre", + "Déville-lès-Rouen", + "Dieppe", + "Digne-les-Bains", + "Dijon", + "Dinan", + "Dole", + "Domont", + "Douai", + "Douarnenez", + "Doué-en-Anjou", + "Dourdan", + "Draguignan", + "Drancy", + "Draveil", + "Dreux", + "Ducos", + "Dugny", + "Dumbéa", + "Dunkerque", + "Dzaoudzi", + "Eaubonne", + "Échirolles", + "Écully", + "Élancourt", + "Elbeuf", + "Enghien-les-Bains", + "Épernay", + "Épinal", + "Épinay-sous-Sénart", + "Épinay-sur-Orge", + "Épinay-sur-Seine", + "Éragny", + "Ermont", + "Erstein", + "Étampes", + "Étaples", + "Évreux", + "Évry-Courcouronnes", + "Eysines", + "Faaa", + "Faches-Thumesnil", + "Fameck", + "Fécamp", + "Ferney-Voltaire", + "Firminy", + "Flers", + "Fleury-Mérogis", + "Fleury-les-Aubrais", + "Floirac", + "Florange", + "Fondettes", + "Fonsorbes", + "Fontaine", + "Fontainebleau", + "Fontenay-aux-Roses", + "Fontenay-le-Comte", + "Fontenay-le-Fleury", + "Fontenay-sous-Bois", + "Forbach", + "Fort-de-France", + "Fos-sur-Mer", + "Fougères", + "Fourmies", + "Francheville", + "Franconville", + "Fréjus", + "Fresnes", + "Freyming-Merlebach", + "Frontignan", + "Gagny", + "Gaillac", + "Gaillard", + "Gap", + "Garches", + "Gardanne", + "Garges-lès-Gonesse", + "Genas", + "Gennevilliers", + "Gentilly", + "Gerzat", + "Gex", + "Gien", + "Gif-sur-Yvette", + "Gisors", + "Givors", + "Gonesse", + "Goussainville", + "Gradignan", + "Grande-Synthe", + "Granville", + "Grasse", + "Graulhet", + "Gravelines", + "Grenoble", + "Grigny", + "Guebwiller", + "Guérande", + "Guéret", + "Guidel", + "Guilherand-Granges", + "Guipavas", + "Gujan-Mestras", + "Guyancourt", + "Haguenau", + "Halluin", + "Harnes", + "Haubourdin", + "Hautmont", + "Hayange", + "Hazebrouck", + "Hem", + "Hendaye", + "Hénin-Beaumont", + "Hennebont", + "Herblay-sur-Seine", + "Héricourt", + "Hérouville-Saint-Clair", + "Hœnheim", + "Houilles", + "Hyères", + "Ifs", + "Illkirch-Graffenstaden", + "Illzach", + "Issoire", + "Issoudun", + "Issy-les-Moulineaux", + "Istres", + "Ivry-sur-Seine", + "Jeumont", + "Joinville-le-Pont", + "Joué-lès-Tours", + "Jouy-le-Moutier", + "Juvignac", + "Juvisy-sur-Orge", + "Kingersheim", + "Koungou", + "Kourou", + "L'Étang-Salé", + "L'Haÿ-les-Roses", + "L'Isle-Adam", + "L'Isle-d'Abeau", + "L'Isle-sur-la-Sorgue", + "L'Union", + "La Baule-Escoublac", + "La Celle-Saint-Cloud", + "La Chapelle-Saint-Luc", + "La Chapelle-sur-Erdre", + "La Ciotat", + "La Courneuve", + "La Crau", + "La Flèche", + "La Garde", + "La Garenne-Colombes", + "La Hague", + "La Londe-les-Maures", + "La Madeleine", + "La Motte-Servolex", + "La Possession", + "La Queue-en-Brie", + "La Riche", + "La Roche-sur-Foron", + "La Roche-sur-Yon", + "La Rochelle", + "La Seyne-sur-Mer", + "La Teste-de-Buch", + "La Trinité", + "La Valette-du-Var", + "Lagny-sur-Marne", + "Lamballe-Armor", + "Lambersart", + "Lamentin", + "Landerneau", + "Lanester", + "Lannion", + "Laon", + "Lattes", + "Laval", + "Lavaur", + "Laxou", + "Le Blanc-Mesnil", + "Le Bourget", + "Le Bouscat", + "Le Cannet", + "Le Chambon-Feugerolles", + "Le Chesnay-Rocquencourt", + "Le Creusot", + "Le François", + "Le Gosier", + "Le Grand-Quevilly", + "Le Haillan", + "Le Havre", + "Le Kremlin-Bicêtre", + "Le Lamentin", + "Le Luc", + "Le Mans", + "Le Mée-sur-Seine", + "Le Mont-Dore", + "Le Moule", + "Le Pecq", + "Le Perreux-sur-Marne", + "Le Petit-Quevilly", + "Le Plessis-Robinson", + "Le Plessis-Trévise", + "Le Pont-de-Claix", + "Le Pontet", + "Le Port", + "Le Pradet", + "Le Pré-Saint-Gervais", + "Le Puy-en-Velay", + "Le Raincy", + "Le Relecq-Kerhuon", + "Le Robert", + "Le Taillan-Médoc", + "Le Tampon", + "Le Vésinet", + "Lens", + "Léognan", + "Les Abymes", + "Les Avirons", + "Les Clayes-sous-Bois", + "Les Herbiers", + "Les Lilas", + "Les Mureaux", + "Les Pavillons-sous-Bois", + "Les Pennes-Mirabeau", + "Les Ponts-de-Cé", + "Les Sables-d'Olonne", + "Les Ulis", + "Levallois-Perret", + "Lézignan-Corbières", + "Libourne", + "Lieusaint", + "Liévin", + "Lille", + "Limay", + "Limeil-Brévannes", + "Limoges", + "Lingolsheim", + "Lisieux", + "Livry-Gargan", + "Lognes", + "Loire-Authion", + "Longjumeau", + "Longuenesse", + "Longwy", + "Lons", + "Lons-le-Saunier", + "Loos", + "Lorient", + "Lormont", + "Lourdes", + "Louviers", + "Louvres", + "Lucé", + "Lunel", + "Lunéville", + "Lyon", + "Lys-lez-Lannoy", + "Mâcon", + "Macouria", + "Mahina", + "Mainvilliers", + "Maisons-Alfort", + "Maisons-Laffitte", + "Maizières-lès-Metz", + "Malakoff", + "Mamoudzou", + "Mana", + "Mandelieu-la-Napoule", + "Manosque", + "Mantes-la-Jolie", + "Mantes-la-Ville", + "Marck", + "Marcq-en-Barœul", + "Marignane", + "Marly", + "Marly-le-Roi", + "Marmande", + "Maromme", + "Marquette-lez-Lille", + "Marseille", + "Martigues", + "Massy", + "Matoury", + "Maubeuge", + "Mauges-sur-Loire", + "Mauguio", + "Maurepas", + "Mayenne", + "Meaux", + "Melun", + "Mende", + "Mennecy", + "Menton", + "Méricourt", + "Mérignac", + "Méru", + "Metz", + "Meudon", + "Meylan", + "Meyzieu", + "Mèze", + "Millau", + "Mions", + "Mios", + "Miramas", + "Mitry-Mory", + "Moissac", + "Moissy-Cramayel", + "Mons-en-Barœul", + "Mont-Saint-Aignan", + "Mont-de-Marsan", + "Montaigu-Vendée", + "Montargis", + "Montataire", + "Montauban", + "Montbéliard", + "Montbrison", + "Montceau-les-Mines", + "Montélimar", + "Montereau-Fault-Yonne", + "Montesson", + "Monteux", + "Montévrain", + "Montfermeil", + "Montgeron", + "Montigny-le-Bretonneux", + "Montigny-lès-Cormeilles", + "Montigny-lès-Metz", + "Montivilliers", + "Montlouis-sur-Loire", + "Montluçon", + "Montmagny", + "Montmorency", + "Montpellier", + "Montreuil", + "Montrevault-sur-Èvre", + "Montrouge", + "Moorea-Maiao", + "Morangis", + "Moret-Loing-et-Orvanne", + "Morlaix", + "Morne-à-l'Eau", + "Morsang-sur-Orge", + "Mougins", + "Moulins", + "Mouvaux", + "Mulhouse", + "Muret", + "Nancy", + "Nanterre", + "Nantes", + "Narbonne", + "Nemours", + "Neuilly-Plaisance", + "Neuilly-sur-Marne", + "Neuilly-sur-Seine", + "Nevers", + "Nice", + "Nîmes", + "Niort", + "Nœux-les-Mines", + "Nogent-sur-Marne", + "Nogent-sur-Oise", + "Noisiel", + "Noisy-le-Grand", + "Noisy-le-Sec", + "Nouméa", + "Noyon", + "Obernai", + "Oissel", + "Olivet", + "Ollioules", + "Oloron-Sainte-Marie", + "Onet-le-Château", + "Orange", + "Orée d'Anjou", + "Orléans", + "Orly", + "Ormesson-sur-Marne", + "Orsay", + "Orthez", + "Orvault", + "Osny", + "Ostwald", + "Oullins", + "Outreau", + "Oyonnax", + "Ozoir-la-Ferrière", + "Pacé", + "Paea", + "Païta", + "Palaiseau", + "Pamandzi", + "Pamiers", + "Panazol", + "Pantin", + "Papara", + "Papeete", + "Paris", + "Passy", + "Pau", + "Pélissanne", + "Périgueux", + "Pernes-les-Fontaines", + "Perpignan", + "Persan", + "Pertuis", + "Pessac", + "Petit-Bourg", + "Petite-Île", + "Pia", + "Pierre-Bénite", + "Pierrefitte-sur-Seine", + "Pierrelatte", + "Pirae", + "Plaisance-du-Touch", + "Plaisir", + "Plan-de-Cuques", + "Plérin", + "Ploemeur", + "Ploufragan", + "Plougastel-Daoulas", + "Plouzané", + "Pointe-à-Pitre", + "Poissy", + "Poitiers", + "Pont-Saint-Esprit", + "Pont-Sainte-Maxence", + "Pont-à-Mousson", + "Pont-du-Château", + "Pontarlier", + "Pontault-Combault", + "Pontchâteau", + "Pontivy", + "Pontoise", + "Pornic", + "Pornichet", + "Port-de-Bouc", + "Portes-lès-Valence", + "Porto-Vecchio", + "Provins", + "Punaauia", + "Puteaux", + "Quimper", + "Quimperlé", + "Raismes", + "Rambouillet", + "Ramonville-Saint-Agne", + "Reims", + "Remire-Montjoly", + "Rennes", + "Rezé", + "Riedisheim", + "Rillieux-la-Pape", + "Riom", + "Riorges", + "Ris-Orangis", + "Rive-de-Gier", + "Rivière-Pilote", + "Rivière-Salée", + "Rixheim", + "Roanne", + "Rochefort", + "Rodez", + "Rognac", + "Roissy-en-Brie", + "Romainville", + "Romans-sur-Isère", + "Romilly-sur-Seine", + "Romorantin-Lanthenay", + "Ronchin", + "Roncq", + "Roquebrune-Cap-Martin", + "Roquebrune-sur-Argens", + "Rosny-sous-Bois", + "Roubaix", + "Rouen", + "Royan", + "Rueil-Malmaison", + "Rumilly", + "Sablé-sur-Sarthe", + "Sada", + "Saint-Amand-les-Eaux", + "Saint-André", + "Saint-André-de-Cubzac", + "Saint-André-les-Vergers", + "Saint-André-lez-Lille", + "Saint-Avé", + "Saint-Avertin", + "Saint-Avold", + "Saint-Barthélemy", + "Saint-Benoît", + "Saint-Brevin-les-Pins", + "Saint-Brice-sous-Forêt", + "Saint-Brieuc", + "Saint-Chamond", + "Saint-Claude", + "Saint-Cloud", + "Saint-Cyprien", + "Saint-Cyr-l'École", + "Saint-Cyr-sur-Loire", + "Saint-Cyr-sur-Mer", + "Saint-Denis", + "Saint-Denis", + "Saint-Dié-des-Vosges", + "Saint-Dizier", + "Saint-Égrève", + "Saint-Estève", + "Saint-Étienne", + "Saint-Étienne-du-Rouvray", + "Saint-Fargeau-Ponthierry", + "Saint-Fons", + "Saint-François", + "Saint-Gaudens", + "Saint-Gély-du-Fesc", + "Saint-Genis-Laval", + "Saint-Genis-Pouilly", + "Saint-Germain-en-Laye", + "Saint-Germain-lès-Arpajon", + "Saint-Gilles", + "Saint-Gratien", + "Saint-Herblain", + "Saint-Hilaire-de-Riez", + "Saint-Jacques-de-la-Lande", + "Saint-Jean", + "Saint-Jean-de-Braye", + "Saint-Jean-de-Luz", + "Saint-Jean-de-Védas", + "Saint-Jean-de-la-Ruelle", + "Saint-Joseph", + "Saint-Joseph", + "Saint-Julien-en-Genevois", + "Saint-Junien", + "Saint-Just-Saint-Rambert", + "Saint-Laurent-du-Maroni", + "Saint-Laurent-du-Var", + "Saint-Leu", + "Saint-Leu-la-Forêt", + "Saint-Lô", + "Saint-Louis", + "Saint-Louis", + "Saint-Malo", + "Saint-Mandé", + "Saint-Martin", + "Saint-Martin-Boulogne", + "Saint-Martin-d'Hères", + "Saint-Martin-de-Crau", + "Saint-Maur-des-Fossés", + "Saint-Maurice", + "Saint-Maximin-la-Sainte-Baume", + "Saint-Médard-en-Jalles", + "Saint-Michel-sur-Orge", + "Saint-Nazaire", + "Saint-Omer", + "Saint-Orens-de-Gameville", + "Saint-Ouen-l'Aumône", + "Saint-Ouen-sur-Seine", + "Saint-Paul", + "Saint-Paul-lès-Dax", + "Saint-Pierre", + "Saint-Pierre-des-Corps", + "Saint-Pierre-du-Perray", + "Saint-Priest", + "Saint-Quentin", + "Saint-Raphaël", + "Saint-Saulve", + "Saint-Sébastien-sur-Loire", + "Sainte-Anne", + "Sainte-Foy-lès-Lyon", + "Sainte-Geneviève-des-Bois", + "Sainte-Luce-sur-Loire", + "Sainte-Marie", + "Sainte-Marie", + "Sainte-Maxime", + "Sainte-Rose", + "Sainte-Savine", + "Sainte-Suzanne", + "Saintes", + "Sallanches", + "Salon-de-Provence", + "Sanary-sur-Mer", + "Sannois", + "Saran", + "Sarcelles", + "Sarrebourg", + "Sarreguemines", + "Sartrouville", + "Sassenage", + "Saumur", + "Saverne", + "Savigny-le-Temple", + "Savigny-sur-Orge", + "Sceaux", + "Schiltigheim", + "Schœlcher", + "Seclin", + "Sedan", + "Segré-en-Anjou Bleu", + "Sélestat", + "Senlis", + "Sens", + "Septèmes-les-Vallons", + "Sète", + "Sevran", + "Sèvremoine", + "Sèvres", + "Seyssinet-Pariset", + "Sin-le-Noble", + "Six-Fours-les-Plages", + "Soissons", + "Soisy-sous-Montmorency", + "Solliès-Pont", + "Somain", + "Sorgues", + "Sotteville-lès-Rouen", + "Stains", + "Stiring-Wendel", + "Strasbourg", + "Sucy-en-Brie", + "Suresnes", + "Taiarapu-Est", + "Talant", + "Talence", + "Tarare", + "Tarascon", + "Tarbes", + "Tarnos", + "Tassin-la-Demi-Lune", + "Taverny", + "Tergnier", + "Thiais", + "Thiers", + "Thionville", + "Thonon-les-Bains", + "Thorigny-sur-Marne", + "Thouaré-sur-Loire", + "Thouars", + "Tinqueux", + "Torcy", + "Toul", + "Toulon", + "Toulouse", + "Tourcoing", + "Tournefeuille", + "Tournon-sur-Rhône", + "Tours", + "Trappes", + "Trélazé", + "Tremblay-en-France", + "Trets", + "Triel-sur-Seine", + "Troyes", + "Tsingoni", + "Tulle", + "Urrugne", + "Vaires-sur-Marne", + "Val-de-Reuil", + "Valbonne", + "Valence", + "Valenciennes", + "Valentigney", + "Valenton", + "Vallauris", + "Valserhône", + "Vandœuvre-lès-Nancy", + "Vannes", + "Vanves", + "Vaulx-en-Velin", + "Vauréal", + "Vauvert", + "Vaux-le-Pénil", + "Vedène", + "Vélizy-Villacoublay", + "Vence", + "Vendôme", + "Vénissieux", + "Verdun", + "Verneuil-sur-Seine", + "Vernon", + "Vernouillet", + "Verrières-le-Buisson", + "Versailles", + "Vertou", + "Vesoul", + "Vichy", + "Vidauban", + "Vienne", + "Vierzon", + "Vieux-Condé", + "Vigneux-sur-Seine", + "Ville-d'Avray", + "Villebon-sur-Yvette", + "Villecresnes", + "Villefontaine", + "Villefranche-de-Rouergue", + "Villefranche-sur-Saône", + "Villejuif", + "Villemomble", + "Villenave-d'Ornon", + "Villeneuve-Loubet", + "Villeneuve-Saint-Georges", + "Villeneuve-d'Ascq", + "Villeneuve-la-Garenne", + "Villeneuve-le-Roi", + "Villeneuve-lès-Avignon", + "Villeneuve-lès-Maguelone", + "Villeneuve-sur-Lot", + "Villeparisis", + "Villepinte", + "Villepreux", + "Villers-Cotterêts", + "Villers-lès-Nancy", + "Villetaneuse", + "Villeurbanne", + "Villiers-le-Bel", + "Villiers-sur-Marne", + "Vincennes", + "Vire Normandie", + "Viroflay", + "Viry-Châtillon", + "Vitré", + "Vitrolles", + "Vitry-le-François", + "Vitry-sur-Seine", + "Voiron", + "Voisins-le-Bretonneux", + "Wambrechies", + "Wasquehal", + "Wattignies", + "Wattrelos", + "Wittelsheim", + "Wittenheim", + "Woippy", + "Yerres", + "Yutz", + "Yvetot", + "Yzeure"}; +} \ No newline at end of file diff --git a/src/modules/location/data/france/FranceStreetPrefixes.h b/src/modules/location/data/france/FranceStreetPrefixes.h new file mode 100644 index 000000000..5a300a58f --- /dev/null +++ b/src/modules/location/data/france/FranceStreetPrefixes.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector franceStreetPrefixes = {"allée", "voie", "rue", "avenue", "boulevard", "quai", + "passage", "impasse", "place", "chemin", "lotissement"}; +} diff --git a/src/modules/location/data/france/FranceStreetSuffixes.h b/src/modules/location/data/france/FranceStreetSuffixes.h new file mode 100644 index 000000000..7f2404198 --- /dev/null +++ b/src/modules/location/data/france/FranceStreetSuffixes.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector franceStreetSuffixes = { + "du Faubourg Saint-Honoré", "de Montmorency", "de Solférino", "de la Pompe", "de Rivoli", "de Paris", + "du Faubourg-Saint-Denis", "de la Huchette", "Saint-Honoré", "Pastourelle", "Oberkampf", "d'Alésia", + "de la Chaussée-d'Antin", "de la Bûcherie", "de Richelieu", "Montorgueil", "Delesseux", "Zadkine", + "des Grands Augustins", "des Saussaies", "de Presbourg", "de la Harpe", "Bonaparte", "d'Orsel", + "des Francs-Bourgeois", "Saint-Séverin", "des Lombards", "Charlemagne", "La Boétie", "Molière", + "Monsieur-le-Prince", "Saint-Jacques", "de Caumartin", "de l'Abbaye", "de Seine", "Joubert", + "de la Ferronnerie", "Saint-Bernard", "d'Argenteuil", "de Tilsitt", "de Nesle", "d'Assas", + "du Chat-qui-Pêche", "des Panoramas", "Saint-Denis", "de la Paix", "Marcadet", "Vaneau", + "Saint-Dominique", "Adolphe Mille", "d'Abbeville", "de l'Odéon", "Laffitte", "Royale", + "de la Victoire", "de Vaugirard", "des Rosiers", "Mouffetard", "du Havre", "du Bac", + "Pierre Charron", "Du Sommerard", "de Provence", "du Dahomey", "Dauphine", "Lepic"}; +}